我通过PHP的ldap_ *函数访问Active Directory服务器。部分任务是根据AD组成员身份确定应用程序权限。对于我的用户,这可以正常工作,对于其他一些用户,“memberOf”字段不是返回数据的一部分。什么会导致此属性丢失?在缺席时我可以做些什么来确定团体成员?
$ds = ldap_connect($ldap['host']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
if ($ds) {
$r = ldap_bind($ds, $ldap['user'], $ldap['pass']);
$sr = ldap_search($ds, $ldap['path'], "samaccountname=".$username, array(), 0, 1000, 5);
$info = ldap_get_entries($ds, $sr);
}
答案 0 :(得分:0)
事实证明,通过拉动该组的所有成员并搜索当前用户的结果,我能够解决此问题。我仍然不知道为什么用户拉不了数据。
$ds = ldap_connect($ldap['host']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
if ($ds) {
$r = ldap_bind($ds, $ldap['user'], $ldap['pass']);
$sr = ldap_search($ds, $group, "cn=*", array(), 0, 1000, 5);
$info = ldap_get_entries($ds, $sr);
}
foreach ($info[0]['member'] as $member) {
if ($member == $currentUserDistinguishedName) {
// Do Authorized stuff
break;
}
}