使用authentication=“DIGEST-MD5”配置Tomcat 6.0以进行LDAP身份验证

发布于 2024-12-17 17:00:52 字数 484 浏览 1 评论 0原文

简单身份验证:

使用 LDAP 浏览器时,我可以通过提供以下内容使用纯文本密码登录公司的 LDAP 服务器:CN=用户名,OU=用户,DC=我,DC=公司,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 可以成功执行绑定?

Simple authentication:

When using LDAP browser, I can log into company's LDAP server using plain text password by providing: CN=username,OU=users,DC=my,DC=company,DC=com. If I copy-paste this string to Tomcat's server.xml connectionName tag, and use simple authentication (plain text password is visible by using wireshark), everything works.

Encrypted password:

To server.xml JNDI realm I added the following

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

Now, Tomcat can't bind to the LDAP.

With LDAP browser I have to provide credentials in form: domain/user, and then I can bind to LDAP using DIGEST-MD5.

Is there a special way that connectionName is specified in server.xml file so Tomcat can successfully perform binding?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心如狂蝶 2024-12-24 17:00:52

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

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

You didn't mention what directory server you use. It could be that your server simply does not support DIGEST-MD5. You can check that by inspecting supportedSASLMechanisms RootDSE values.

If you use Active Directory make sure that 1) you have created an SPN (see setspn.exe for details) 2) the user account that you use to connect to AD is set "use reversible encryption" user account flag. Without this option it will never work, because DIGEST-MD5 algorithm requires access to the clear text passwords at both ends.

怪异←思 2024-12-24 17:00:52

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

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

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

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

According to tomcat documentation JNDIRealm supports two different authentication methods: Bind mode and Comparison mode.

You are using "Bind mode" and the documentation says: "For security reasons a directory may store a digest of the user's password rather than the clear text version (see Digested Passwords for more information). In that case, as part of the simple bind operation the directory automatically computes the correct digest of the plaintext password presented by the user before validating it against the stored value. In bind mode, therefore, the realm is not involved in digest processing. The digest attribute is not used, and will be ignored if set." . So you can not use the hash value with "Bind mode".

With "Comparison mode" you would be able to do what you are trying to do, but it is not recommended use "Comparison mode" because of security reasons as one can see here: "Comparison mode has some disadvantages. First, the connectionName and connectionPassword attributes must be configured to allow the realm to read users' passwords in the directory. For security reasons this is generally undesirable; indeed many directory implementations will not allow even the directory manager to read these passwords. In addition, the realm must handle password digests itself, including variations in the algorithms used and ways of representing password hashes in the directory. However, the realm may sometimes need access to the stored password, for example to support HTTP Digest Access Authentication (RFC 2069). (Note that HTTP digest authentication is different from the storage of password digests in the repository for user information as discussed above)."

links for tomcat documentations: http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#JNDIRealm and http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JNDIRealm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文