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

通过LDAP的PHP ActiveDirectory-如何查找用户主要组的名称?,php,ldap,Php,Ldap,因此,我想检索用户主组的组名 我已经知道如何检索primaryGroupID,但在group类中还没有找到包含这样一个id的字段 这就是我检索primaryGroupID的方式: $filter = "(sAMAccountName=" . $username . ")"; $attr = array ( "primaryGroupID", "sAMAccountName" ); $result = ldap_search( $ldap, "DC=ad,DC=test,DC=local", $f

因此,我想检索用户主组的组名

我已经知道如何检索primaryGroupID,但在group类中还没有找到包含这样一个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实际上是您需要获取的组的名称。基本上,您需要执行以下操作来确定实际组:

  • 从用户处获取
    objectSid
    primaryGroupID
    属性
  • 将用户的
    objectSid
    转换为其字符串形式
  • primaryGroupID
  • 搜索
    objectSid
    等于上一步SID的组
  • 这是一项相当乏味的任务,因为它几乎从未改变过。但以下是我目前如何从LDAP解码
    objectSid

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

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

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

    我不确定它是否重复,但这肯定是相关的