为了账号安全,请及时绑定邮箱和手机立即绑定

跨域登录-从一个域转移到另一个域时,如何自动登录用户

/ 猿问

跨域登录-从一个域转移到另一个域时,如何自动登录用户

倚天杖 2019-12-10 13:08:41

我们提供许多在线服务。我们需要开发一种系统,如果用户从一项服务(上domain1.com)转移到另一项服务(上),则可以为用户提供快速/简单的体验domain2.com

用户转移到新服务后,是否存在一种安全可靠的方式来自动登录?

如果以下解决方案完全不安全/错误,请对我大喊。

我们正在考虑一种类似于许多在线服务提供的用于密码恢复的系统-通过电子邮件向他们发送一个链接,该链接具有唯一的哈希值,该哈希值已过期,允许他们更改密码。

domain1.com站点将生成一个唯一的哈希并将其存储在数据库中,该哈希将链接到用户以及到期日期时间字段。

用户将被转移到 domain2.com/auto/?hash=d41d8cd98f00b204e9800998ecf8427e

domain2.com接下来将domain1.com使用哈希向发出请求,以获取有关用户的信息。domain1.com然后从数据库中删除哈希。domain2.com将登录用户并设置cookie等。

基于OpenID或OAuth的东西能否达到相同的结果?


查看完整描述

3 回答

?
POPMUISE

单一登录(SSO)在概念上非常简单。

  • 用户点击数domain1.com

  • domain1.com 看到没有会话cookie。

  • domain1.com 重定向到 sso.com

  • sso.com 显示登录页面并获取凭据

  • sso.com 为用户设置会话cookie

  • sso.com然后重定向回domain1特殊网址(如domain1.com/ssologin

  • ssologin网址包含一个基本上由进行“签名”的参数sso.com。就像使用共享密钥对loginid进行加密的base64一样简单。

  • domain1.com 获取加密的令牌,对其进行解密,然后使用新的登录ID登录用户。

  • domain1 为用户设置会话cookie。

现在,下一种情况。

  • 用户点击domain2.com,然后点击domain1并重定向到sso.com

  • sso.com 已经有该用户的cookie,因此不显示登录页面

  • sso.com重定向回domain2.com加密信息

  • domain2.com 登录用户。

这就是工作原理的基础。您可以使其更强大,功能更丰富(例如,这是SSOn,但不是SSOff,用户可以“注销” domain1,但仍可以登录domain2)。您可以使用公共密钥对凭据进行签名,也可以请求从SSO服务器传输更多信息(例如授权权限等)。您可以进行更紧密的集成,例如,域将定期检查用户是否仍具有SSO服务器的权限。

但是,使用重定向程序通过浏览器进行的cookie握手是所有这些SSO解决方案所基于的关键基础。




查看完整回答
反对 回复 2019-12-11
?
犯罪嫌疑人X

如果某人能够在中间扮演男人并抓住该哈希,那么他们是否能够窃取跨域转移?显然,它需要先生成并发送给客户端,然后才需要使用它。举例来说:

我在扮演杰克的中间人。杰克访问domain1.com将导致准备好哈希并将其发送给他,以便当他访问时,domain2.com他可以将该哈希作为身份验证发送。当他访问时domain1.com,他的请求通过我来,您返回页面,我抓取哈希并让他继续。我domain2.com使用哈希访问,您现在让我进入domain2.com并删除了哈希。在尝试登录domain2.com并被告知他的凭据不再有效之前,他不是一个明智的选择。

你如何克服呢?



查看完整回答
反对 回复 2019-12-11
?
UYOU

除非您在整个会话中都使用SSL,否则跨域登录将不会使用SSL。窃取会话Cookie就像在URL中使用哈希一样容易。如果会话的其余部分不安全,那么在SSL中隐藏哈希的意义何在?

顶部给出的方法几乎是标准方法。是否选择使用安全协议完全是另一回事,但是仅加密部分会话将毫无意义。




查看完整回答
反对 回复 2019-12-11
  • 3 回答
  • 0 关注
  • 249 浏览
我要回答
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信