判断AD帐号是否在嵌套组中
用户和组的关系
: zhangsan
隶属于组groupA
,组groupB
隶属于组groupA
1.判断用户
判断用户是否在某个组中(支持嵌套关系的组),想要判断zhangsan
是否在组groupB
中
samAccountName = 'zhangsan'
groupDn= 'CN=groupB,OU=Dennis,DC=dennis,DC=com'
# samAccountName:要判断的用户
# groupDn:组的完整DN
search_filter = f'(&(objectClass=user)(objectCategory=person)(sAMAccountName={samAccountName})(memberof:1.2.840.113556.1.4.1941:={groupDn}))'
2.判断组
判断组中是否存某个用户,想要判断组groupB
中是否存在用户zhangsan
groupName= 'groupB'
userDn= 'CN=zhangsan,OU=Dennis,DC=dennis,DC=com'
# groupName:要判断的组
# userDn:用户的完整DN
search_filter = f'(&(objectClass=group)(objectCategory=group)(sAMAccountName={groupName})(member:1.2.840.113556.1.4.1941:={userDn}))'
3.查找一个组下的所有用户
该查询条件在AD管理工具
中可以直接查出来,只是速度有点慢,用第三方工具包
(只在python
的ldap3
中测试过)在代码中查询可能会提示操作超时
,其他工具自行测试
groupDn= 'CN=groupB,OU=Dennis,DC=dennis,DC=com'
# groupDn:组的完整DN
search_filter = f'(&(objectClass=user)(objectCategory=person)(memberof:1.2.840.113556.1.4.1941:={groupDn}))'
4.查找一个用户下隶属的所有组
该查询条件在AD管理工具
中可以直接查出来,只是速度有点慢,用第三方工具包
(只在python
的ldap3
中测试过)在代码中查询可能会提示操作超时
,其他工具自行测试
userDn= 'CN=zhangsan,OU=Dennis,DC=dennis,DC=com'
# userDn:组的完整DN
search_filter = f'(&(objectClass=group)(objectCategory=group)(member:1.2.840.113556.1.4.1941:={userDn}))'
5.参考来源
https://learn.microsoft.com/zh-cn/windows/win32/adsi/search-filter-syntax?redirectedfrom=MSDN
https://github.com/cannatag/ldap3/issues/327
https://stackoverflow.com/questions/6195812/ldap-nested-group-membership
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律