我在Yii2工作时使用此处的Adldap扩展程序:https://github.com/Adldap2/Adldap2
当我尝试在ldap服务器上验证用户身份时,我遇到了问题。我可以成功建立连接并检索用户数据,但是当尝试验证用户的用户名和密码是否正确时,即使信用证错误,它也总是返回true。下面是我的代码片段(配置数组当然没有显示):
$ad->addProvider($config);
try {
// If a successful connection is made to your server, the provider will be returned.
$provider = $ad->connect();
//User below does return the correct information from the ldap server
$user = $provider->search()->users()->find('quillin');
try{
$provider->auth()->attempt("wrongUsername","wrongPassword");
die("WIN");
}catch( Exception $e ){
die("Exception " . $e);
}
}catch (\Adldap\Auth\BindException $e) {
die( "There was an issue binding / connecting to the server. <br />" . $e);
}
无论我输入什么用户名和密码字段,它总是返回true并命中死亡(&#34; WIN&#34;);线。在我的composer.json文件中,我使用&#34; adldap2 / adldap2&#34;:&#34; v7.0。*&#34;
我还尝试使用以下内容绑定用户:
try{
$provider->auth()->attempt("wrongUsername","wrongPassword", $bindAsUser = true);
die("WIN");
}catch( Exception $e ){
die("lose :(");
die("Exception " . $e);
}
这也总是返回true;
答案 0 :(得分:1)
我想出了这个,并且会在其他任何人解释同样的问题。
1)$ provider-&gt; auth() - &gt; attempt()应该包含在IF中,而不是try / catch。 2)第一个参数$ username实际上是在寻找userprincipalname,文档让它听起来像是在寻找用户名。
之后,我能够成功验证用户。