【问题标题】:Is it possible to connect my ASP.NET MVC windows authentication to another domain是否可以将我的 ASP.NET MVC Windows 身份验证连接到另一个域
【发布时间】:2024-05-23 18:05:01
【问题描述】:

我不是系统管理员,但我们当前的项目需要我做一些系统管理员任务。我有以下内容:-

  • 仅使用 Windows 身份验证的 Asp.net MVC Web 应用程序。

  • 在我们的开发环境中,我在同一台机器上同时拥有 AD 和 ASP.NET MVC Web 应用程序。所以我可以毫无问题地将 asp.net mvc 与 AD 连接起来。除了让用户使用其 AD 凭据登录应用程序之外,我还使用以下代码检索 AD 用户:-

  public List<DomainContext> GetADUsers(string term=null)
            {
                List<DomainContext> results = new List<DomainContext>();
                string ADServerName = System.Web.Configuration.WebConfigurationManager.AppSettings["ADServerName"];
                using (var context = new PrincipalContext(ContextType.Domain, ADServerName))
                using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
                {
                    var searchResults = searcher.FindAll();


foreach (Principal p in searchResults)
                    {
                       if (term == null || p.SamAccountName.ToString().ToUpper().StartsWith(term.ToUpper()))
                       {
  • 现在我将 asp.net mvc Web 应用程序移至我们的登台服务器。而在登台服务器上,AD 位于另一台机器上,也位于不同的域中。

所以我的问题是:-

  1. 如何强制 asp.net MVC Web 应用程序针对远程服务器上的 AD 对用户进行身份验证。我的意思是从哪里可以设置 asp.net mvc 应该连接到哪个域?

  2. 允许 DomainContext 在 asp.net mvc Web 应用程序上从远程服务器上的 AD 检索用户的要求是什么。两个域应该连接在一起吗?或者两台机器上的用户都应该拥有所需的权限..

提前感谢您的帮助。

【问题讨论】:

    标签: asp.net .net asp.net-mvc asp.net-mvc-4 windows-authentication


    【解决方案1】:

    您需要将连接字符串设置为:

    <connectionStrings>
      <add name="TestDomain1ConnectionString" connectionString="LDAP://testdomain1.test.com/CN=Users,DC=testdomain1,DC=test,DC=com" />    
    </connectionStrings>
    

    你可以在这里找到完整的演练:

    http://msdn.microsoft.com/en-us/library/ff650307.aspx

    【讨论】:

    • 感谢您的回复,但是您提供的链接是关于表单身份验证的,而在我的情况下,我使用的是 windows 身份验证..链接对这两种情况都有效吗?
    【解决方案2】:

    有关如何设置连接字符串的示例,请参阅以下示例,为了使此操作正常工作,您需要在要连接的域上提供有效的用户名和密码。但是通常您的 Web 应用程序和域是相同的

    Connect to Active Directory via LDAP

    【讨论】:

    • 感谢您的回复,但我可以使用 DomainContext 而不是 DirectoryEntry 来做同样的事情