单点登录
在多系统共存环境下,用户在一个系统中登录,其他系统也可通行
好处
- 用户体验提升:无需多次登录
- 安全性增强:集中管理认证用户信息,可以更好的控制和保护用户信息
- 降低运维成本:无需多系统维护登录认证
风险
-
单点故障:sso系统崩溃,无法进行验证
解决方案:冗余部署、定期备份+故障恢复策略、负载均衡等提高系统可用性
-
sso服务被击破:sso被击破,攻击者可获得所有应用的访问权限
解决方案:加强sso服务安全防护,如多因素认证、定期审计
难点
-
不同系统间如何进行通讯?
解决方案:服务调用(grpc)、http、消息队列、文件系统、进程通讯
-
token过期同步、一致性问题
-
跨域问题
解决方案:使用相同顶级域名
-
使用全局共享Session还是各系统单独维护
全局共享Session:一般存储在redis、mysql集群中;易出现问题:第三方存储压力瓶颈;解决方案:使用JWT Token存储非敏感、高频数据 // CPU换内存
各系统单独维护:全局存储独一份的信息,比如是否登录信息;个性化信息各系统分别存储
-
sso可用性保障:负载均衡、熔断限流、来源验证 // 网关处理
多设备登录和单点登录有关吗?
多设备登录是指在多个设备上登录同一个账号,多设备间需要分开登录;单点登录指同一体系下所有系统,一处登录,其他系统可正常通行。sso机制是多设备登录的基础,多设备登录需要通过sso服务进行身份验证,并获取统一的访问权限;多设备登录扩展了sso的应用场景。
鉴权和登录的关系
登录(Identity):你是谁?是不是合法用户
鉴权(Authorization):是合法用户的你有哪些权限
sso 流程

go 源码
gitee: https://gitee.com/luyue_zhang/sso_oauth2/tree/master/sso
演示

相关资料
OAuth2.0
OAuth2.0 流程

go 源码
gitee:https://gitee.com/luyue_zhang/sso_oauth2/blob/master/oauth2/readme.md
演示

sso和oauth2.0的区别
- 可以用oauth2.0实现sso,登录可以被认为是一种资源
- oauth2.0常用于对接第三方平台,sso常用于公司内部多系统场景
- oauth2.0有权限控制
1万+

被折叠的 条评论
为什么被折叠?



