如何指定用于连接到 Active Directory 的 LDAP 用户名?

如何指定用于连接到 Active Directory 的 LDAP 用户名?

我正在尝试将我的程序与 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

相关内容