IIS - 一个网站、两个绑定、两次身份验证?

IIS - 一个网站、两个绑定、两次身份验证?

我想知道以下是否可以完成,无论是否可以完成,获取尽可能多的反馈,以便我可以找到开始的方法。

我想在 IIS 中创建一个网站。这个网站我希望有 2 个绑定:

test1.company.com
test2.company.com

但是,当用户访问网站时,我希望 test1.company.com 使用表单身份验证,而 test2.company.com 使用 Windows 身份验证。

简而言之,这就是我想要实现的目标。到目前为止,我尝试过的事情是:

  1. 创建 2 个独立网站 (test1.company.com 和 test2.company.com),并在基本设置中让两个网站指向相同的物理路径。但是,我认为这行不通,因为当我更改一个网站上的身份验证时,它也会将其应用于另一个网站,反之亦然,因为我猜它们都使用相同的物理路径。

  2. 再次创建 2 个独立的网站,但在基本设置中,两个网站都有自己的文件夹/物理路径。但是,每个网站的文件夹完全相同。这可行,但是网站将被编辑(文件将被添加/更改到根文件夹),因此,如果有意义的话,网站上添加/更改的任何内容都需要在另一个网站上完全相同地完成。这会带来不便,我不想走这条路。

所以最后,我只是想得到一些反馈,看看我的想法是否能实现。如果需要更多细节,我可以解释。任何帮助都将不胜感激。

身份验证 iis 绑定

答案1

您可以选择选项 1,即两个指向相同物理路径的独立站点。当您为第一个站点设置表单身份验证时,您将获得一个包含以下内容的 web.config:

<configuration>
   <system.web>
      <authentication mode="Forms" />
   </system.web>
</configuration>

如果您在第二个站点上选择 Windows 身份验证,您将获得:

 <configuration>
     <system.webServer>
         <security>
             <authentication>
                 <anonymousAuthentication enabled="false" />
                 <windowsAuthentication enabled="true" />
             </authentication>
         </security>
     </system.webServer>
 </configuration>

现在,单个 web.config 文件中存在冲突。要解决此问题,请将两个节点从 web.config 文件移出,移至全局 IIS 配置文件中。

打开:

C:\Windows\System32\inetsrv\Config\applicationHost.config

以提升的管理员身份在文本编辑器中,在底部添加如下内容:

<location path="test1.company.com">
   <system.web>
       <authentication mode="Forms" />
    </system.web>
</location>

<location path="test2.company.com">
      <system.webServer>
          <security>
              <authentication>
                  <anonymousAuthentication enabled="false" />
                  <windowsAuthentication enabled="true" />
              </authentication>
          </security>
      </system.webServer>
</location>    

位置节点中的名称与您在 IIS 管理器中看到的站点名称相同。您可能已经在 中有其他位置节点applicationHost.config,否则请直接将它们放在configuration节点下。

两个站点之间共享的任何其他配置都可以保留在 web.config 中。

位置节点中的路径不仅限于站点名称,还可以有目录或文件,以将设置应用到站点的特定部分。

相关内容