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

Asp.net mvc 3 使用通过URL传递的加密令牌进行跨域身份验证,asp.net-mvc-3,cross-domain,security,Asp.net Mvc 3,Cross Domain,Security,我正在研究如何根据域abc.com对用户进行身份验证,然后允许他们访问站点xyz.com的安全区域,而无需再次登录 经过一番阅读,以下解决方案看起来是可行的: 用户通过常规表单身份验证登录到网站abc.com 成功登录后,将在共享数据库中创建一条记录,其中包含guid、用户名和当前日期/时间 通过加密guid生成安全令牌,然后返回到站点xyz.com的重定向,安全令牌作为querystring参数 站点xyz.com接收传入的请求,解密令牌,在数据库中找到匹配的记录(按过去一分钟过滤),然后为相

我正在研究如何根据域abc.com对用户进行身份验证,然后允许他们访问站点xyz.com的安全区域,而无需再次登录

经过一番阅读,以下解决方案看起来是可行的:

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

  • 成功登录后,将在共享数据库中创建一条记录,其中包含guid、用户名和当前日期/时间

  • 通过加密guid生成安全令牌,然后返回到站点xyz.com的重定向,安全令牌作为querystring参数

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

  • 用户现在应该有两个表单身份验证cookie,每个域一个


    这种做法基本上合理吗?您知道有什么好的参考资料吗?

    该方法虽然容易受到重播攻击,但仍然有效。为什么不直接使用OpenId呢?它还可以做一些未经请求的断言,这听起来像是您想要使用的


    OpenId不需要共享数据库。

    Yep-我发现OpenId用于身份验证,OAuth用于委托授权更好。谢谢