根据memberOf属性获取AD group的Domain Users的members

本文介绍了一款使用C#开发的LDAP Sync应用遇到的问题,即如何通过memberOf属性获取AD group 'Domain Users'的成员。由于LDAP User的memberOf属性不包含'Domain Users',解决方案是通过用户的primaryGroupID和group的objectSid来确定成员关系。文章详细阐述了如何获取SID以及根据SID获取RID的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

背景描述

问题描述

问题分析

问题解决

如何获取SID

如何根据 SID 获取 RID


背景描述

我所在的部门做的一款 LDAP Sync 的 windows 系统的应用,可以把用户 Directory Server 的数据,包括 LDAP User,LDAP Group,上传到我们的产品里来。

该 application 是用 C# 开发的,使用 System.DirectoryServices.Protocols.dll 库 ( 该库提供一系列 LDAP 的 API )。

在我本机上,该 dll 所在路径:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7\System.DirectoryServices.Protocols.dll

可以使用 Jetbrains 的 dotPeek 工具反编译 dll 文件,查看源码。

 

问题描述

我们 Sync LDAP Group 的成员的时候,是使用的 memberOf 属性,返回满足条件的 LDAP User,作为该 group 的member。LDAP filter 如下:

(&(objectClass=*)(memberOf=cn=security_group_1,dc=test2019,dc=com)(|(mail=*)(proxyAddresses=*)))

但是,AD 有一个特殊的 group:Domain Users,一般情况下,这台 AD server 中所有的 LDAP User 都属于这个 group。但是,LDAP user 的 memberOf 属性中并没有 Domain Users 的 dn。

所以导致,用户想要同步 Domain Users 这个 group, 却找不到任何 members。

 

问题分析

AD 里有一个 primary group,默认是 Domain Users。

所有的 LDAP User 默认属于 primary group,是通过 LDAP User 的一个属性:primaryGroupID,这个值就是 primary group 的 Rid。

在 AD server 上通过 powershell 来获取一个 LDAP User 的所有属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值