IIS 8.5:更改URL子路径的认证模式
我们有一个客户端Intranet Web应用程序,作为启用Windows身份验证的IIS 8.5上的远程代理运行。现在,我们需要禁用Windows身份验证,并在URL子路径/api/
上启用匿名身份验证,以使此路径中的所有数据公开地位于客户端Intranet域中。IIS 8.5:更改URL子路径的认证模式
实际上,从chensformers(Add authentication to subfolders without creating a web application)的解决方案听起来很有前途。然而,没有得到它运行,因为我错过了节声明。
如何配置IIS 8.5来实现这一目标?
经过漫长的尝试,我自己找到了答案。答案是两个分开:
-
@Tim刘易斯(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
从C:\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都应公开可用。 -
然而,如果这种配置起初不工作,它可能是你选择的编辑器(在我的情况记事本++)不开的
appplictionHost.config
正确的内容(无论何种原因),并且所有的变化它完全不起作用(另见@MeanGreen Applicationhost.config not showing changes)。我解决了它通过安装和使用记事本2 x64(http://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. - 您可以尝试不转换成应用程序。我还没有测试过,所以不知道它是否可以作为一个文件夹。
不幸的是,没有物理'api'文件夹,因为这只是反向代理(URL重写模块)指向的(Django)Web应用程序内的url路径。 如果我将应用程序的物理路径设置为与主路径相同的路径('c:\ inetpub \ wwwroot'),我会得到以下**内部服务器错误**: '不能添加重复的类型集合条目'mimeMap'具有唯一的键属性'fileExtension'设置为'.appcache'' 哪个是正确的路径设置? – nrbrt