CodeGo.net>如何检查一个Active Directory组是否是另一个Active Directory组的成员
作者:互联网
假设用户johnsmith是活动目录组MyManagers的成员.
假设MyManagers组是MyEmployees组的成员.
假设MyEmployees组是MyUsers组的成员.
当johnsmith登录到我的应用程序时,我怎么知道他是MyUsers组的成员?
欣赏C#中的示例.
谢谢,
克鲁维
解决方法:
如果您使用的是.NET 3.5及更高版本,则应签出System.DirectoryServices.AccountManagement(S.DS.AM)命名空间.在这里阅读所有内容:
> Managing Directory Security Principals in the .NET Framework 3.5
> MSDN docs on System.DirectoryServices.AccountManagement
基本上,您可以定义域上下文并轻松找到AD中的用户和/或组:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.Current; // this would be John Smith
if(user != null)
{
// get the user's groups he's a member of
PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups();
// now you just need to iterate over the groups and see if you find the
// one group you're interested in
}
S.DS.AM中的GetAuthorizationGroups调用确实确实进行了递归查询,例如它还会选择您的用户所属的任何组,因为这些组是其他组的成员.
新的S.DS.AM使得与AD中的用户和组玩起来非常容易!
标签:active-directory,active-directory-group,c,net 来源: https://codeday.me/bug/20191101/1987214.html