IIS 8.5:更改URL子路径的认证模式

问题描述:

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

实际上,从chensformersAdd authentication to subfolders without creating a web application)的解决方案听起来很有前途。然而,没有得到它运行,因为我错过了节声明

如何配置IIS 8.5来实现这一目标?

经过漫长的尝试,我自己找到了答案。答案是两个分开:

  1. @Tim刘易斯(Allow anonymous authentication for a single folder in web.config?)的回答使我对正确的配置。在applicationHost.configC:\Windows\System32\inetsrv\config文件,我改变了以下几行从DenyAllow

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

    然后web.configC:\inetpub\wwwroot里面,我插入的最后</configuration>标签之前,下面几行:

    <location path="api"> 
        <system.web> 
        <authorization> 
         <allow users="*" /> 
        </authorization> 
        </system.web> 
        <system.webServer> 
        <security> 
         <authentication> 
         <anonymousAuthentication enabled="true" /> 
         </authentication> 
        </security> 
        </system.webServer> 
    </location> 
    

    后重新启动IIS管理器和服务器,应该为子路径覆盖主域的Windows身份验证(/api in m y情况),并且子路径内的每个URL都应公开可用。

  2. 然而,如果这种配置起初不工作,它可能是你选择的编辑器(在我的情况记事本++)不开的appplictionHost.config正确的内容(无论何种原因),并且所有的变化它完全不起作用(另见@MeanGreen Applicationhost.config not showing changes)。

    我解决了它通过安装和使用记事本2 x64http://www.flos-freeware.ch/notepad2.html)。在此之后,上述更改生效并立即生效。

PS:另请参阅http://forums.iis.net/t/1233382.aspx?IIS+8+5+Change+authentification+mode+for+url+sub+path了解有关此主题的更长讨论。

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

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

+1

不幸的是,没有物理'api'文件夹,因为这只是反向代理(URL重写模块)指向的(Django)Web应用程序内的url路径。 如果我将应用程序的物理路径设置为与主路径相同的路径('c:\ inetpub \ wwwroot'),我会得到以下**内部服务器错误**: '不能添加重复的类型集合条目'mimeMap'具有唯一的键属性'fileExtension'设置为'.appcache'' 哪个是正确的路径设置? – nrbrt