根据AD Group验证用户

时间:2016-10-04 19:44:47

标签: c# asp.net-mvc active-directory

有验证登录的方案用户属于web.config中提到的AD组。下面使用的代码工作正常,但在循环时需要花费大量时间。 (某些情况用户在AD中有100+组的关系)字符串。

有没有办法通过直接方法实现这一目标,以获得更好的性能。

注意:我已尝试过Group obj的Contains()方法,但无法将字符串作为输入传递。

allowedRoles = "Role1, Role2"; //Read from web.config
string[] allowedRolesList = allowedRoles.Split(',');
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, UserDomain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx,IdentityType.SamAccountName,SLID);
if (user != null)
{
    var groups = user.GetAuthorizationGroups();
    foreach (string allowedrole in allowedRolesList)
    {
        foreach (GroupPrincipal group in groups)
        {
            if (group.Name.ToLower() == allowedrole.ToLower())
            {
                return true;
            }
        }
    }
}

0 个答案:

没有答案