今天晚上跟朋友聊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服务器高可用,一旦当机可能会造成系统大面积无法登陆系统,导致系统瘫痪。
分享到:
相关推荐
单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互关联的系统。SSO的主要目标是提高用户体验,减少用户记忆多个密码的负担,并同时提供更...
单点登录(SSO)服务器 您是否需要一个摇摆不定PHP登录系统? 好吧,你找到了。 这是准系统SSO服务器。 一个很棒的,可扩展的,安全的,灵活的登录系统。 特征 跨域和跨服务器能力。 SSO服务器可以驻留在其自己的域...
"MyYZXCProject"可能支持多种登录方式,如传统的用户名/密码组合,或是现代的OAuth、单点登录(Single Sign-On, SSO)等。它还需要有强密码策略、二次验证机制,以保护用户账户不被非法访问。 5. **关于信息**:这...
Cosign的出现解决了这个问题,通过实现单点登录(Single Sign-On, SSO),它允许用户在一个受信任的入口点登录后,无须再次认证即可访问其他兼容的应用程序,大大提高了用户体验。 Cosign的工作原理基于Web代理认证...