我需要递归搜索Active Directory组以查看用户帐户是否在给定组中;但是,GetAuthorizationGroups()方法不返回用户所属的某些组。
功能是:
public static bool IsUserAuthorized(string adGroup, string userName)
{
bool isInRole = false;
using (var ctx = new PrincipalContext(ContextType.Domain, "MyDomain"))
{
using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName))
{
isInRole = user != null && user.GetAuthorizationGroups().Any(g => g.SamAccountName == adGroup);
}
}
return isInRole;
}
我这样称呼函数:
IsUserAuthorized("myGroup", "MyDomain\MyUser");
答案 0 :(得分:0)
这不是代码的问题。 .GetAuthorizationGroups()方法不检索使用“组分发类型”设置的组。我将Active Directory中的组类型从分发更改为安全。而且,奇怪的是,缺少的组由.GetAuthorizationGroups()方法返回。