繁体   English   中英

PHP ActiveDirectory到LDAP - 如何查找用户主要组的名称?

[英]PHP ActiveDirectory through LDAP - How to find the name of a users primary group?

所以我想检索用户主要组的组名。

我已经知道如何检索primaryGroupID但是我没有在组类中找到一个包含这样一个id的字段。

多数民众赞成我如何检索primaryGroupID:

$filter = "(sAMAccountName=" . $username . ")";
$attr = array ( "primaryGroupID", "sAMAccountName" );
$result = ldap_search( $ldap, "DC=ad,DC=test,DC=local", $filter, $attr ) or exit( "Unable to search LDAP server" . ldap_error( $ldap ) );
$entries = ldap_get_entries( $ldap, $result );

提前致谢!

primaryGroupID实际上是您需要获取的组的RID 基本上,您需要做的是确定实际组,如下所示:

  1. 从用户获取objectSidprimaryGroupID属性。
  2. 将用户的objectSid转换为其字符串形式。
  3. 将字符串SID中的最后一组数字替换为primaryGroupID
  4. 搜索objectSid等于上一步的SID的组。

对于几乎从不改变的事情来说,这是一项相当繁琐的任务。 但这是我目前如何从LDAP解码objectSid

https://github.com/ldaptools/ldaptools/blob/master/src/LdapTools/AttributeConverter/ConvertWindowsSid.php

只需将值传递给fromLdap($value)函数即可。 然后使用SID的字符串版本获取组的SID,如下所示:

$groupSid = preg_replace('/\d+$/', $primaryGroupId, $userSid);

现在使用上面的$groupSid您可以搜索objectSid等于的组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM