Přihlášení přes LDAP
- TFSi
- Člen | 23
Zdravím,
narazil jsem na menší problém. V jedné aplikaci používám přihlášení
pomocí LDAPu, což samo o sobě funguje. Zároveň ale používáme Centreon
na monitorování sítě, který se také loguje pomocí LDAPu. Pokud mám ale
v jednom prohlížeči přihlášený Centreon (mám prakticky pořád) a
pokusím se zalogovat ve zmíněné aplikaci, tak skončím s:
Fatal error: Function __autoload(CentreonACL) threw an exception of type 'Exception' in /srv/www/htdocs/xxx/App/loader.php on line 5445
Pro přihlášení mám sesmoleno toto (pracovní verze):
<?php
class Auth extends Object implements IAuthenticator {
private static $server = '110.1.1.20';
private static $port = '389';
private static $ver = 3;
public function authenticate(array $credentials) {
$username = strtolower($credentials[self::USERNAME]);
$password = $credentials[self::PASSWORD];
$result = dibi::query('SELECT [role] FROM [users] WHERE [username]=%s LIMIT 1', $username);
if(count($result)) { // Uživatel je v databázi, pokračuje ověření přes LDAP
/**/
$connect = ldap_connect(self::$server, self::$port); // Připojení k LDAP serveru
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, self::$ver); // Nastavení verze protokolu
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = @ldap_bind($connect, $username, $password);
if($bind) {
return new Identity($username, $result->fetchSingle());
}
/**/
}
}
}
Takže se evidentně Centreon s Nette nemají rádi :( a potřebuji je
nějak „skamarádit“ :)
Používám mini verzi Nette 0.9.2 pro PHP5.2, na serveru mám Apache2.2.13,
PHP5.2.5, SLES10
Díky za případnou pomoc
Editoval TFSi (9. 1. 2010 21:42)