asp.net – 表单认证ReturnUrl和子域名用于单点登录

前端之家收集整理的这篇文章主要介绍了asp.net – 表单认证ReturnUrl和子域名用于单点登录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个域http://abc.com和一个子域名http://sub.abc.com.我通过共享表单身份验证cookie来实现两个站点之间的单一登录.这通过使两个站点在machineKey中共享validationKey和decryptKey来实现.

用户点击子域中的页面时,我希望用户在根域中进行身份验证,并重定向到子域.用户当前被重定向登录页面,但是ReturnUrl想要重定向到根站点.

例如.目前:http://abc.com/login.aspx?ReturnUrl=/secure/default.aspx

但我想要:http://abc.com/login.aspx?ReturnUrl=http://sub.abc.com/secure/default.aspx

怎么可以实现?

在我的子域名的web.config中,我有一个这样配置的auth:

<authentication mode="Forms">
  <forms name=".ASPNET" loginUrl="http://abc.com/login.aspx" protection="All" timeout="1440" path="/" domain="abc.com" enableCrossAppRedirects="true" />
</authentication>

解决方法

我通过在我的子域中的表单元素中设置一个querystring来解决这个问题:
<authentication mode="Forms">
    <forms name=".ASPNET" loginUrl="http://abc.com/login.aspx?returnsite=sub" protection="All" timeout="1440" path="/" domain="abc.com" enableCrossAppRedirects="true" />
</authentication>

然后在我的主要网站的验证码中,我检查该查询字符串.如果它存在我通过将我的子域名附加到returnurl来构建重定向网址.

返回网站的查询字符串真的只是作为一个标志,我需要重定向到一个已知的子域,否则它将只与重定向到当前域.这应该(理论上)阻止跨站脚本.

原文链接:https://www.f2er.com/aspnet/250724.html

猜你在找的asp.Net相关文章