Назад | Перейти на главную страницу

Почему user @ domain и cn = user, dc = domain не эквивалентны?

Я установил Simple AD на AWS, и наконец смог пройти аутентификацию с помощью LDAP. Я не понимаю, почему я не смог использовать dc= который широко предлагается везде, но я могу использовать @domain.

ldap_bind($ldapconn, "cn=Administrator,dc=ldap,dc=patontheback,dc=org", "<password>");
ldap_bind($ldapconn, "Administrator@ldap.patontheback.org", "<password>");

Разве они не должны быть эквивалентными? Будет ли @domain работать всегда или он специфичен для Simple AD?

А бит чтения на LDAP и DN здесь может быть в порядке.

Отличительное имя (обычно просто сокращенное до DN) как однозначно идентифицирует запись, так и описывает ее позицию в DIT. DN очень похож на абсолютный путь в файловой системе, за исключением того, что пути файловой системы обычно начинаются с корня файловой системы и спускаются по дереву слева направо, а DN LDAP восходят по дереву слева направо.

Поэтому, если вы хотите указать DN учетной записи администратора в своем домене, вам необходимо указать полный (и правильный) путь к нему. Как показывает ваш снимок экрана (и тот факт, что он стандартен в AD), учетная запись администратора находится в контейнере Users.

Обратите внимание, что я использовал слово контейнер а не OU. Не каждый контейнер в AD является OU, а большинство существующих по умолчанию - нет. Вы можете сразу сказать, сравнив значок для Users со значком для Domain Controllers. Если это слишком сложно, вы также можете проверить фактическое objectClass атрибут для каждого. OU будет содержать organizationalUnit и нормальные контейнеры будут иметь container. В значении DN OU имеют «OU =» в качестве ключа RDN, а контейнеры имеют «CN =» в качестве ключа RDN.

В любом случае вам действительно не нужно разбираться во всем этом вручную, когда вы ежедневно ищете что-то DN. Просто откройте (или запросите) свойства объекта, который вы ищете, и проверьте distinguishedName атрибут. Это даст вам полный и правильный путь, не пытаясь вручную связать кучу RDN и контекстов самостоятельно.

TL; DR DN учетной записи администратора в вашем примере домена: CN=Administrator,CN=Users,DC=ldap,DC=patontheback,DC=org

Тем не менее, лучше продолжать делать то, что вы делаете, и использовать UPN. (user@domain.example.com) для привязки учетных записей к AD, потому что они менее вероятно изменятся, чем значение DN.

OP предоставил дополнительную информацию о местонахождении пользователя-администратора, поэтому он должен использовать cn=Administrator,ou=Users,dc=ldap,dc=pathontheback,dc=org

РЕДАКТИРОВАТЬ: Сделана опечатка, это должно быть: cn=Administrator,cn=Users,dc=ldap,dc=pathontheback,dc=org

Пользователи - это контейнер, а не OU.

@ Райан Болджер ответ есть очень хорошее объяснение. Я хотел бы включить более полный пример для тех, кто любит видеть, что происходит с различными командами.

Например, я использую для binddn следующее distinguishedName: CN=auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan

-D 'CN=auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan'

или UPN userPrincipalName: gitlab@nmm.lan

-D 'auser@localdomain.lan'

Следующие строки приведут к тому же результату, что и ниже

ldapsearch -x -h '192.168.0.10' -D 'CN=Auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan' -w password -b"cn=auser,OU=IT Dev,OU=localdomain Users,dc=localdomain,dc=lan" -s sub "objectclass=*"   

или

ldapsearch -x -h '192.168.0.10' -D 'auser@localdomain.lan' -w password -b"cn=auser,OU=IT Dev,OU=localdomain Users,dc=localdomain,dc=lan" -s sub "objectclass=*"

Будет создан тот же результат

# extended LDIF
#
# LDAPv3
# base <cn=auser,OU=IT Dev,OU=localdomain Users,dc=localdomain,dc=lan> with scope subtree
# filter: objectclass=*
# requesting: ALL
#

# auser, IT Dev, localdomain Users, localdomain.lan
dn: CN=GitLab,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: auser
givenName: auser
distinguishedName: CN=auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan
instanceType: 4
whenCreated: 20190221073536.0Z
whenChanged: 20190221080923.0Z
displayName: auser
uSNCreated: 108114404
memberOf: CN=groupofusers,OU=localdomain Groups,DC=localdomain,DC=lan
uSNChanged: 108116177
name: auser
userAccountControl: 66048
codePage: 0
countryCode: 0
primaryGroupID: 513
accountExpires: 9223372036854775807
sAMAccountName: auser
sAMAccountType: 805306368
userPrincipalName: auser@localdomain.lan
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=localdomain,DC=lan
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 131952101637691018

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1