配置Tomcat 6.0,使用身份验证LDAP身份验证=“DIGEST-MD5”

问题描述:

简单验证配置Tomcat 6.0,使用身份验证LDAP身份验证=“DIGEST-MD5”

当使用LDAP浏览器,我可以通过提供登录到使用明文密码,公司的LDAP服务器:CN =用户名,OU =用户,DC =我,DC =公司,DC = COM。如果我将此字符串复制粘贴到Tomcat的server.xml connectionName标记,并使用简单身份验证(使用wireshark显示纯文本密码),则一切正常。

加密的口令:

进server.xml JNDI境界添加以下

authentication="DIGEST-MD5" 
digest='MD5' 

现在,Tomcat的不能绑定到LDAP。

对于LDAP浏览器,我必须在form/domain中提供凭证,然后我可以使用DIGEST-MD5绑定到LDAP。

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

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

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

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

您正在使用“绑定模式”,并且文档中提到:“出于安全原因,目录可能会存储用户密码的摘要而不是明文版本(有关详细信息,请参阅消化密码)在这种情况下,作为简单绑定操作的一部分,目录会自动计算用户提交的明文密码的正确摘要,然后根据存储的值对其进行验证因此,在绑定模式下,领域不涉及摘要处理。没有使用,并且如果设置将被忽略。“。所以你不能在“绑定模式”下使用散列值。使用“比较模式”你可以做你正在做的事情,但是不建议使用“比较模式”,因为安全的原因,你可以在这里看到:“比较模式有一些缺点。 ,必须配置connectionName和connectionPassword属性,以允许领域读取目录中的用户密码。出于安全原因,这通常是不受欢迎的;实际上许多目录实现甚至不允许目录管理器读取这些密码。 realm必须自己处理密码摘要,包括所使用算法的变化以及在目录中表示密码哈希的方式,但是有时需要访问存储的密码,例如为了支持HTTP Digest Access Authentication(RFC 2069)。请注意,HTTP摘要认证与存储不同如上面所讨论的,用于用户信息的存储库中的密码摘要)。“

tomcat文档的链接:http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#JNDIRealmhttp://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JNDIRealm