Каковы принятые форматы SECURITY_PRINCIPAL для аутентификации LDAP в Active Directory?
Я пытаюсь аутентифицировать пользователя через LDAP в Active Directory. Ниже приведен фрагмент кода, который я использую:
private DirContext bindAsUser(String bindPrincipal, String password) {
Hashtable<String,String> env = new Hashtable<String,String>();
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, bindPrincipal);
env.put(Context.PROVIDER_URL, bindUrl);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.REFERRAL, "follow");
try {
return new InitialLdapContext(env, null);
} catch (NamingException e) {
e.printStackTrace()
}
}
Код для привязки работает, если я предоставляю:
- Имя входа в верхнем уровне, т.е.
NetBIOSDomainName\sAMAccountName
(например, домен\имя пользователя) или
-
userPrincipalName
(например, [email protected]) или
-
distinguishedName
(например, CN = имя пользователя, OU = xxx, DC = abc, DC = com) или
-
objectSid
(например, S-1-5-21-3623811015-3361044348-30300820-1013)
как SECURITY_PRINCIPAL
, пока он не сработал, если был использован sAMAccountName
(например, имя пользователя) (я думаю, что только имена, которые являются уникальными в пределах леса, действительны).
Итак, каковы приемлемые шаблоны для SECURITY_PRINCIPAL
? Я просмотрел несколько похожих вопросов, но ни один из них не содержит ссылок на официальные документы AD/LDAP. Или это конфигурация, которую я мог бы найти где-нибудь? Спасибо!
Ответы
Ответ 1
Из [MS-ADTS: Техническая спецификация Active Directory], я думаю, официальный документ для AD.
http://msdn.microsoft.com/en-us/library/cc223499.aspx
В разделе "5.1.1.1.1 Simple Authentication" перечислены все формы имен, поддерживаемые простой аутентификацией.
Ответ 2
Я думаю, вам нужно проверить основной шаблон LDAP. Он определяет основной шаблон аутентификации, необходимый вашему серверу LDAP. Основной шаблон аутентификации - это формат, в котором должна быть передана информация аутентификации для принципала безопасности (человека, который входит в систему) на сервер LDAP. Значение по умолчанию - ${email}, которое является форматом, необходимым для Microsoft Active Directory. Для других серверов LDAP требуются разные шаблоны аутентификации. Обратитесь к сетевому администратору, чтобы узнать больше о вашем сервере LDAP.