Adldap2身份验证始终返回true - Yii2

时间:2017-03-06 16:14:20

标签: yii2 ldap adldap

我在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;

1 个答案:

答案 0 :(得分:1)

我想出了这个,并且会在其他任何人解释同样的问题。

1)$ provider-&gt; auth() - &gt; attempt()应该包含在IF中,而不是try / catch。 2)第一个参数$ username实际上是在寻找userprincipalname,文档让它听起来像是在寻找用户名。

之后,我能够成功验证用户。