我正在尝试将我的程序与 LDAP 集成。我这里有一个 Active Directory 服务器,它显然可以使用 LDAP。我想在尝试调试自己的代码之前先看看服务器上有什么。我找到了一个名为探索者据称它可以与 LDAP 服务器对话。
但是,我似乎无法让它工作。我使用的设置是:
- 主机:(我的 AD 服务器的 IP 地址)
- 端口:389
- 协议:LDAPv3
- 基本 DN:OU=MyCompany,DC=domaincontroller,DC=local(我从公司其他人那里得到的一个字符串,他之前在这里写过一些 LDAP 代码)
- 级别:用户+密码
- 用户 DN、密码:(我在此 Exchange 服务器上的用户名和密码)
我收到的错误是:
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID=0C090334, comment: AcceptSecurityContext error, data 525, vece ]
这里的另一位 LDAP 专家说 525 是“未找到用户”,并推测也许需要在“LDAP 命名法”中指定用户名。
有人知道如何使用 jxplorer 连接到 AD 吗?
答案1
找到了方法:它不是你的用户登录名。它是一个 LDAP DN,例如:
CN=My Name,OU=My Company,DC=server,DC=local
答案2
直接以硬编码形式传递 LDAP 用户 ID 和密码。
例子:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.REFERRAL, "follow");
env.put(Context.SECURITY_PRINCIPAL,"adminuserid");
env.put(Context.SECURITY_CREDENTIALS,"adminPassword");
env.put(Context.PROVIDER_URL,"ldapUrllink");
DirContext ctx = new InitialDirContext(env);
这应该可行。
谢谢 Sajith