Веб-приложение Active Directory и PHP — выбор отображаемого имени и т. Д.

Я разработал базовое веб-приложение, которое подключается к нашей Active Directory через PHP с использованием системы входа в систему.

Он аутентифицируется в AD и регистрирует пользователя на базовой странице, которая повторяет его имя пользователя.

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

Это код, который я должен аутентифицировать против AD.

<?php
// Initialize session
session_start();

function authenticate($user, $password) {
// Active Directory server
$ldap_host = "...";

// Active Directory DN
$ldap_dn = "OU=...,DC=...,DC=...";

// Active Directory user group
$ldap_user_group = "...";

// Active Directory manager group
$ldap_manager_group = "...";

// Domain, for purposes of constructing $user
$ldap_usr_dom = "@...";

// connect to active directory
$ldap = ldap_connect($ldap_host);// verify user and password
if($bind = @ldap_bind($ldap, $user . $ldap_usr_dom, $password)) {
// valid
// check presence in groups
$filter = "(sAMAccountName=" . $user . ")";
$attr = array("memberof");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result);
ldap_unbind($ldap);// check groups
foreach($entries[0]['memberof'] as $grps) {
// is manager, break loop
if (strpos($grps, $ldap_manager_group)) { $access = 2; break; }// is user
if (strpos($grps, $ldap_user_group)) $access = 1;
}if ($access != 0) {
// establish session variables
$_SESSION['user'] = $user;
$_SESSION['access'] = $access;
return true;
} else {
// user has no rights
return false;
}} else {
// invalid name or password
return false;
}
}
?>

Любая помощь будет принята с благодарностью, я новичок в такого рода вещи!

1

Решение

Вы так близки к ответу. Вам просто нужно добавить еще несколько элементов к атрибутам, которые вы просите вернуть. Вы можете изменить следующую строку

$attr = array("memberof");

что-то вроде этого, если вы хотите получить больше демографической информации с сервера каталогов

$attr = array("cn", "displayName", "givenName", "sn", "mail", "memberof");
0

Другие решения

Спасибо за ответ. Я обновил массив, чтобы использовать эти атрибуты — хотя я не уверен, как бы я вытащил эту информацию и отобразил ее. Теперь у меня есть …

    <?php
// Initialize session
session_start();

function authenticate($user, $password) {
// Active Directory server
$ldap_host = " ";

// Active Directory DN
$ldap_dn = " ";

// Active Directory user group
$ldap_user_group = " ";

// Active Directory manager group
$ldap_manager_group = " ";

// Domain, for purposes of constructing $user
$ldap_usr_dom = " ";

// connect to active directory
$ldap = ldap_connect($ldap_host);

// verify user and password
if($bind = @ldap_bind($ldap, $user . $ldap_usr_dom, $password)) {
// valid
// check presence in groups
$filter = "(sAMAccountName=" . $user . ")";
$attr = array("cn", "displayName", "givenName", "sn", "mail", "memberof");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result);
$displayname = $entries[0]['displayName'];
ldap_unbind($ldap);

// check groups
foreach($entries[0]['memberof'] as $grps) {
// is manager, break loop
if (strpos($grps, $ldap_manager_group)) { $access = 2; break; }

// is user
if (strpos($grps, $ldap_user_group)) $access = 1;
}

if ($access != 0) {
// establish session variables
$_SESSION['user'] = $user;
$_SESSION['access'] = $access;
$_SESSION['displayName'] = $displayname;
return true;
} else {
// user has no rights
echo "<script type='text/javascript'>alert('You have no access to this page.')</script>";
return false;
}

} else {
// invalid name or password
return false;

}
}
?>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector