SSO 单点登录实现方案选型

71 天前
 cxhello

想了解下各位 V 友公司目前采用的单点登录方案是哪种?我列了 4 种,如果有更好的方案大家可以发出来。😂

  1. Cookie ;
  2. 分布式 Session ;
  3. JWT ;
  4. OAuth2 ;
2022 次点击
所在节点    程序员
20 条回复
cheneydog
71 天前
封一个模块都支持上最好
zealotxxxx
71 天前
其实你要实现用户登出的话,最好还是带状态
zealotxxxx
71 天前
jwt 是不带状态的,Oauth2 默认不带,可以带。

实现登出和强制下线都需要带状态的实现
ChoateYao
71 天前
建议你看看 Cas Server 的方案,很多 SSO 系统都是按照这个方案去实现的
cxhello
71 天前
@zealotxxxx 是的,退出看有的方案认证中心和其他子系统采用一套 redis ,我觉得这个不太靠谱。
snipking
71 天前
你是为了做 sso server ,让别的应用来接入,还是为了自己的应用能接入 sso server 呢?

业内已经有广泛使用的标准协议了呀,OpenID ,SAML ,OIDC ,OAuth2 ,如果是为了做 sso server ,当然是各种协议都要支持,建议直接用现成的比如 keycloak ,因为还涉及协议间转换的问题。

如果是自己做应用,建议做一个 OAuth2 足矣。

JWT 只是 token ,和上述协议无可比性,比如 OAuth2 issue 的 token 就可以是 JWT 。
mirrornighth
71 天前
@snipking 我也觉得是和 jwt ,cookie 等这些无关
cxhello
71 天前
@snipking 好的,我再去了解了解,感谢 V 友。
Ayanokouji
71 天前
OIDC
ny562kPWNJK9g86f
71 天前
1 和 2 需要混合起来用
jiakme
71 天前
需要区分应用场景:
1. 小型(集中/分布式)应用: 建议 session 模式, 而非 token, 维护成本远低于 token
2. 中型分布式应用: 两者均可, 分布式 session 可做两层缓存, 同步也不成问题; token 模式需要考虑登出, 黑名单等等场景, 成本不低.
3. 大型分布式应用: 建议 token 模式, 此时 session 同步会成为问题.
不论何种模式, 一定要封装前端请求组件和后端拦截器组件, 方便后期调整维护.
zzl22100048
71 天前
OIDC
oauth2 只是个授权协议,OIDC 才是用来做认证的
cxhello
71 天前
@jiakme 退出登录 Token 如何处理?子系统公共拦截器组件本质还是会校验通过。
Mikex88
71 天前
lucifer4he
71 天前
微软的 AAD 接入了直接用,不自己实现啥
cxhello
71 天前
@jiakme 认证中心维护黑名单,业务子系统去查询吗?
Jasckcc
71 天前
CAS 可以
zealotxxxx
70 天前
@cxhello 你可以有两个模式:session 模式和 token 模式,token 模式是无状态的,用于给业务之间的授权逻辑。
session 模式处理用户登陆的。
jiakme
66 天前
@cxhello 退出登录 Token 如何处理?建议了解一下 oauth2 协议.
jiakme
66 天前
@cxhello 认证中心维护黑名单,业务子系统去查询吗? 网关统一处理认证, 管控用户进入. 内部服务只解析用户信息.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1056262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX