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

Authentication IIS 8.5:更改url子路径的身份验证模式,authentication,iis,windows-authentication,iis-8.5,Authentication,Iis,Windows Authentication,Iis 8.5,我们有一个客户端intranet web应用程序,在启用Windows身份验证的IIS 8.5上作为远程代理运行。现在,我们需要禁用Windows身份验证,并在URL子路径/api/上启用匿名身份验证,以使此路径中的所有数据在客户端intranet域中公开可用 实际上,chensformers()的解决方案听起来很有希望。但是,我还没有运行它,因为我缺少一个节声明 如何配置IIS 8.5以实现此目的?首先,您需要将api文件夹转换为应用程序,即右键单击文件夹=>转换为应用程序。在中央窗格中将其转

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

实际上,chensformers()的解决方案听起来很有希望。但是,我还没有运行它,因为我缺少一个节声明


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

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


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

经过长时间的尝试,我自己找到了答案。答案有两个方面:

  • @Tim Lewis()的答案让我找到了正确的配置。在
    C:\Windows\System32\inetsrv\config
    中的文件
    applicationHost.config
    中,我将以下行从
    Deny
    更改为
    Allow

    <section name="access" overrideModeDefault="Allow" />
    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
    <section name="windowsAuthentication" overrideModeDefault="Allow" />
    
    重新启动IIS管理器和服务器后,应该为子路径覆盖主域中的windows身份验证(
    /api
    ,在我的情况下),并且子路径中的每个URL都应该公开可用

  • 但是,如果此配置一开始不起作用,可能是您选择的编辑器(在我的例子中是记事本+++)没有打开
    appplictionHost.config的正确内容(无论出于何种原因),并且其中的所有更改都不会生效(另请参见@MeanGreen)

    我通过安装并使用Notepad2 x64解决了这个问题。此后,上述变更立即生效并生效

  • PS:关于这个话题的详细讨论,另请参见。

    关于未来的谷歌用户

    这个问题/答案帮了我大忙!我也在使用虚拟路径,但它来自python flask应用程序。除了我想在
    windowsauthentication
    后面有一个管理站点外,该站点的其余部分是
    anonymousAuthentication

    对我来说,这很有效:

  • 在回答以下问题后,允许委派windows和匿名身份验证模块:

  • 更新
    web.config

  • 
    

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

    不幸的是,没有物理
    api
    文件夹,因为这只是反向代理(url重写模块)指向的(Django)web应用程序中的url路径。如果我将应用程序的物理路径设置为与主路径相同的路径(
    c:\inetpub\wwwroot
    ),则会出现以下内部服务器错误:
    无法添加“mimeMap”类型的重复集合项,且唯一键属性“fileExtension”设置为“.appcache”
    哪一个是要设置的正确路径?关于(2):32位应用程序和64位应用程序可以看到不同版本的
    C:\Windows\System32
    ,其中
    applicationHost.config
    位于该版本下。因此,请始终使用64位应用程序打开此文件。使用普通记事本或任何x64文本编辑器都可以。
    <location path="api">
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
      <system.webServer>
        <security>
          <authentication>
            <anonymousAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </location>