kisso与xxl-sso方案讲解SSO英文全称Single Sign On,即单点登录。单点登录是一种控制多个相关但彼此独立的系统的访问权限(不共用session,系统间彼此互不关联), 拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统。
实现机制是当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该 返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket...
SSO英文全称Single Sign On,即单点登录。单点登录是一种控制多个相关但彼此独立的系统的访问权限(不共用session,系统间彼此互不关联), 拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统。
实现机制是当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该 返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把 ticket送到认证系统进行校验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
各版本SSO系统选型分析
KISSO(cookie sso) 是基于cookie的SSO中间件,采用的是加密会话 cookie 机制实现单点登录 SSO 服务,具备“无状态”、“分散验证等特性
项目模块结构如图
跨域原理图
核心原理 Ajax Jsonp 跨域验证,用户在 A 站登录成功,进入 B 站时利用 Jsonp 跨域询问 SSO 是否 A站登录?由 SSO 返回密文
告诉 B 站是否 A 站登录,如登录在 B 站设置会话 Cookie 从而实现 B 站的登录授权,图中 UUID 部分为了安全利用分布式缓存后台做二次验证。
Web 端访问
图
移动端 API 访问流程图
总体感觉:文档不够详细与清晰,采用springMVC,配置文件略多,配置部分挺麻烦,部分官方测试demo已经失效了,主要基于cookie的验证,不知用于APP的token验证是否足够完善。安全机制采用AES加密,另外这套系统16年之后维护得就比较少了。
XXL-SSO,是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性,现已开放源代码。
特性:
简洁:API直观简洁,可快速上手;
轻量级:环境依赖小,部署与接入成本较低;
单点登录:只需要登录一次就可以访问所有相互信任的应用系统。
分布式:接入SSO认证中心的应用,支持分布式部署;
HA:Server端与Client端,均支持集群部署,提高系统可用性;
实时性:系统登陆、注销状态,全部Server与Client端实时共享;
CS结构:基于CS结构,包括Server"认证中心"与Client"受保护应用";
跨域:支持跨域应用接入SSO认证中心;
Cookie+Token均支持:支持基于Cookie和基于Token两种接入方式,并均提供Sample项目;
Web+APP均支持:支持Web和APP接入;
其中基于token的搭建,主要api 有3 个 :
· 登陆接口:/app/login
l · 参数:POST参数
l username:账号
l password:账号
l 响应:JSON格式
l code:200
示成功、其他失败;
l msg:错误提示
l data: 登陆用户的 sso sessionid
· 2、注销接口:/app/logout
l · 参数:POST参数
l sessionId:登陆用户的 sso sessionid
l 响应:JSON格式
l code:200 表示成功、其他失败;
l msg:错误提示
· 3、登陆状态校验接口:/app/logincheck
l · 参数:POST参数
l sessionId:登陆用户的 sso sessionid
l 响应:JSON格式
l code:200 表示成功、其他失败;
l msg:错误提示
l data:登陆用户信息
? userid:用户ID
? username:用户名
正常情况下,登录流程如下:
1、获取用户输入的账号密码后,请求SSO Server的登录接口,获取用户 sso sessionid ;(参考代码:TokenClientTest.loginTest)
2、登陆成功后,获取到 sso sessionid ,需要主动存储,后续请求时需要设置在 Header参数 中;
3、此时,使用 sso sessionid 访问受保护的 "Client01应用" 和 "Client02应用" 提供的接口,接口均正常返回;(参考代码:TokenClientTest.clientApiRequestTest)
正常情况下,注销流程如下:
1、请求SSO Server的注销接口,注销登陆凭证 sso sessionid ;(参考代码:TokenClientTest.logoutTest)
2、注销成功后,sso sessionid 将会全局失效;
3、此时,使用 sso sessionid 访问受保护的 "Client01应用" 和 "Client02应用" 提供的接口,接口请求将会被拦截,提示未登录并返回状态码 501 ;(参考代码:TokenClientTest.clientApiRequestTest)
架构图
核心概念
SSO Server
中央认证服务,支持集群;
SSO Client
接入SSO认证中心的Client应用;
SSO SessionId
登录用户会话ID,SSO 登录成功为用户自动分配;
SSO User
登录用户信息,与 SSO SessionId 相对应;
总的来说,xxl-sso感觉就是比较简洁,采用spring boot ,部署方便,sessionId存在redis中,有效期可任意,设置默认2小时。sso server 有一个用户表做登录用,可在此表增加U家及海金汇用户ID即可关联。 cookie web 及 token api 两种方式支持都比较友好, 只是token方式建议要加RSA对称加密保证token的安全性。xxl-sso 中文文档比较全面,社区也比较活跃。
个人测试xxl-sso 基于 cookie 的使用
本文档为【kisso与xxl-sso方案讲解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。