Procurei durante algum tempo um algorítmo de validação via Active Directory para utilizar no Yii. O que apresentarei aqui funciona perfeitamente, utilizando apenas as bibliotecas do prórpio PHP.

Pesquisei em várias fontes para entender como poderia integrar esta funcionalidade. Encontrei alguns códigos, mas a minha dificuldade estava em como configurar o PHP para utilizar as funções LDAP.

Segui alguns conselhos que fui encontrando durante as pesquisas, tal como descomentar linha “extension=php_ldap.dll” no arquivo “php.ini”. Também vi várias referencias que os arquivos “libeay32.dll” e “ssleay32.dll” devem estar na pasta “windows\system32″.

Agora o mais importante que é o arquivo “aplicacao_yii\protected\components\UserIdentity.php”:

class UserIdentity extends CUserIdentity
{
public function authenticate()
{
// Tenta se conectar com o servidor

$servidor_ad = 'XXX.XXX.XXX.XXX'; // Endereco IP do servidor AD
$dominio_ad = 'DDDDDDD'; // Nome do dominio

$ldap = @ldap_connect($servidor_ad);

// Tenta autenticar no servidor

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS,0);

if (!($bind = @ldap_bind($ldap, "{$this->username}@{$dominio_ad}", $this->password))) {
$this->errorCode=self::ERROR_PASSWORD_INVALID;
} else {
$this->errorCode=self::ERROR_NONE;
}

return !$this->errorCode;
}
}