0
点赞
收藏
分享

微信扫一扫

sa-token及相关登陆认证信息学习(一)——单点登录

楠蛮鬼影 2022-02-14 阅读 357
java

一.什么是单点登陆

单点登陆就是用户在一个系统登陆后,在访问同一认证体系下的系统时,无需进行二次登陆。其目的时为了优化用户的体验。
简而言之,单点登录可以做到:在多个互相信任的系统中,用户只需登录一次,就可以访问所有系统。

二.单点登陆和Oauth2登陆认证的区别

关于二者的区别,本人觉得,单点登陆是为了让用户无感的在各个系统之间穿梭。是同一个系统,一般是自己公司内部产品使用。而Oauth2认证是为了统一全网的登陆认证模式,该模式的主要是为了不同的系统共享同一套账号,其在认证授权过程需要用户统一才可以。打个比方,淘宝中的购物车和购物系统是在不同的服务下,但是,对于用户来说,他们是一个整体,我的授权是给整个所有模块进行授权,而非仅仅是浏览宝贝授权的。此时就是单点登陆。对于Oauth登陆则是一种授权使用其他公司账号的登陆模式。比如我想在淘宝使用qq登陆,这时候手机登陆了qq但是,对于用户来说,他的登陆qq本意并不是想给淘宝用。所以在他想使用qq登陆淘宝时,需要向qq认证服务申请登陆凭证。依靠凭证来自己资源服务器来进行访问。(总感觉这样好像淘宝这种资源服务器低人一等)

三.关于单点登陆的架构选型(来自Sa-Token官网)

对于单点登录,网上教程大多以CAS(Central Authentication Server)模式为主,其实对于不同的系统架构,实现单点登录的步骤也大为不同,Sa-Token 由简入难将其划分为三种模式:

系统架构采用模式简介文档链接
前端同域 + 后端同 Redis模式一共享 Cookie 同步会话文档、示例
前端不同域 + 后端同 Redis模式二URL重定向传播会话文档、示例
前端不同域 + 后端不同 Redis模式三Http请求获取会话文档、示例
1.前端同域:就是指多个系统可以部署在同一个主域名之下,比如:c1.domain.com、c2.domain.com、c3.domain.com。
2.后端同Redis:就是指多个系统可以连接同一个Redis。PS:这里并不需要把所有项目的数据都放在同一个Redis中,Sa-Token提供了 [权限缓存与业务缓存分离] 的解决方案,详情戳:Alone独立Redis插件。
3.如果既无法做到前端同域,也无法做到后端同Redis,那么只能走模式三,Http请求获取会话(Sa-Token对SSO提供了完整的封装,4.你只需要按照示例从文档上复制几段代码便可以轻松集成)。
技术选型一定要根据系统架构对症下药,切不可胡乱选择。
举报

相关推荐

0 条评论