Ладно, это сводит меня с ума. Я пытаюсь создать аутентификацию LDAP с помощью Java, и все в порядке, если я использую свое имя и фамилию в SECURITY_PRINCIPAL. Это мой код:
try {
Hashtable<String, String> ldapEnv = new Hashtable<String, String>();
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ldapEnv.put(Context.PROVIDER_URL, "LDAP://myldap.mydomain.com:389");
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
ldapEnv.put(Context.SECURITY_PRINCIPAL, "CN=FirstName LastName" + ",ou=Users");
ldapEnv.put(Context.SECURITY_CREDENTIALS, "password");
DirContext ldapContext = new InitialLdapContext(ldapEnv, null);
}
catch (Exception e) {
System.out.println(" bind error: " + e);
e.printStackTrace();
}
Проблема в том, что он не работает с моим именем пользователя. Если я попытаюсь:
ldapEnv.put(Context.SECURITY_PRINCIPAL, "CN=myusername" + ",ou=Users");
Or
ldapEnv.put(Context.SECURITY_PRINCIPAL, "uid=myusername" + ",ou=Users");
Я всегда получаю [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
]
По какой-то причине это работает только с моим именем и фамилией. Я проверил AD, и мое sAMAccountName — это правильное имя пользователя. Не уверен, почему это происходит. У кого-нибудь еще были такие проблемы? Могу ли я передать что-то еще в Context.SECURITY_PRINCIPAL? Я пробовал ldapEnv.put(Context.
SECURITY_PRINCIPAL, "sAMAccountName=myusername" + ",ou=Users");
, но тоже не получается... Кто-нибудь может помочь?