假设用户johnsmith是活动目录组MyManagers的成员。 假设组MyManagers是MyEmployees组的成员。 假设组MyEmployees是MyUsers组的成员。
当johnsmith登录我的应用程序时,我怎么知道他是MyUsers组的成员?
欣赏C#中的示例。
谢谢, kruvi
答案 0 :(得分:4)
如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。在这里阅读所有相关内容:
基本上,您可以定义域上下文并轻松在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中的用户和群组一起玩!