我正在寻找一种方法来验证用户通过LDAP与PHP (与Active Directory提供程序)。理想情况下,它应该能够在IIS7上运行(adLDAP可以在Apache上运行)。有没有人成功地做过类似的事情?
发布于 2008-10-05 14:10:07
当你只需要两行代码时,导入整个库似乎效率很低……
$ldap = ldap_connect("ldap.example.com");
if ($bind = ldap_bind($ldap, $_POST['username'], $_POST['password'])) {
// log them in!
} else {
// error message
}
发布于 2016-04-10 04:55:59
您可能认为,在Active Directory中使用LDAP对用户进行身份验证将是一个非常简单的过程,而不需要库。但是有很多事情会让事情变得非常复杂:
实际上,在大多数情况下,使用支持上述功能的LDAP库会更容易。最终,我使用了自己的库来处理上述所有问题:LdapTools (好吧,不仅仅是用于身份验证,它还可以做更多的事情)。它的使用方法如下:
use LdapTools\Configuration;
use LdapTools\DomainConfiguration;
use LdapTools\LdapManager;
$domain = (new DomainConfiguration('example.com'))
->setUsername('username') # A separate AD service account used by your app
->setPassword('password')
->setServers(['dc1', 'dc2', 'dc3'])
->setUseTls(true);
$config = new Configuration($domain);
$ldap = new LdapManager($config);
if (!$ldap->authenticate($username, $password, $message)) {
echo "Error: $message";
} else {
// Do something...
}
上面的身份验证调用将:
还有其他库也可以做到这一点(比如Adldap2)。然而,我觉得有必要提供一些额外的信息,因为投票最多的答案实际上是一个安全风险,没有进行输入验证,也没有使用TLS。
发布于 2008-10-05 13:38:49
我只需将用户凭据传递给ldap_bind()即可。
http://php.net/manual/en/function.ldap-bind.php
如果该帐户可以绑定到LDAP,则它是有效的;如果它不能绑定,则它不是有效的。如果您所做的只是身份验证(而不是帐户管理),那么我看不出有必要使用库。
https://stackoverflow.com/questions/171519
复制相似问题