使用通过URL传递的加密令牌进行跨域身份验证

时间:2011-04-14 13:05:32

标签: asp.net-mvc-3 cross-domain security

我正在研究如何针对域 abc.com 对用户进行身份验证,然后允许他们访问网站 xyz.com 的安全区域,而无需记录第二天时间。

经过一些阅读后,以下解决方案看起来可行:

  1. 用户通过常规表单身份验证登录网站abc.com

  2. 成功登录后,会在包含guid,用户名和当前日期/时间的共享数据库中创建记录。

  3. 通过加密guid生成安全令牌,然后返回重定向到站点xyz.com,并将安全令牌作为查询字符串参数。

  4. 网站xyz.com接收传入的请求,解密令牌,在数据库中找到匹配的记录(按过去一分钟过滤),然后为相关用户生成表单身份验证cookie,然后将用户重定向回abc.com

  5. 用户现在应该有两个表单身份验证Cookie,每个域一个。

    这种方法基本上是否合理?你知道有什么好的参考资料吗?

1 个答案:

答案 0 :(得分:2)

该方法虽然易受重播攻击,但仍然有效。为什么不直接使用OpenId?它也可以执行未经请求的断言,这听起来像你想要使用。

OpenId不需要共享数据库。