我有一个支持智能卡的网站,在IIS中,禁用匿名身份验证,启用SSL。
IIS根目录也禁用了匿名身份验证,但启用了Active Directory客户端证书身份验证 还安装了静态内容角色服务。
在web.config中,我有
<authorization>
<deny users="?"/>
</authorization>
之后,我有
<location path="/css/main.css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
在css
和images
文件夹中,我还有web.config包含:
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>
我使用运行自定义标识的AppPool,比方说APUser
在这些文件夹的Web服务器上,我有权限设置为APUser,IUSR,匿名登录,用户,IIS_IUSRS和Everyone读取。
网址位于浏览器的受信任网站上。
最初,图像和css返回错误500(使用带有开发工具的网络捕获)。登录后,它们显示正常。 在服务器上运行同样的问题。
如果我在IIS中启用匿名身份验证,请禁用Active Directory客户端证书,并将deny users="?"
更改为allow users="*"
,一切正常。
我缺少什么来禁用匿名身份验证,但仍显示images / css?
答案 0 :(得分:0)
web.config授权设置按顺序工作。这是因为您通过使用以下内容拒绝未经身份验证的用户,因此它不再读取您的配置。
<authorization>
<deny users="?"/>
</authorization>
阅读here。
备注在运行时,授权模块遍历 和标记,直到找到适合的第一个访问规则 特定用户。然后它授予或拒绝访问URL资源 取决于找到的第一个访问规则是a还是a 规则。 Machine.config文件中的默认授权规则 是这样,默认情况下,允许访问,除非 否则配置。
更改它,以便它们在您拒绝未经身份验证的用户部分之前到达。
<location path="/css/main.css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<authorization>
<deny users="?"/>
</authorization>
答案 1 :(得分:0)
来自&#34;允许&#34; on MSDN here
&#34;用户
必需的字符串属性。
以逗号分隔的拒绝访问资源的用户名列表。问号(?)拒绝匿名用户,星号(*)表示拒绝所有用户访问。&#34;
现在,我认为那里有一个错误,他们想说&#34;允许&#34;。
所以你想要<allow users="?,*" />
答案 2 :(得分:0)
在“身份验证后模拟客户端”的组策略下,添加IIS_IUSRS