我已经在 AWS 上设置了一个 Simple AD,我最终可以使用 LDAP 对其进行身份验证。我不明白为什么我无法使用dc=
到处广泛建议但能够使用@domain
的 .
ldap_bind($ldapconn, "cn=Administrator,dc=ldap,dc=patontheback,dc=org", "<password>");
ldap_bind($ldapconn, "[email protected]", "<password>");
这些不应该是等效的吗?@domain 将始终有效还是特定于 Simple AD?
OP 提供了有关管理员用户位置的附加信息,因此他必须使用
cn=Administrator,ou=Users,dc=ldap,dc=pathontheback,dc=org
编辑:打错了,它必须是:
cn=Administrator,cn=Users,dc=ldap,dc=pathontheback,dc=org
用户是一个容器,而不是 OU。
在这里可能需要阅读一些关于 LDAP 和 DN 的信息。
因此,如果您想指定域中管理员帐户的 DN,则需要指定它的完整(和正确)路径。正如您的屏幕截图所示(以及它在 AD 中的标准事实),管理员帐户位于用户容器中。
请注意,我使用了容器这个词而不是 OU。并非 AD 中的每个容器都是 OU,并且实际上存在的大多数默认容器都不是。
Users
通过比较 图标和 图标,您可以一目了然Domain Controllers
。如果这太微妙了,您还可以检查objectClass
每个属性的实际属性。OU 将包含organizationalUnit
,普通容器将包含container
. 在 DN 值中,OU 的 RDN 键为“OU=”,容器的 RDN 键为“CN=”。在任何情况下,当您每天都在寻找某个东西的 DN 时,您实际上不必手动解决所有这些问题。只需打开(或查询)您要查找的对象的属性并检查
distinguishedName
属性。这将为您提供完整且正确的路径,而无需尝试自己手动将一堆 RDN 和上下文串在一起。TL;DR 您的示例域中管理员帐户的 DN 是
CN=Administrator,CN=Users,DC=ldap,DC=patontheback,DC=org
也就是说,最好的做法是继续做你正在做的事情并使用 UPN ([email protected])来针对 AD 绑定帐户,因为它们比 DN 值更改的可能性更小。
@Ryan Bolger 的回答有一个很好的解释。我想为那些喜欢了解各种命令会发生什么的人提供一个更完整的示例。
例如,我将以下内容用于 binddn
distinguishedName: CN=auser,OU=IT Dev,OU=localdomain Users,DC=localdomain,DC=lan
或 UPN
userPrincipalName: [email protected]
以下行将在下面产生相同的输出
或者
将生成相同的输出