2

简单认证:

使用 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 可以成功执行绑定?

4

2 回答 2

0

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

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

使用“比较模式”,您将能够做您想做的事情,但出于安全原因,不建议使用“比较模式”,如下所示:“比较模式有一些缺点。首先,连接名称和connectionPassword 属性必须配置为允许领域读取目录中的用户密码。出于安全原因,这通常是不可取的;实际上许多目录实现甚至不允许目录管理器读取这些密码。此外,领域必须处理密码摘要本身,包括使用的算法的变化以及在目录中表示密码哈希的方式。但是,领域有时可能需要访问存储的密码,例如支持 HTTP 摘要访问身份验证(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

于 2013-03-20T14:15:51.903 回答
0

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

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

于 2012-04-02T08:33:22.243 回答