当前位置:  开发笔记 > 编程语言 > 正文

基于Cookie的SSO

如何解决《基于Cookie的SSO》经验,为你挑选了2个好方法。

如何在没有sso服务器的情况下实现基于cookie的单点登录?我想在浏览器上只使用cookie共享跨多个应用程序登录的用户.

在我看来它的工作方式如下:

用户登录应用程序

应用程序验证凭据,然后在存储用户名的浏览器上设置cookie(可以用私钥编码)

如果用户打开另一个应用程序,它会搜索cookie并读取值上的用户名(使用键解码字符串)

在该解决方案中,用户可以看到(另一个用户的)浏览器cookie并且获取用户名的字符串.然后他可以将它添加到自己的cookie上(不好!).

有一些安全的方法来做到这一点?使用基于时间戳的控件或类似的东西?

提前致谢.

再见

PS我知道我的英语不是很好......对不起!



1> Stefan Kenda..:

这是不可能的.Cookie对每个域都是唯一的,一个域无法读取其他域的Cookie.


如果域具有共同的主域,则可以共享cookie.`foo.example.com`和`bar.example.com`可以共享一个`.example.com` cookie.
浏览器不允许这样做.想想有多危险 - 恶意网站能够为您的网上银行网站设置cookie ...

2> 小智..:

有一个简单的解决方案,不使用sso服务器,但不使用1个常见的cookie,因为我们知道cookie不在域之间共享.

当用户在site-a.com上进行身份验证时,您在site-a.com域上设置了cookie.然后在site-b.com上,链接来自site-a.com的动态javascript,由有权访问创建的cookie的服务器端脚本(php等)生成,然后在site-b.com上复制相同的cookie在客户端使用js.现在两个站点都具有相同的cookie,而无需要求用户重新登录.

您可以使用site-a和site-b都知道如何解码的方法对cookie值进行加密/编码,以便site-b能够验证他的cookie副本.使用一个共同的秘密,没有它就不可能编码或解码.

您看到在site-b.com的第一页加载时,cookie不存在,因此如果您认为有必要,您可能希望在设置cookie后重新加载页面.


会话cookie应始终具有仅HTTP属性集,以防止它们通过JavaScript读取.这可以防止会话被XSS或JavaScript注入漏洞窃取.启用该属性后,此解决方案将无法运行.
存储可通过javascript访问的会话ID cookie具有巨大的安全风险。这样的cookie应该是“仅HTTP”
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有