Мы используем Apache 2.2 для аутентификации в Active Directory. Конфигурация следующая:
AuthFormLDAPURL "ldap://*.*.*.*:389/DC=domain,DC=com?userPrincipalName,sAMAccountName?sub?(objectClass=*)"
Примечание. Все трассировки ниже с использованием WireShark.
Я определил пользователя john, когда CN совпадает с именем sAMAcountMame:
Я могу пройти аутентификацию, используя только john (sAMAcountMame). Пожалуйста, найдите ниже запрос привязки LDAP:
Ответ привязки LDAP:
Затем я определил пользователя johnd, когда CN НЕ равно имени sAMAcountMame:
К сожалению, я не могу пройти аутентификацию с помощью johnd (sAMAcountMame). Пожалуйста, найдите ниже запрос привязки LDAP:
Ответ привязки LDAP:
Я могу пройти аутентификацию, используя полное имя jonhd@domain.com. Пожалуйста, найдите ниже запрос привязки LDAP:
Ответ привязки LDAP:
Вопросы:
Спасибо за вашу помощь!
При выполнении простого связывания LDAP AD не пытается сопоставить переданное имя с sAMAccountName
атрибут без суффиксов. Однако он может попытаться найти матч против displayName
, который сработал для вас в первом тесте (где он выглядел как матч против sAMAccountName
, потому что значения этих атрибутов были одинаковыми).
Точное описание правил сопоставления имен, используемых при обработке простых привязок LDAP, можно найти в документации Microsoft: http://msdn.microsoft.com/en-us/library/cc223499.aspx
Использование UPN, вероятно, более надежно, потому что displayName
может содержать некоторую удобочитаемую строку (например, полное имя человека), и его уникальность не гарантируется. Форма DOMAIN \ USERNAME также должна быть уникальной, но зависеть от доменных имен NetBIOS, которые сейчас считаются устаревшими.