如何在aspx中使用AD身份验证找到用户的组?

时间:2012-04-23 15:20:03

标签: c# asp.net active-directory

所以我遵循了this教程,我可以成功登录,但现在我试图找出用户是否属于某个群组,我试过了:

if (User.IsInRole("group"))

一起
enableSearchMethods="true"

似乎没有什么工作,也许我正在寻找错误的地方......任何人都有任何提示吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是.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.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // do something here....
   PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();

   // enumerate the groups found - check to find your group in question
}

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!

或者,您也可以找到用户和组主体:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
GroupPrincipal groupToCheck = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

if(user != null && groupToCheck != null)
{
    // this call will tell you - yes or no - whether that user is member of that group
    bool isMember = user.IsMemberOf(groupToCheck); 
}