В нашей компании существует лесной суффикс UPN company.com
и почти все учетные записи пользователей имеют явное UPN, установленное на fistname.lastname@company.com
. Это значение также устанавливается в Active Directory. userPrincipalName
атрибут.
Теперь у нас есть приложение, в котором пользователи выполняют аутентификацию через Kerberos. Итак, нам дается принципал Kerberos, то есть неявный UPN. Мы хотели бы найти этого пользователя и получить несколько атрибутов LDAP. Поскольку iUPN и userPrincipalName
больше не совпадают, поиск невозможен.
Есть ли какой-нибудь «официальный» способ получить отображение из активной директории? Мой обходной путь - выполнить привязку LDAP к компоненту области и выполнить поиск sAMAccountName
атрибут, который соответствует компоненту идентификатора пользователя iUPN. В поисках простого sAMAccountName
в лесу невозможно, потому что значение уникально только в домене.
Для этого нужно выполнить запрос LDAP как для sAMAccountName, так и для userPrincipalName. Например: (& (sAMAccountName = uname) (userPrincipalName = * @ example.com)) будет запрашивать пользователя user.name@example.com, если его sAMAccountName ("подразумеваемый префикс UPN", я полагаю) был uname.
Такие программы, как adfind позволит вам выполнять произвольные запросы LDAP, такие как этот, к AD.
В случае, если вы не можете полагаться на суффикс UPN для соответствия домену, потому что он также был переопределен, вы можете создать список частей SID для каждого домена (каждая часть SID пользователя, кроме последней части) и выполнить поиск по который. Если бы домен example.net имел часть SID 1234-5678-9012, все пользователи в домене имели бы SID, начинающийся с S-1-5-21-1234-5678-9012-. Если у вас есть это сопоставление, вы можете написать поиск LDAP
( &(sAMAccountName=uname)(objectSID=S-1-5-21-1234-5678-9012-*) )