sso使用memcache的疑问

小在在 2014-09-08 09:46:45
多站点间实现单点登陆
目标:
oa站 www.oa.com,论坛域 www.bbs.com,假设论坛没有登陆功能,用户从oa登陆成功后,点击bbs的跳转链接或直接在地址栏中访问bbs,都为登陆成功状态。

简单架构:独立的memcache服务器用来做session共享;两个站有各自的user表,但数据有一定的关联,如oa用户表的id和bbs用户表的id一样;

我的实现:
用户从oa登陆后,在memcache中生成用户id相关的缓存数据user_id=>xxx,然后使用p3p协议生成bbs系统下的cookie,此cookie用来通过一定的加密算法取memcache中的user_id=>xxx,用户跳转或是直接访问bbs时,读取cookie数据,后端解密后根据memcache中的数据得到bbs中的用户数据,将之写session并标识登陆成功;

疑问:
1、我使用memcache共享这部分用户数据是不是多余的?
2、sso通常中讲memcache作session共享是将哪部分数据共享?具体如何操作
3、sso中使用memcache作session共享这种方案中用不用cookie?是跨域吗?
4、实现sso不使用cookie能不能实现?
...全文
327 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starbhhc 2016-05-31
  • 打赏
  • 举报
回复
楼主实现了吗?多站点间实现单点登陆???我和你一样的情况。求回复,,解决方案。。
okkk 2014-09-12
  • 打赏
  • 举报
回复
引用 10 楼 whg4585 的回复:
[quote=引用 9 楼 okkk 的回复:] 自己实现SSO,那么必然会实现url参数传递的方式,为了保护token,在第三方使用时 才会出项只能使用cookie的情况。
这种方式不能通过地址栏直接访问其它站来展现登陆状态[/quote] 对的。url方式限制很多,只是可靠性高,无javascript支持也可运行。 而cookie方式可以不访问服务器在浏览器内直接判断用户状态的能力,对减小SSO服务器端压力很有帮助。
小在在 2014-09-10
  • 打赏
  • 举报
回复
引用 9 楼 okkk 的回复:
自己实现SSO,那么必然会实现url参数传递的方式,为了保护token,在第三方使用时 才会出项只能使用cookie的情况。
这种方式不能通过地址栏直接访问其它站来展现登陆状态
小在在 2014-09-09
  • 打赏
  • 举报
回复
引用 6 楼 okkk 的回复:
4、实现sso不使用cookie能不能实现? 通过url参数更可靠,但需要更多地服务器端代码
要求直接访问其它站点也是登陆状态,而不通过url传参,只能用cookie吧
okkk 2014-09-09
  • 打赏
  • 举报
回复
4、实现sso不使用cookie能不能实现? 通过url参数更可靠,但需要更多地服务器端代码
okkk 2014-09-09
  • 打赏
  • 举报
回复
1、我使用memcached共享这部分用户数据是不是多余的? 看你是否需要跨站点使用这部分数据,不需要时就是多余的。 2、sso通常中讲memcached作session共享是将哪部分数据共享?具体如何操作 同上。 一般在SSO中可以考虑在memcached中存放全局权限位,做权限的快速验证。但你说的集成方式权限分布在各个系统,应该不需要这部分数据。 memcached作session共享提供了一种跨进程,跨系统的一种数据传递方法,P3P只能小批量在域间传递数据,而memcached连图片都可以传递,而且浏览器,客户端程序,手机应用都可以。 3、sso中使用memcache作session共享这种方案中用不用cookie?是跨域吗? Cookie一般用来传递token,token一般是一次性的 数据,需要在一个系统启动另一个系统时做为参数传入。 跨域是指浏览器不同域之间的数据传递,memcached做为服务端组件和它没有关系。 Token传递,在客户端程序中也是需要的,是通过参数传入 4、实现sso不使用cookie能不能实现? 通过url参数更可靠
小在在 2014-09-09
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
我曾测试过,p3p只能写同域的cookie。 看看你是如何写的
大概是这样子: 本地搭建 www.a.com和www.b.com www.b.com==> index.php 代码是通过p3p写入一段cookie, www.a.com==>index.php 里面调用 <img src='http://www.b.com/index.php' />,访问www.a.com/index.php后就会在www.b.com域下生成cookie
okkk 2014-09-09
  • 打赏
  • 举报
回复
自己实现SSO,那么必然会实现url参数传递的方式,为了保护token,在第三方使用时 才会出项只能使用cookie的情况。
okkk 2014-09-09
  • 打赏
  • 举报
回复
引用 7 楼 whg4585 的回复:
[quote=引用 6 楼 okkk 的回复:] 4、实现sso不使用cookie能不能实现? 通过url参数更可靠,但需要更多地服务器端代码
要求直接访问其它站点也是登陆状态,而不通过url传参,只能用cookie吧[/quo 主要是看有没有服务器端SSO接口,如果可以在服务器端通过token进行登录验证,那么url参数是最方便的。如果像taobao之类只能在浏览器客户端使用的SSO,那么url参数方式就不行。
xuzuning 2014-09-09
  • 打赏
  • 举报
回复
我曾测试过,p3p只能写同域的cookie。 看看你是如何写的
小在在 2014-09-09
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
仅使用p3p智能实现同域中的单点登录,你多用几款浏览器就可发现这一点 使用 memcache 存储登录用户信息,只是为了后续检查起来方便些,与 sso 无直接关系
版主的意思是p3p只能写同域的cookie,不能跨域写cookie? 但我在本机上测试是可以跨域写cookie的,然后我想其它域通过写到域下的cookie来实现单点登陆,这个方案如何? 版主有没有好些的方案?(不使用cas或类似的系统)
xuzuning 2014-09-09
  • 打赏
  • 举报
回复
仅使用p3p智能实现同域中的单点登录,你多用几款浏览器就可发现这一点 使用 memcache 存储登录用户信息,只是为了后续检查起来方便些,与 sso 无直接关系

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧