在 Visual Studio 2012 的Identity and Access...扩展的帮助下,我们已经在 ASP.NET 4.5 MVC 4 项目中成功配置了 Windows Identity Foundation (WIF) 。但无法从授权中排除特定路径以允许匿名访问.
当我们访问我们的默认路由(即/Home
)时,被动重定向会将我们重定向到配置的颁发者 Uri。这是正确的。但是现在假设我们要从 STS 身份验证中排除路径/Guest
,以便每个人都可以访问http://ourhost/Guest
而无需路由到 STS 颁发者。只有静态文档位于那里。
片段来自Web.config
:
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="http://ourhost/" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="9B74****40D0" name="OurSTS" />
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="http://oursts/Issue" realm="http://ourhost/" reply="http://ourhost/" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>
此外,我们有...
<system.webServer>
<!-- ... -->
<modules runAllManagedModulesForAllRequests="true">
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
最后:
<system.web>
<!-- ... -->
<authentication mode="None" />
</system.web>
我们尝试了以下方法但没有成功:
<location path="~/Guest"> <!-- also "/Guest" is not working -->
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
我们还尝试将一个小的 Web.config 文件放入此文件夹,但没有成功。无论我们在浏览器中定位到哪个 Uri,我们总是被重定向。
实现此目的的正确方法是什么?
编辑
删除了之前的“已接受回答”,将“已接受回答”设置为Eugenios 回答,因为这是更有用的回答。