How to use ldap in UserIdentity for authentication
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
