私はSam J Levy PHP LDAP認証scriptを使用しています。私はMicrosoft Active Directoryについてはあまりよく知らない。だから私は$ldap_user_group = "WebUsers";
と$ldap_manager_group = "WebManagers";
のために何を入れなければならないのか分かりません。私の会社の広告では、ユーザーのアカウントは異なる部門や場所に分かれています。私はスクリプトの残りの部分を理解していますが、私はWebUserとWebManagerにどのように手を差し伸べるのか分かりません。どんな助けもありがとうございます。PHPを使用してLDAPで認証する方法
これは、完全なスクリプトです:
<?php
// Initialize session
session_start();
function authenticate($user, $password) {
if(empty($user) || empty($password)) return false;
// Active Directory server
$ldap_host = "192.158.16.73";
// Active Directory DN OU=Accounts,DC=DMM,DC=JED,DC=RUH
$ldap_dn = "CN=Some Name,OU=IT,OU=Office Users,OU=RUH,OU=Accounts,DC=Company,DC=com";
// Active Directory user group
$ldap_user_group = "WebUsers";
// Active Directory manager group
$ldap_manager_group = "WebManagers";
// Domain, for purposes of constructing $user Company.com
$ldap_usr_dom = '@Company.com';
// 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;
}
}
?>
Apache DSやjXplorerのようなツールを使ってLDAP/ADを調べてみてください。 – heiglandreas