我们有一个客户端Intranet Web应用程序在IIS 8.5上作为远程代理运行,并启用了Windows身份验证。现在,我们需要在URL子路径/api/
上禁用 Windows身份验证并启用匿名身份验证,以使此路径中的所有数据在客户端Intranet域中公开可用
实际上, chensformers (Add authentication to subfolders without creating a web application)的解决方案听起来很有希望。但是由于我错过了部分声明,所以还没有让它运行。
如何配置IIS 8.5来实现此目的?
答案 0 :(得分: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都应该公开发布。
但是,如果此配置最初不起作用,则可能是您选择的编辑器(在我的情况下 Notepad ++ )未打开{{{}的正确内容1}}(无论出于何种原因)并且其中的所有更改都不会生效(另请参阅@MeanGreen Applicationhost.config not showing changes)。
我通过安装和使用 Notepad2 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,以便对此主题进行更长时间的讨论。
答案 1 :(得分:0)
首先,您需要将 api 文件夹转换为应用程序,即右键单击文件夹=&gt;转换为应用程序。在中央窗格中将其转换为应用程序后,双击身份验证=&gt;选择匿名身份验证并启用它。禁用所有其他身份验证模式。
P.S。 - 您可以尝试不转换为应用程序。我没有测试过,所以不确定它是否只是作为一个文件夹。
答案 2 :(得分:0)
面向未来的Google员工。
此问题/答案帮助了我很多!我也正在使用虚拟路径,除了它来自python flask应用程序。除了我想要在windowsauthentication
之后的管理站点外,其余站点为anonymousAuthentication
。
这对我来说很有效:
根据以下答案允许两个窗口和匿名身份验证模块的委派:https://stackoverflow.com/a/12343141/7838574
更新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管理器或服务器。