sma*_*ury 50 security authentication dns single-sign-on
我们提供多种在线服务.如果用户从一个服务(on domain1.com)转移到另一个服务(on domain2.com),我们需要开发一个为用户提供快速/简单体验的系统.
一旦他转移到新服务后,是否有一种安全可靠的方式自动登录用户?
如果下面的解决方案完全不安全/错误,请对我大喊大叫.
我们正在考虑一个类似于许多在线服务提供的用于密码恢复的系统 - 它们通过电子邮件发送一个带有唯一哈希的链接,该链接过期,允许他们更改密码.
该domain1.com会生成一个唯一的哈希值,并将其存储在连接到用户以及一个到期时间字段的哈希数据库.
用户将被转移到 domain2.com/auto/?hash=d41d8cd98f00b204e9800998ecf8427e
domain2.com接下来将domain1.com使用散列请求获取有关用户的信息.domain1.com然后将从数据库中删除哈希.domain2.com会记录用户并设置cookie等
可以基于OpenID或OAuth获得相同的结果吗?
Wil*_*ung 126
单点登录(SSO)在概念上非常简单.
domain1.com.domain1.com 看到没有会话cookie.domain1.com 重定向到 sso.comsso.com 提供登录页面,并获取凭据sso.com 为用户设置会话cookiesso.com然后重定向回domain1一个特殊的网址(如domain1.com/ssologin)ssologinURL包含由这基本上是"签署"的参数sso.com.它可以像使用共享密钥加密loginid的base64一样简单.domain1.com 获取加密的令牌,对其进行解密,使用新的登录ID登录用户.domain1 为用户设置会话cookie.现在,下一个案例.
domain2.com,紧随其后domain1并重定向到sso.comsso.com 已经为用户提供了cookie,因此不会显示登录页面sso.com重定向回domain2.com加密信息domain2.com 登录用户.这是其工作原理的基础.你可以使它更健壮,功能更丰富(例如,这是SSOn,但不是SSOff,用户可以"注销" domain1,但仍然登录domain2).您可以使用公钥来签名凭据,您可以请求从SSO服务器传输更多信息(如授权权限等).您可以进行更密切的集成,例如域定期检查用户是否仍拥有SSO服务器的权限.
但是使用重定向通过浏览器进行cookie握手是所有这些SSO解决方案所依据的关键基础.
如果有人能够在中间玩男人并抓住那个哈希,那么他们是否能够窃取跨域转移?显然,需要在需要使用它之前生成并发送给客户端.例如说:
我正在扮演杰克的中间人.Jack访问domain1.com导致哈希准备并发送给他,这样当他访问时,domain2.com他可以发送该哈希作为身份验证.当他访问时domain1.com,他的请求来自我,你返回页面,我抓住哈希并让他继续.我domain2.com使用哈希访问,你现在让我进入domain2.com并删除哈希.在他试图登录domain2.com并被告知他的证书不再有效之前,他并不聪明.
你是如何克服的?
小智 7
除非您在整个会话中使用SSL,否则使用SSL进行跨域登录不会有任何意义.窃取会话cookie就像在网址中使用哈希一样容易.如果会话的其余部分不安全,那么在SSL中隐藏哈希是什么意思.
顶部给出的方法几乎是标准方法.您是否选择使用安全协议完全是另一回事,但仅加密部分会话是没有意义的.
这是一个很好的解决方案.以下两点需要考虑:
您使用术语"哈希",但不清楚您将散列的数据.相反,使用"nonce":由加密质量RNG生成的大(128位)数字.
此外,您没有指定此项,但用户与两个域之间以及域之间的通信必须是安全的.使用SSL对服务器进行身份验证并对nonce保密.
| 归档时间: |
|
| 查看次数: |
35323 次 |
| 最近记录: |