使用authentication=";为LDAP身份验证配置Tomcat 6.0;摘要-MD5“;

使用authentication=";为LDAP身份验证配置Tomcat 6.0;摘要-MD5“;,tomcat,ldap,jndi,digest-authentication,Tomcat,Ldap,Jndi,Digest Authentication,简单身份验证: 使用LDAP浏览器时,我可以使用纯文本密码登录公司的LDAP服务器,方法是:CN=username,OU=users,DC=my,DC=company,DC=com。如果我将这个字符串复制粘贴到Tomcat的server.xml connectionName标记上,并使用简单身份验证(使用wireshark可以看到纯文本密码),那么一切都可以正常工作 加密密码: 在server.xml JNDI领域中,我添加了以下内容 authentication="DIGEST-MD5" di

简单身份验证:

使用LDAP浏览器时,我可以使用纯文本密码登录公司的LDAP服务器,方法是:CN=username,OU=users,DC=my,DC=company,DC=com。如果我将这个字符串复制粘贴到Tomcat的server.xml connectionName标记上,并使用简单身份验证(使用wireshark可以看到纯文本密码),那么一切都可以正常工作

加密密码:

在server.xml JNDI领域中,我添加了以下内容

authentication="DIGEST-MD5"
digest='MD5' 
现在,Tomcat无法绑定到LDAP

使用LDAP浏览器,我必须以以下形式提供凭据:域/用户,然后我可以使用DIGEST-MD5绑定到LDAP


在server.xml文件中指定connectionName是否有一种特殊的方式,以便Tomcat能够成功地执行绑定?

您没有提到您使用的目录服务器。可能是您的服务器根本不支持DIGEST-MD5。您可以通过检查supportedSASLMechanisms RootDSE值来检查这一点


如果使用Active Directory,请确保1)您已创建SPN(有关详细信息,请参阅setspn.exe)2)用于连接AD的用户帐户设置为“使用可逆加密”用户帐户标志。如果没有此选项,它将永远无法工作,因为DIGEST-MD5算法需要访问两端的明文密码。

您没有提到您使用的目录服务器。可能是您的服务器根本不支持DIGEST-MD5。您可以通过检查supportedSASLMechanisms RootDSE值来检查这一点


如果使用Active Directory,请确保1)您已创建SPN(有关详细信息,请参阅setspn.exe)2)用于连接AD的用户帐户设置为“使用可逆加密”用户帐户标志。如果没有此选项,它将永远无法工作,因为DIGEST-MD5算法需要访问两端的明文密码。

根据tomcat文档,JNDIRealm支持两种不同的身份验证方法:绑定模式和比较模式

您使用的是“绑定模式”,文档中说:“出于安全原因,目录可能存储用户密码摘要,而不是明文版本(有关更多信息,请参阅摘要密码).在这种情况下,作为简单绑定操作的一部分,目录会自动计算用户提供的明文密码的正确摘要,然后再根据存储值对其进行验证。在绑定模式下,域不参与摘要处理。摘要属性不被使用,将被删除如果设置,则忽略。”。因此,不能将哈希值与“绑定模式”一起使用

使用“比较模式”,您可以执行您试图执行的操作,但由于安全原因,不建议使用“比较模式”,如图所示:“比较模式有一些缺点。首先,必须将connectionName和connectionPassword属性配置为允许域读取目录中用户的密码。出于安全原因,这通常是不可取的;实际上,许多目录实现甚至不允许目录管理器读取这些密码。此外,领域本身必须处理密码摘要,包括所用算法的变化以及在目录中表示密码哈希的方式。然而,领域有时可能需要访问存储的密码,例如,为了支持HTTP摘要访问身份验证(RFC 2069)。(请注意,HTTP摘要身份验证不同于将密码摘要存储在存储库中以获取上述用户信息)。”


tomcat文档的链接:根据tomcat文档,JNDIRealm支持两种不同的身份验证方法:绑定模式和比较模式

您使用的是“绑定模式”,文档中说:“出于安全原因,目录可能存储用户密码摘要,而不是明文版本(有关更多信息,请参阅摘要密码)在这种情况下,作为简单绑定操作的一部分,目录会自动计算用户提供的明文密码的正确摘要,然后根据存储的值进行验证<因此,在绑定模式下,域不参与摘要处理。摘要属性不被使用,如果设置了,它将被忽略。。因此,您不能将哈希值与“绑定模式”一起使用

有了“比较模式”,你就可以做你想做的事情,但由于安全原因,不建议使用“比较模式”,正如你在这里看到的:“比较模式有一些缺点。首先,必须将connectionName和connectionPassword属性配置为允许域读取目录中用户的密码。出于安全原因,这通常是不可取的;实际上,许多目录实现甚至不允许目录管理器读取这些密码。此外,领域本身必须处理密码摘要,包括所用算法的变化以及在目录中表示密码哈希的方式。然而,领域有时可能需要访问存储的密码,例如,为了支持HTTP摘要访问身份验证(RFC 2069)。(请注意,HTTP摘要身份验证不同于将密码摘要存储在存储库中以获取上述用户信息)。”

tomcat文档的链接:和