首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中通过Active Directory使用LDAP进行身份验证

在PHP中通过Active Directory使用LDAP进行身份验证
EN

Stack Overflow用户
提问于 2008-10-05 04:59:12
回答 6查看 188.2K关注 0票数 111

我正在寻找一种方法来验证用户通过LDAP与PHP (与Active Directory提供程序)。理想情况下,它应该能够在IIS7上运行(adLDAP可以在Apache上运行)。有没有人成功地做过类似的事情?

  • 编辑:我更喜欢有现成代码的库/类……在别人已经发明轮子的时候发明轮子是愚蠢的。--
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-05 14:10:07

当你只需要两行代码时,导入整个库似乎效率很低……

代码语言:javascript
复制
$ldap = ldap_connect("ldap.example.com");
if ($bind = ldap_bind($ldap, $_POST['username'], $_POST['password'])) {
  // log them in!
} else {
  // error message
}
票数 175
EN

Stack Overflow用户

发布于 2016-04-10 04:55:59

您可能认为,在Active Directory中使用LDAP对用户进行身份验证将是一个非常简单的过程,而不需要库。但是有很多事情会让事情变得非常复杂:

  • 您必须验证输入。否则将传递空的用户名/密码。
  • 您应该确保在绑定时对用户名/密码进行了正确编码。
  • 您应该使用TLS对连接进行加密。
  • 使用单独的LDAP服务器提供冗余,以防其中一个服务器关闭。如果身份验证失败,
  • 会收到一条信息性错误消息。

实际上,在大多数情况下,使用支持上述功能的LDAP库会更容易。最终,我使用了自己的库来处理上述所有问题:LdapTools (好吧,不仅仅是用于身份验证,它还可以做更多的事情)。它的使用方法如下:

代码语言:javascript
复制
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...
}

上面的身份验证调用将:

  • 验证用户名或密码是否正确编码(默认情况下为UTF-8)。
  • 尝试备用empty.
  • Ensure服务器,以防其中一台服务器使用TLS down.
  • Encrypt身份验证请求。
  • 在失败时提供其他信息(即,锁定/禁用帐户等)

还有其他库也可以做到这一点(比如Adldap2)。然而,我觉得有必要提供一些额外的信息,因为投票最多的答案实际上是一个安全风险,没有进行输入验证,也没有使用TLS。

票数 18
EN

Stack Overflow用户

发布于 2008-10-05 13:38:49

我只需将用户凭据传递给ldap_bind()即可。

http://php.net/manual/en/function.ldap-bind.php

如果该帐户可以绑定到LDAP,则它是有效的;如果它不能绑定,则它不是有效的。如果您所做的只是身份验证(而不是帐户管理),那么我看不出有必要使用库。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/171519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档