使用sAMAccountName和Password进行LDAP身份验证

时间:2016-07-05 12:05:33

标签: php active-directory ldap

我目前正在开发一个网络应用程序,用户可以使用他们的帐户名登录。 所有用户都是Microsoft域的一部分。

我的用户具有以下属性:

CN: "Test Account"
displayName: "Test Account"
distinguishedName: "CN=Test Account,OU=Users,OU=CompanyName,DC=company,DC=com"
sAMAccountName: "test.account"
userPrincipalName: "test.account@company.com"

目前,我尝试使用此代码绑定:

$link = @ldap_connect($server);
@ldap_bind($link, $username, $password);

问题是如果displayName不等于sAMAccountName,ldap_bind将失败。

那么如何在不知道displayName / cn的情况下使用密码和sAMAccountName进行绑定?

1 个答案:

答案 0 :(得分:0)

您可能需要查看this gist

它显示了如何使用LDAP条目中的任何唯一属性对用户进行身份验证,而不知道用户的DN。

请注意,您需要具有LDAP读取权限的用户,因为AD不允许匿名绑定。并且您将要使用ldaps连接,因此而不是ldap_connect($server, $port)使用ldap_connect('ldaps://ldap.server.tld:port')