How to use ldap in UserIdentity for authentication

11 0
18
Viewed: 106 695 times
Version: Unknown (update)
Category: Tutorials
Written by: BeerSerc BeerSerc
Updated by: Navarr Navarr
Created: Jan 26, 2010
Updated: 12 years ago

You are viewing revision #3 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 (#2)next (#4) »

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