我有一个 IP、用户名和密码,用于通过 Active Directory Explorer 连接到 Active Directory。我正在尝试使用这些凭据通过 Java 建立连接。但是,我登录服务器的帐户并没有在 AD 中列出。
IP="1.1.1.20"
Username="Bob"
Password="password123"
更复杂的是,在 1.1.1.20 上连接的活动目录的基本 dn 与用户的完整 dn 中包含的基本 dn 不同。
1.1.1.20 的基本 DN 是 dc=test,dc=this,dc=com,而我用来登录的帐户的 DN 是
CN=Bob,OU=People,OU=Something,OU=Blah,DC=Fake,DC=Data,DC=local,DC=com
我已经尝试了所有我能想到的用户名和 DN 组合,使用下面的代码片段来建立连接。
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://1.1.1.20:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=Bob,OU=People,OU=Something,OU=Blah,DC=Fake,DC=Data,DC=local,DC=com");
env.put(Context.SECURITY_CREDENTIALS, "password123");
DirContext ctx = null;
try{
ctx = new InitialDirContext(env);
当我注释掉 SECURITY_PRINCIPAL 和 SECURITY_CREDENTIALS 的行时,我能够建立匿名连接,但是在使用为我提供的用于 Active Directory Explorer 的用户名和密码时,我无法创建连接。
我知道用户名和密码是正确的,因为我可以使用 Active Directory 资源管理器登录,所以我假设当我将用户名和 baseDN 组合起来创建主体时会出现问题。
是否有可能,或者我用来登录的帐户是否需要在我正在查看的同一台服务器上找到?