在我的 MVC 应用程序中,我使用的是 WIF。我使用 Visual Studio 内置工具添加了 STS 参考。FedUtil 在 web.config 中生成了一些条目:
<microsoft.identityModel>
<service>
<claimsAuthenticationManager type="Social.Core.Security.RolesAwareClaimsAuthenticationManager, Social.Core" />
<audienceUris>
<add value="http://app.something.com/" />
</audienceUris>
...
如您所见,我还编写了自定义 ClaimsAuthenticationManager 来向已从 STS 收到的声明添加一些声明。
不过,在应用程序中,我限制了页面:
public class ProfileController : BaseController
{
[Authorize]
public virtual ActionResult Index()
{
// restricted area
}
}
我在受限操作上添加了 AuthorizeAttribute。我只需要在输入app.something.com/profile/index时进行身份验证。不幸的是,现在登录表单会在进入应用程序的任何部分时显示,例如主页app.something.com。
如何将 WIF 身份验证与 AuthorizeAttribute 关联并仅授权我需要的内容?也许我需要在 web.config 或 STS 中的某处添加 app.something.com/profile/index ?有什么线索吗?