使用Windows Identity Foundation重定向到自定义登录页面

| 我在MVC3站点中将Windows Identity Foundation与Azure \的AppFabric访问控制服务一起使用。我要弄清楚的是,如果我在控制器或操作上具有AuthorizeAttribute,如何控制WIF将用户重定向到的位置。 (这是我第一次使用WIF,似乎没有很多有用的信息。) 我禁用了自动转发功能,因为它一直将我发送到默认的ACS身份验证页面。我想使用我的自定义登录页面将用户保留在我的网站上,但似乎无法弄清楚需要勾选哪些设置才能执行此操作。 WIF本身是否有办法告诉它重定向到我的登录页面,还是我必须编写自己的AuthorizeAttribute才能为我做这件事? 谢谢! 编辑: 由于最近有一些活动,我想我会写出一些发现。不幸的是,我并不是100%导致一切正常运行(这么多的活动部件)的原因,但最终我确实得到了WIF重定向到我的登录页面。 我这样做时没有在程序中添加任何代码,而是与我发现的示例略有不同。我发现保留web.config的表单身份验证部分可以使所有工作正常进行。在我的web.config中,我具有普通形式的auth条目:
<system.web>
    <httpRuntime requestValidationMode=\"2.0\" />
    <authentication mode=\"Forms\" >
        <forms loginUrl=\"~/Account/Login\" timeout=\"2880\" />
    </authentication>
    ...
</system.web>
免责声明:我不知道这是否是使用WIF进行处理的正确方法-它只是解决了我的问题。我可以在控制器或操作上使用常规的[Authorize]属性,并且可以正确重定向到登录页面,就像使用表单身份验证一样。     
已邀请:
        我已经做了一些示例工作,根据重定向之前您需要执行的操作,可能没有帮助。 在global.asax中,我向\“ RedirectingToIdentityProvider \”事件添加了一个处理程序,并对其进行了自定义以添加诸如whr参数。为此,您需要首先向ConfigurationCreated事件添加一个处理程序:
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterRoutes(RouteTable.Routes);

    FederatedAuthentication.ServiceConfigurationCreated += new EventHandler<Microsoft.IdentityModel.Web.Configuration.ServiceConfigurationCreatedEventArgs>(FederatedAuthentication_ServiceConfigurationCreated);   
}

    void FederatedAuthentication_ServiceConfigurationCreated(object sender, Microsoft.IdentityModel.Web.Configuration.ServiceConfigurationCreatedEventArgs e)
    {
        var m = FederatedAuthentication.WSFederationAuthenticationModule;
        m.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(m_RedirectingToIdentityProvider);
    }

    void m_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
    {
        var sim = e.SignInRequestMessage;
        sim.HomeRealm = \"Google\";
    }
这适用于标准的Authorize属性。 如果这个扩展点还不够,那么您可以编写我们自己的属性来完全控制该过程。 看样本#3或#7。不是MVC3,而是在MVC2上,并且非常接近您的工作。 http://claimsid.codeplex.com 此过程描述如下: http://msdn.microsoft.com/zh-CN/library/ff966481.aspx#sec14     
        我相信您可以在以下示例中找到要执行的操作:http://acs.codeplex.com/wikipage?title=MVC3%20Custom%20Login&referringTitle=Samples 另外,请检查本页上有关passiveRedirectEnabled属性的“联合身份验证的配置”部分: http://msdn.microsoft.com/en-us/library/ee517293.aspx   PassiveRedirectEnabled-布尔值-默认为false   控制是否启用了模块以自动重定向   未经授权的STS请求。     

要回复问题请先登录注册