使用 Apache LDAP AIP 连接到 MS LDAP 时出错

问题描述 投票:0回答:2

我正在使用 Apache LDAP API 连接到 MS Active Directory,但收到以下错误:

DEBUG#c.s.m.c.r.c.ApacheLdapClient##anonymous#http-bio-8080-exec-6###连接到 LDAP org.apache.directory.api.ldap.model.exception.LdapAuthenticationExcepti 时出现意外错误 上:80090308:LdapErr:DSID-0C0903D9,评论:AcceptSecurityContext错误,数据52e,v2580^@

在本例中,我只是在 LdapConnectionConfig.Name 和 LdapConnect 类的绑定方法中提供了 LDAP 用户名和密码。

根据一些研究和测试,我可以看到,当我提供用户的完整 DN(专有名称)时,连接和绑定工作正常。

所以我的问题是:有没有办法使用 Apache LDAP API 只提供用户名和密码(而不是完整的 DN)来连接并绑定到 MS AD?

以下是失败的源代码摘录:

LdapConnection conn = new LdapNetworkConnection();
connParams.setLdapHost(LDAP_HOST);
connParams.setLdapPort(389);
connParams.setName(test_user);
connParams.setCredentials(TEST_USER_PASSWORD);

LdapConnection connection = new LdapConnection(connParams);

connection.bind(test_user, TEST_USER_PASSWORD);

这个效果很好:

LdapConnection conn = new LdapNetworkConnection();
connParams.setLdapHost(LDAP_HOST);
connParams.setLdapPort(389);
connParams.setName(CN=test_user,DC=Example,DC=com);
connParams.setCredentials(TEST_USER_PASSWORD);

LdapConnection connection = new LdapConnection(connParams);

connection.bind(CN=test_user,DC=Example,DC=com, TEST_USER_PASSWORD);

apache active-directory ldap
2个回答
0
投票

您必须使用可分辨名称进行绑定 - 毕竟 LDAP 不了解 Active Directory。当然,您可以首先使用服务帐户来检索 sAMAccountName 的 dn。


0
投票

这应该与 [电子邮件受保护]配合使用,这是 MS AD 接受的用于绑定的最短格式。

© www.soinside.com 2019 - 2024. All rights reserved.