加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:41:21 所属栏目:asp.Net 来源:网络整理
导读:我有一个域http://abc.com和一个子域名http://sub.abc.com.我通过共享表单身份验证cookie来实现两个站点之间的单一登录.这通过使两个站点在machineKey中共享validationKey和decryptKey来实现. 当用户点击子域中的页面时,我希望用户在根域中进行身份验证,并重
我有一个域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来构建重定向网址.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读