2013-03-19 8 views
1

Я поддерживаю веб-сайт интранета для крупной компании. Поскольку сбой в текущей системе аутентификации пользователей, мне пришлось разработать срочное решение. Вот упрощенный кодНайти имя пользователя с LDAP

$usr=$_POST['user']; 
$psw=$_POST['code']; 

if(!strlen($psw)) 
$psw="x"; 
// because empty password works fine for any user 

$ldap= ldap_connect("LDAP://ldapserver.xxx.local"); 
if(!$ldap) 
exit(0); 

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($ldap, LDAP_OPT_OPT_REFERRALS, 0); 

if($bind = @ldap_bind($ldap, $usr, $psw){ 
header("Location: http:10.xx.xx.xx/entrance.php?id=$usr"); 
// login OK, look for user privileges 
}else{ 
header("Location: http:10.xx.xx.xx/login.php?INV=1"); 
// back to login page 
} 

код прекрасно работает, но я не хочу, пользователи должны ввести свою сеть имя пользователя и пароль, , когда пользователь заходит на эту страницу, подключения и привязку анонимно LDAP-сервер, может получить информацию о имени пользователя этого пользователя.

И было бы большой бонус, если он мог бы дать некоторую дополнительную информация, такие как полное имя, код филиала, отделение, почтовый адр .. и т.д.

+1

Ну, вы должны попросить учетные данные для входа в систему, чтобы сервер LDAP предоставлял аутентификацию для сеанса пользователя – Suyash

ответ

0

Это зависит от вашего сервера LDAP. Если для этого требуется аутентификация, вам необходимо предоставить эту информацию; однако это должно быть делегировано какой-либо учетной записи службы, а не привязано к конкретному пользователю (что является совершенно другим процессом). В любом случае, предположим, что это не проблема, вы можете запросить сервер LDAP с помощью ldap_search.

Например, если вы хотите найти имя пользователя из cihats под o=example Д.Н., следующее будет делать трюк:

$ldap = @ldap_connect($yourHostname); 
$query = @ldap_search($ldap, 'o=example', 'cn=cihats'); 
$results = @ldap_get_entries($ldap, $query); 

if ($results['count']) { 
    print_r($results); 
} else { 
    echo "No such common name"; 
} 

Выход ldap_get_entries будет весь каталог для каждого из совпадения, найденные в поиске, так что вы сможете получить такие вещи, как полное имя, коды филиалов и т. д., но они будут иметь специфические для сайта ключи.

Смежные вопросы