`
jinyanhui2008
  • 浏览: 318478 次
  • 性别: 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

    关于SSO单点登录的简单实现

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。这个过程提高了用户体验,同时也简化了安全管理。在本文中,我们将探讨SSO的基本原理...

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

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

    SSO单点登录

    SSO单点登录

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

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

    SSO单点登录解决方案

    SSO(Single Sign-On)单点登录是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个相互信任的应用系统。这种技术极大地提高了用户体验,减少了密码管理的复杂性,同时也为管理员提供了更高效...

    SSO 单点登录(java)

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后,能够访问多个相互关联的应用系统,而无需再次输入凭证。在Java环境下实现SSO,通常涉及以下几个核心知识点: 1. **原理**:SSO的核心思想...

    baigo SSO单点登录系统

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

    sso单点登录

    单点登录(Single Sign-On,简称SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个相互信任的应用系统。这种方式极大地提高了用户体验,减少了用户记忆和输入多个账号密码的麻烦,同时...

    SSO单点登陆解决方案

    SSO单点登录解决方案 SSO(Single Sign-On)单点登录解决方案旨在提供一个统一的身份验证入口,满足集团多个成员网站的身份验证需求。该方案的主要目标是实现单点登录,提高用户体验,降低成员网站的登录负载,并...

    sso单点登录源代码

    SSO(Single Sign-On)单点登录是一种网络认证机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次输入凭证。这种技术极大地提升了用户体验,减少了记忆和输入多个用户名和密码的麻烦,同时也...

    SSO单点登录源码

    SSO(Single Sign-On)单点登录是一种网络应用的认证技术,它允许用户在一个系统或应用中登录后,无需再次输入凭证即可访问其他相互信任的系统。这种技术简化了用户的登录流程,提高了用户体验,同时也降低了管理多...

    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

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这个“sso单点登录demo”是一个Java实现的示例,包含了三种不同的...

    基于JWT实现SSO单点登录流程图解

    基于JWT实现SSO单点登录流程图解 基于JWT实现SSO单点登录流程图解是指使用JSON Web Token(JWT)来实现单点登录(SSO)的机制。在这种机制中,用户只需要登录一次,就可以访问多个应用服务器上的资源,而不需要再次...

    sso单点登录技术

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统或应用中登录后,无需再次认证即可访问其他相互信任的系统或应用。这大大提升了用户体验,减少了用户记忆多个用户名和密码的负担,...

Global site tag (gtag.js) - Google Analytics