2009-05-08 12 views
1

Nous installons WordPress MU sur un IIS 7 severAccès informations d'identification utilisateur avec PHP sur IIS 7

Nous devons activer l'authentification unique contre l'AD.

Nous sommes heureux de coder PHP pour la connexion automatique/créer des comptes pour les utilisateurs, etc.

Ce que nous avons besoin d'aide est de savoir comment nous obtenons les utilisateurs d'informations d'identification (nom d'utilisateur, e-mail, nom, etc.) de la Serveur IIS/windows dans les variables PHP afin que nous puissions les utiliser.

Tous les conseils sont les bienvenus

+0

Est-ce que PHP est installé en tant que CGI (rapide) ou en tant que gestionnaire isapi? – VolkerK

Répondre

1

Vous souhaitez utiliser ldap. Le plus dur pour moi était de trouver l'OU mes utilisateurs étaient dans et le format dont nous avions besoin pour avoir nos noms d'utilisateur ([email protected] au lieu de domaine \ nom d'utilisateur). Nous les avons tous dans l'unité d'organisation des utilisateurs par défaut. Ceci est pris d'une application cakephp que j'ai écrit et il saisit quelques informations supplémentaires, mais il devrait vous mettre sur la bonne voie. Votre php doit bien sûr avoir une extension ldap compilée.

protected function findLdapUser($username, $password, $otheruser = false){ 
    $config = Configure::read('ldap'); 
    if(!$username && !$password && $otheruser){ 
     $username = $config['username']; 
     $password = $config['password']; 
    } 
    if($password == ""){return false;} //prevent anonmyous bind 
    if(!$otheruser){ 
     $otheruser = $username; 
    } 
    $connection = ldap_connect($config['host'], $config['port']); 
    if($connection === false){  //does not detect properly depending on enviroment! 
     debug("cannot connect to ldap server"); 
     return 0; //cannot connect! 
    } 
    ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, $config['version']); 
    if ([email protected]_bind($connection, $username . $config['userpostfix'], $password)){ 
     return false; 
    } 

    //search for user data 
    $fields = array('mail', 'name', 'telephoneNumber', 'physicalDeliveryOfficeName'); 
    //$filter = "sAMAccountName=" . $username; 
    $filter = "userPrincipalName=" . $otheruser . $config['userpostfix']; 
    $results = ldap_search($connection, "CN=USERS,".$config['basedn'], $filter, $fields); 
    $info = ldap_get_entries($connection, $results); 
    if($info['count'] == 0){return false;} 
    @ldap_unbind($connection); 
    $return['LdapUser']['email'] = $info[0]['mail'][0]; 
    $return['LdapUser']['fullname'] = $info[0]['name'][0]; 
    //supress warnings 
    @$return['LdapUser']['office'] = $info[0]['physicaldeliveryofficename'][0]; 
    @$return['LdapUser']['phone'] = $info[0]['telephonenumber'][0]; 
    return $return; 
} 
Questions connexes