为 Active Directory 身份验证处理多个域

handling multiple Domains for Active Directory Authentication

在我的应用程序中,我使用以下方法将 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 =21=],因为在 Domain1 中没有这样的用户,它将失败。

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

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

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