Jon-G blogs for Net-Entwicklung.de

16.06.2009

HowTo: Check if a username exists in LDAP (without authenticating user)

Filed under: Coding — Jonathan Gilbert @ 21:40


/**
* check if user exists in LDAP
* @param string $username username
* @return bool
*/
public static function isUser($username)
{
  $auth = Zend_Auth::getInstance();
  $config = Zend_Registry::get('ldap');
  $options = $config->toArray();

  $password = 'x';

  $adapter = new Zend_Auth_Adapter_Ldap($options, $username, $password);

  // because we have given an invalid password, this will always return error messages
  $result = $auth->authenticate($adapter);
  // here is a sample error message from which we deduce that "data 525" means that a user does not exist
  // "0x31: Invalid credentials: 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece: ..."
  // this seems to be confirmed by the following error codes for MS AD found on http://www-01.ibm.com/support/docview.wss?uid=swg21290631
  // 525 user not found
  // 52e invalid credentials
  // 530 not permitted to logon at this time
  // 531 not permitted to logon at this workstation
  // 532 password expired
  // 533 account disabled
  // 701 account expired
  // 773 user must reset password
  // 775 user account locked
  $messages = $result->getMessages();
  if ((false !== strpos($messages[1], 'data 525')) ||
    (false !== strpos($messages[1], 'data 533')) ||
    (false !== strpos($messages[1], 'data 701'))) {
    return false;
  }
  return true;
}

Advertisements

1 Kommentar »

  1. Gut!

    Kommentar von Flash — 05.07.2009 @ 14:37


RSS feed for comments on this post. TrackBack URI

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Erstelle eine kostenlose Website oder Blog – auf WordPress.com.

%d Bloggern gefällt das: