处理多个域以进行Active Directory身份验证

时间:2015-04-02 03:55:56

标签: c# .net active-directory active-directory-group

在我的应用程序中,我使用以下方法将AD用户名传递给它(例如:Domain1 \ User1)并尝试在Active Directory中查找用户所属的组。

     public ActionResult Login(string userName)
   {
        PrincipalContext up = new   PrincipalContext(ContextType.Domain);

        UserPrincipal users = UserPrincipal.FindByIdentity(up,IdentityType.SamAccountName, userName);

        PrincipalSearchResult<Principal> groups = users.GetGroups();
        IEnumerable<string> userGroupList = groups.Select(p =>p.SamAccountName);
        return userGroupList ;
    }

代码完美无缺,但我猜这个代码无法在有多个域的环境中工作。 例如: 1)用户尝试使用( Domain1 \ User1 )登录,它将通过, 2)用户尝试使用( Domain2 \ User2 )登录时,应用会尝试在 Domain1 中查找 User2 ,并且因为没有这样的Domain1中的用户将失败。

这是真的吗?如果是,我该如何解决此问题,以便它适用于多个域?

1 个答案:

答案 0 :(得分:0)

在尝试实例化新的PrincipalContext对象时,我需要将域名作为第二个参数传递。 通过这样做,我能够检索具有多个域的用户组。 所以代码将是这样的:

      PrincipalContext up = new   PrincipalContext(ContextType.Domain,"DomainName");