PHP 中的 ldap 身份验证品种
ldap authentication varieties in PHP
在 PHP(带有 ldap_bind 的任何版本)中,我想知道为什么有些活动目录服务器使用方法 1 绑定,有些使用方法 2,如下所示,有人愿意向我解释为什么吗?是微软服务器版本的问题还是一些特殊的配置?
请注意,唯一的区别是作为参数传递给函数的 $username 值,在一个中它与 $server 连接在一起,而另一个则不连接。
方法一
ldap_bind($ldap_connection, $username . '@' . $server, $password)
方法二
ldap_bind($ldap_connection, $username, $password)
为了便于参考以备不时之需,official doc 在 ldap_bind
两者都有效,而且在大多数情况下都可以。 here.
列出了 LDAP 与 AD 绑定所允许的完整格式列表
如果您使用与要连接的服务器位于同一域的帐户进行身份验证,则无需提供带有用户名的域名(sAMAccountName
属性)。
如果您使用与服务器位于不同域的帐户进行身份验证,那么您需要以您可以这样做的任何格式提供域名和用户名。例如(如果域是 example.com):
- EXAMPLE\username
- 用户名@example.com
- CN=theuser,OU=users,DC=example,DC=com
- 示例。com/Users/theuser
在 PHP(带有 ldap_bind 的任何版本)中,我想知道为什么有些活动目录服务器使用方法 1 绑定,有些使用方法 2,如下所示,有人愿意向我解释为什么吗?是微软服务器版本的问题还是一些特殊的配置?
请注意,唯一的区别是作为参数传递给函数的 $username 值,在一个中它与 $server 连接在一起,而另一个则不连接。
方法一
ldap_bind($ldap_connection, $username . '@' . $server, $password)
方法二
ldap_bind($ldap_connection, $username, $password)
为了便于参考以备不时之需,official doc 在 ldap_bind
两者都有效,而且在大多数情况下都可以。 here.
列出了 LDAP 与 AD 绑定所允许的完整格式列表如果您使用与要连接的服务器位于同一域的帐户进行身份验证,则无需提供带有用户名的域名(sAMAccountName
属性)。
如果您使用与服务器位于不同域的帐户进行身份验证,那么您需要以您可以这样做的任何格式提供域名和用户名。例如(如果域是 example.com):
- EXAMPLE\username
- 用户名@example.com
- CN=theuser,OU=users,DC=example,DC=com
- 示例。com/Users/theuser