How to use ldap in UserIdentity for authentication

You are viewing revision #4 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version or see the changes made in this revision.

« previous (#3)next (#5) »

It took me a while to get ldap auth working with yii, so I write it down here, maybe it can be of some use.

Yii does not have a ldap class by itself, but you can extend it for example with Zend classes. To authenticate users at you page via ldap, change protected/components/UserIdentity.php in the following way:

On top of the file add:

Yii::import('application.vendors.*');
    require_once('Zend/Ldap.php');

Delete or comment out everything in the authenticate() function. Then add

$options = array(
            'host'              => 'your.ldap.host.com',
            'username'          => 'your_admin_users_username',
            'password'          => 'your_admin_users_password',
            'baseDn'            => 'your_base_dn',
            'useStartTls'        => true, # if you need startTls
    );
    $ldap = new Zend_Ldap($options);
    try{
            $ldap->bind("cn=".$this->username.",your_base_dn", $this->password);
            $auth=true;
    }
    catch (Exception $e){
            $auth=false;
    }
    if($auth===true)
    {
            $this->errorCode=self::ERROR_NONE;
    }
    return !$this->errorCode;

For this to work you need Exception.php, Ldap.php and the Ldap folder from the library folder of a Zend installation in the folder protected/vendors/Zend

11 0
18 followers
Viewed: 96 917 times
Version: Unknown (update)
Category: Tutorials
Written by: BeerSerc
Last updated by: Navarr
Created on: Jan 26, 2010
Last updated: 10 years ago
Update Article

Revisions

View all history

Related Articles