php ldap ad 登录验证,身份验证 - 使用LDAP通过Active Directory在PHP中进行身份验证

你会认为简单地在Active Directory中验证用户是一个非常简单的过程,在PHP中使用LDAP而不需要库。 但是有很多东西可以很快地使它复杂化:

您必须验证输入。 否则将传递空的用户名/密码。

您应确保在绑定时正确编码用户名/密码。

您应该使用TLS加密连接。

在一个服务器关闭的情况下,使用单独的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...

}

上面的身份验证呼叫将:

验证用户名或密码均为空。

确保用户名/密码已正确编码(默认为UTF-8)

尝试使用备用LDAP服务器以防万一。

使用TLS加密身份验证请求。

如果失败则提供其他信息(即锁定/禁用帐户等)

还有其他库可以做到这一点(例如Adldap2)。 但是,我觉得有必要提供一些额外的信息,因为最高投票的答案实际上是一个安全风险,依赖于没有完成输入验证而不使用TLS。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值