关于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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值