Benjamin S.: Synchronisation MySQL<->Windows-Passwort

Beitrag lesen

Hallo Christian, Hallo Forum,

mir hat das Tool LdapSearch 1.2 sehr weiter geholfen, und es ist in der Tat so, wie du es gesagt hast, genauer gesagt, wird als DN etwas in der Form

cn=<<Nutzer>>, cn=Users, dc=<<DomäneL1>>, dc=<<DomäneL0>>

erwartet. So funktioniert es. Juhu, Juhu! War ja ein tüchtiger Kraftakt, hätte nicht gedacht, dass es noch was wird, danke für eure Hilfe.

Es sei noch angemerkt, dass für <<Nutzer>> der _vollständige_ Nutzernamen einzusetzen ist, der höchstwahrscheinlich nicht mit dem Anmeldenamen übereinstimmt. Diesen kann man auf der Kommandozeile herausfinden mit

net user /domain <<Benutzername>>

Hier also das korrigierte, damit funktionierende und außerdem mit Fehlerbehandlungen gepimpte Skript:

define( LDAP_HOST, "<<Domänencontroller>>" );
  define( LDAP_DN,   "cn=%s,cn=Users,dc=<<DomäneL1>>,dc=<<DomäneL0>>" );

function ldap_checkUser( $user, $pass ) {
    $ldap_host = "ldap://" . LDAP_HOST;
    $ldap_user = sprintf( LDAP_DN, $user );
    $ldap_conn = @ldap_connect( $ldap_host );
    if ( $ldap_conn ) {
      $ldap_bind = @ldap_bind( $ldap_conn, $ldap_user, $pass );
      if ( $ldap_bind ) {
        ldap_close($ldap_conn);
        return true;
      } else {
        if (ldap_error($ldap_conn) != "Invalid credentials")
          die(ldap_error($ldap_conn));
        ldap_close($ldap_conn);
        return false;
      }
    } else die(ldap_error($ldap_conn));
  }

Mahlzeit. ;-)

MfG Benjamin.