其他分享
首页 > 其他分享> > CodeGo.net>如何检查一个Active Directory组是否是另一个Active Directory组的成员

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