Доступ к учетным данным пользователя с помощью PHP на IIS 7 - PullRequest
1 голос
/ 08 мая 2009

Мы устанавливаем WordPress MU на сервер IIS 7

Нам нужно включить единый вход в AD.

Мы рады написать код PHP для автоматического входа в систему / создания учетных записей для пользователей и т. Д.

Нам нужна помощь в том, как получить учетные данные пользователей (имя пользователя, адрес электронной почты, имя и т. Д.) С сервера IIS / windows в переменные PHP, чтобы мы могли их использовать.

Все советы приветствуются

1 Ответ

1 голос
/ 16 июня 2009

Вы хотите использовать ldap. Самым сложным для меня было выяснить, в каком подразделении были мои пользователи, и в каком формате нам нужно было иметь наши имена пользователей (USERNAME@DOMAIN.COM вместо domain \ username). У нас есть все они в OU пользователя по умолчанию. Это взято из приложения CakePHP, которое я написал, и оно собирает некоторую дополнительную информацию, но оно должно направить вас в нужное русло. Ваш php, конечно, должен иметь скомпилированное расширение ldap.

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 (!@ldap_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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...