`
jinyanhui2008
  • 浏览: 314178 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

关于sso单点登录系统的一些想法

阅读更多

今天晚上跟朋友聊sso,简单整理了下思路,特此记录。

系统方案基于httpservice,在此不探讨用户注册、停用等问题,只探讨登录问题。
必要条件:客户端需要维护自己的session队列,系统基于session实现单点登录

客户端、服务器端均需要提供几个连接 session注销、session登录、session校验等几个url

用户登录,当用户请求需要权限页面时,首先请求"session校验"判断用户是否已经在服务器登录了,如果已经登录服务器返回登录用户名信息,完成登录,否则跳转到服务器"session登录"完成用户登录,并跳转回原页面。
当用户在客户端点击注销按钮通知服务器用户注销,服务器发送到所有客户端"session注销"通知此用户下线。
服务器需要维护各个客户端sessionid与服务器sessionid的对应关系,注销时直接通过sessionid通知客户端做相应操作即可。

sso服务器主要工作需要维护各个客户端的sessioid对应关系、并定时轮询客户端"session校验",维护session,保证用户不失效。

sso服务器如果重启后,原有客户端的session注销会存在异常,但是这种异常通常是短时间的, 当客户端session失效异常即可消除,目前没有想到好的方法解决这个问题。
重启后,sso服务器应该立即对所有客户端的session进行轮询,将服务器数据队列完成创建,以便用户登录sso时完成对了同步。
要解决的话就必须保证浏览器客户端访问一次sso服务器,当完成一次访问后即可完成对列的维护。

此方案可以解决基于cookie的sso问题

缺点,不能实现匿名登录,不过应该可以变相实现,问题不大。
另外,必须保证sso服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。

 

分享到:
评论
10 楼 jinyanhui2008 2010-11-09  
flysnowxf 写道
引用
sso服务器如果重启后,原有客户端的session注销会存在异常,但是这种异常通常是短时间的, 当客户端session失效异常即可消除,目前没有想到好的方法解决这个问题。

你是说sso服务器重启后,服务端的session会丢失?session可以通过memcached之类的分布式缓存保存在其他地方,不要和sso服务器放在一起。

这个可以考虑,呵呵,又学了一招
9 楼 flysnowxf 2010-11-08  
引用
sso服务器如果重启后,原有客户端的session注销会存在异常,但是这种异常通常是短时间的, 当客户端session失效异常即可消除,目前没有想到好的方法解决这个问题。

你是说sso服务器重启后,服务端的session会丢失?session可以通过memcached之类的分布式缓存保存在其他地方,不要和sso服务器放在一起。
8 楼 jinyanhui2008 2010-11-08  
<div class="quote_title">ywlqi 写道</div>
<div class="quote_div">
<div class="quote_title">jinyanhui2008 写道</div>
<div class="quote_div">
<p>今天晚上跟朋友聊sso,简单整理了下思路,特此记录。<br><br>系统方案基于httpservice,在此不探讨用户注册、停用等问题,只探讨登录问题。<br>必要条件:客户端需要维护自己的session队列,系统基于session实现单点登录<br><br>客户端、服务器端均需要提供几个连接 session注销、session登录、session校验等几个url<br><br>用户登录,当用户请求需要权限页面时,首先请求"session校验"判断用户是否已经在服务器登录了,如果已经登录服务器返回登录用户名信息,完成登录,否则跳转到服务器"session登录"完成用户登录,并跳转回原页面。<br>当用户在客户端点击注销按钮通知服务器用户注销,<span style="color: #ff0000;">服务器发送到所有客户端"session注销"通知此用户下线</span>。<br>服务器需要维护各个客户端sessionid与服务器sessionid的对应关系,注销时直接通过sessionid通知客户端做相应操作即可。<br><br>sso服务器主要工作需要维护各个客户端的sessioid对应关系、并<span style="color: #ff0000;">定时轮询客户端"session校验",</span>维护session,保证用户不失效。<br><br>sso服务器如果重启后,原有客户端的session注销会存在异常,但是这种异常通常是短时间的, 当客户端session失效异常即可消除,目前没有想到好的方法解决这个问题。<br>重启后,sso服务器应该立即对所有客户端的session进行轮询,将服务器数据队列完成创建,以便用户登录sso时完成对了同步。<br>要解决的话就必须保证浏览器客户端访问一次sso服务器,当完成一次访问后即可完成对列的维护。<br><br>此方案可以解决基于cookie的sso问题<br><br>缺点,不能实现匿名登录,不过应该可以变相实现,问题不大。<br>另外,必须保证sso服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。</p>
<p> </p>
</div>
<p>基于什么样的考虑需要这种解决方案?</p>
</div>
<p>这个也没基于什么,主要是闲聊时说起来的,具体实现未深入考虑</p>
7 楼 ywlqi 2010-11-08  
<div class="quote_title">jinyanhui2008 写道</div>
<div class="quote_div">
<p>今天晚上跟朋友聊sso,简单整理了下思路,特此记录。<br><br>系统方案基于httpservice,在此不探讨用户注册、停用等问题,只探讨登录问题。<br>必要条件:客户端需要维护自己的session队列,系统基于session实现单点登录<br><br>客户端、服务器端均需要提供几个连接 session注销、session登录、session校验等几个url<br><br>用户登录,当用户请求需要权限页面时,首先请求"session校验"判断用户是否已经在服务器登录了,如果已经登录服务器返回登录用户名信息,完成登录,否则跳转到服务器"session登录"完成用户登录,并跳转回原页面。<br>当用户在客户端点击注销按钮通知服务器用户注销,<span style="color: #ff0000;">服务器发送到所有客户端"session注销"通知此用户下线</span>。<br>服务器需要维护各个客户端sessionid与服务器sessionid的对应关系,注销时直接通过sessionid通知客户端做相应操作即可。<br><br>sso服务器主要工作需要维护各个客户端的sessioid对应关系、并<span style="color: #ff0000;">定时轮询客户端"session校验",</span>维护session,保证用户不失效。<br><br>sso服务器如果重启后,原有客户端的session注销会存在异常,但是这种异常通常是短时间的, 当客户端session失效异常即可消除,目前没有想到好的方法解决这个问题。<br>重启后,sso服务器应该立即对所有客户端的session进行轮询,将服务器数据队列完成创建,以便用户登录sso时完成对了同步。<br>要解决的话就必须保证浏览器客户端访问一次sso服务器,当完成一次访问后即可完成对列的维护。<br><br>此方案可以解决基于cookie的sso问题<br><br>缺点,不能实现匿名登录,不过应该可以变相实现,问题不大。<br>另外,必须保证sso服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。</p>
<p> </p>
</div>
<p>基于什么样的考虑需要这种解决方案?</p>
6 楼 jitabc 2010-11-08  
josso很方便滴。
5 楼 jinyanhui2008 2010-11-08  
grandboy 写道
建议下次再记录的时候画一个图,不单大家看着方便,您将来自己看起来也更清晰。

这个思想都差不多,我以前接触过商业的产品,不过最近也要考虑自己给公司内容的产品实现一个了。所以对这个话题有点兴趣,不过看文字绕来绕去的比较累,不过还是看完了。


呵呵,这个想法是基于我们公司产品实施以及工作中遇到的实际问题总结的,这个只能算是一个解题思路,具体实现还是没有考虑,因为公司毕竟有成熟的产品。
4 楼 xsharp 2010-11-08  
楼主可以再深入一些, 其实目前有不少开放的完善的协议可以借鉴.
3 楼 grandboy 2010-11-07  
建议下次再记录的时候画一个图,不单大家看着方便,您将来自己看起来也更清晰。

这个思想都差不多,我以前接触过商业的产品,不过最近也要考虑自己给公司内容的产品实现一个了。所以对这个话题有点兴趣,不过看文字绕来绕去的比较累,不过还是看完了。
2 楼 jinyanhui2008 2010-11-07  
xuwenkeke 写道
可以考虑使用耶鲁大学开源项目  http://www.jasig.org/cas

引用
另外,必须保证sso服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。

耶鲁的CAS中, 有解决的方案.


呵呵,CAS我是知道的,不过没有仔细研究,因为我们公司有成熟的SSO产品,这个主要是跟以哥们聊天闲聊时总结的,顺手给记下来的
1 楼 xuwenkeke 2010-11-07  
可以考虑使用耶鲁大学开源项目  http://www.jasig.org/cas

引用
另外,必须保证sso服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。

耶鲁的CAS中, 有解决的方案.

相关推荐

    sso单点登录ppt.ppt

    sso单点登录ppt.ppt

    baigo SSO单点登录系统 v3.0.1.zip

    baigo SSO单点登录系统 v3.0.1更新日志 增加数据清理功能 baigo SSO单点登录系统简介 baigo SSO 是一款基于 HTTP 协议的单点登录系统,baigo SSO 以简单为设计、开发的宗旨,安装部署简单、使用简单。baigo SSO ...

    sso单点登录源代码

    sso单点登录源代码sso单点登录源代码sso单点登录源代码sso单点登录源代码sso单点登录源代码

    SSO单点登录

    SSO单点登录

    PHP 使用TP5.0 实现SSO单点登录

    因为公司要实现SSO单点登录的效果,最近在网上找了一些资料,但是都没有好用的, 所以自己用PHP 使用TP5.0 实现了SSO单点登录,可以跨多个域名。 下载后在本地配置好 A,B,C 3个网站,就可以模拟效果了。

    baigo SSO单点登录系统

    baigo SSO 是一款基于 HTTP 协议的单点登录系统,baigo SSO 以简单为设计、开发的宗旨,安装部署简单、使用简单。baigo SSO 没有复杂的菜单,没有深奥的概念,没有晦涩难懂的名词,一切崇尚简单。

    SSO单点登录解决方案

    SSO单点登录解决方案,包括HP灵动单点登录系统演示文件和其他的资料文件

    SSO 单点登录实例

    SSO 单点登录(Single Sign On)的简称, SSO是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    SSO单点登陆解决方案

    一个实现SSO方案的构想SSO单点登陆解决方案

    spring+springMvc简单实现SSO单点登录

    利用springMvc 实现的简单的单点登录Demo,内含三个小Mavn项目分别是 1、认证中心SSOServer 2、子系统1SSOClient1 3、子系统2SSOClient2 文章请参考 http://blog.csdn.net/qq_31183297/article/details/79419222

    sso单点登录demo

    sso单点登录demo,集成shiro 完美实现单点登录demo,共享session

    .net的sso单点登录

    sso单点登录sso单点登录sso单点登录sso单点登录

    单点登录系统(SSO)+权限管理

    SSO 单点登录系统 +源码 +部署文档+架构图+权限管,包含项目数据库

    redmine配置sso单点登录插件

    redmine本身没有提供单点登录功能,这个插件可以提供redmine的单点登录。解压后将这两个文件放置在redmine目录的plugins目录中。具体操作参照README.md。每个解压文件中都有个EADME.md

    spring boot 实现SSO单点登陆

    spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource 127.0.0.1 sso-tmall 127.0.0.1 sso-taobao windows系统的路径在C:\WINDOWS\system...

    sso单点登录

    单点登录demo,包括客户端和服务器,分布式开发,maven管理

Global site tag (gtag.js) - Google Analytics