yii2ldapadldap

Adldap2 authentication always returns true - Yii2


I'm working in Yii2 with the Adldap extension found here: https://github.com/Adldap2/Adldap2

I'm running into an issue when I try to authenticate users on my ldap server. I can successfully make a connection and and retrieve user data, but when trying to authenticate if a user's username and password are correct or not, it always returns true, even if the creds are wrong. Below is my code snippet (with the config array not showing of course):

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

    }

No matter what I put in for the username and password fields, it always returns true and hits the die("WIN"); line. In my composer.json file, i'm using "adldap2/adldap2": "v7.0.*"

I have also tried to bind the user using the following:

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

And that also always returns true;


Solution

  • I figured this out and will explain here in anyone else has the same issue.

    1) $provider->auth()->attempt() should be wrapped in an IF, and not a try/catch. 2) The first parameter, $username, is actually looking for the userprincipalname, the docs had made it sound like it was looking instead for a username.

    After that, I was able to authenticate the user successfully.