1

我正在尝试使用标准 Java (javax.naming.*) 库连接到 Active Directory。

这似乎与连接到任何其他 LDAP 完全一样,除了一个区别:SECURITY_PRINCIPAL需要以表格形式提供

sAMAccountName@domainComponent(s)

例如

env.put(Context.SECURITY_PRINCIPAL, "foo@bar.baz.org"

尝试使用指向完全相同的用户的有效 DN

env.put(Context.SECURITY_PRINCIPAL, "cn=foo,cn=Users,dc=bar,dc=baz,dc=org

导致一个AuthenticationException. 这是特定于 Active Directory 的东西吗?对于其他 LDAP DS,最后一种方法总是有效的。

4

1 回答 1

1

这不是您正在执行的 AD 身份验证。您正在执行一个简单的 LDAP 绑定。AD 身份验证是 Kerberos。

AD 的 LDAP 组件要求主体作为 UPN、samaccountname 或 NT4 样式登录。不接受任何 DN。

于 2012-11-14T13:00:05.777 回答