IIS 8.5:更改url子路径的身份验证模式

时间:2016-08-19 15:41:05

标签: authentication iis windows-authentication iis-8.5

我们有一个客户端Intranet Web应用程序在IIS 8.5上作为远程代理运行,并启用了Windows身份验证。现在,我们需要在URL子路径/api/上禁用 Windows身份验证并启用匿名身份验证,以使此路径中的所有数据在客户端Intranet域中公开可用

实际上, chensformers Add authentication to subfolders without creating a web application)的解决方案听起来很有希望。但是由于我错过了部分声明,所以还没有让它运行。

如何配置IIS 8.5来实现此目的?

3 个答案:

答案 0 :(得分:1)

经过长时间的努力,我自己找到了答案。答案是两部分:

  1. @Tim Lewis(Allow anonymous authentication for a single folder in web.config?)的回答让我得到了正确的配置。在applicationHost.config中的C:\Windows\System32\inetsrv\config文件中,我将以下行从Deny更改为Allow

    <section name="access" overrideModeDefault="Allow" />
    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
    <section name="windowsAuthentication" overrideModeDefault="Allow" />
    

    然后在web.config的{​​{1}}内,我在最后一个C:\inetpub\wwwroot标记之前插入了以下行:

    </configuration>

    重新启动 IIS管理器和服务器后,应该覆盖主域的Windows身份验证以查找子路径(在我的情况下为<location path="api"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location> ),并且子路径中的每个URL都应该公开发布。

  2. 但是,如果此配置最初不起作用,则可能是您选择的编辑器(在我的情况下 Notepad ++ )未打开{{{}的正确内容1}}(无论出于何种原因)并且其中的所有更改都不会生效(另请参阅@MeanGreen Applicationhost.config not showing changes)。

    我通过安装和使用 Notepad2 x64 http://www.flos-freeware.ch/notepad2.html)解决了这个问题。在此之后,上述更改生效并立即生效。

  3. PS:另请参阅http://forums.iis.net/t/1233382.aspx?IIS+8+5+Change+authentification+mode+for+url+sub+path,以便对此主题进行更长时间的讨论。

答案 1 :(得分:0)

首先,您需要将 api 文件夹转换为应用程序,即右键单击文件夹=&gt;转换为应用程序。在中央窗格中将其转换为应用程序后,双击身份验证=&gt;选择匿名身份验证并启用它。禁用所有其他身份验证模式。

P.S。 - 您可以尝试不转换为应用程序。我没有测试过,所以不确定它是否只是作为一个文件夹。

答案 2 :(得分:0)

面向未来的Google员工。

此问题/答案帮助了我很多!我也正在使用虚拟路径,除了它来自python flask应用程序。除了我想要在windowsauthentication之后的管理站点外,其余站点为anonymousAuthentication

这对我来说很有效:

  1. 根据以下答案允许两个窗口和匿名身份验证模块的委派:https://stackoverflow.com/a/12343141/7838574

  2. 更新web.config

<configuration>
    <!-- ...the beginning of the web.config file as is... -->
    </appSettings>
    <location path="admin">  <!-- relative to where the web.config file is located -->
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="true" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </location>
</configuration>

我不必重新启动IIS管理器或服务器。