如何解决使用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请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。