我目前正在开发一个网络应用程序,用户可以使用他们的帐户名登录。 所有用户都是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进行绑定?
答案 0 :(得分:0)
您可能需要查看this gist。
它显示了如何使用LDAP条目中的任何唯一属性对用户进行身份验证,而不知道用户的DN。
请注意,您需要具有LDAP读取权限的用户,因为AD不允许匿名绑定。并且您将要使用ldaps连接,因此而不是ldap_connect($server, $port)
使用ldap_connect('ldaps://ldap.server.tld:port')
。