Adldap2 身份验证始终 returns true - Yii2

Adldap2 authentication always returns true - Yii2

我在 Yii2 中工作,这里有 Adldap 扩展:https://github.com/Adldap2/Adldap2

当我尝试在我的 ldap 服务器上验证用户时,我 运行 遇到了问题。我可以成功建立连接并检索用户数据,但是当尝试验证用户的用户名和密码是否正确时,它总是 returns 正确,即使信用是错误的。下面是我的代码片段(当然没有显示配置数组):

    $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);

    }

无论我在用户名和密码字段中输入什么,它总是 returns 正确并命中骰子("WIN");线。在我的 composer.json 文件中,我使用 "adldap2/adldap2":"v7.0.*"

我还尝试使用以下方法绑定用户:

       try{
          $provider->auth()->attempt("wrongUsername","wrongPassword", $bindAsUser = true);
          die("WIN");
        }catch( Exception $e ){
            die("lose :(");
          die("Exception " . $e);
        }

而且这也总是 returns 正确;

我解决了这个问题,如果其他人有同样的问题,我会在这里解释。

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

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