• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cxhello
0.02D
V2EX  ›  程序员

SSO 单点登录实现方案选型

  •  
  •   cxhello ·
    cxhello · Jul 10, 2024 · 4627 views
    This topic created in 847 days ago, the information mentioned may be changed or developed.

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

    1. Cookie ;
    2. 分布式 Session ;
    3. JWT ;
    4. OAuth2 ;
    Supplement 1  ·  Jul 11, 2024
    5. CAS
    Supplement 2  ·  Jul 11, 2024
    6. keycloak
    20 replies  •  2024-07-15 19:30:57 +08:00
    cheneydog
    cheneydog
    Jul 10, 2024
    1
    封一个模块都支持上最好
    zealotxxxx
    zealotxxxx
    Jul 10, 2024
    2
    其实你要实现用户登出的话,最好还是带状态
    zealotxxxx
    zealotxxxx
    Jul 10, 2024
    3
    jwt 是不带状态的,Oauth2 默认不带,可以带。

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

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

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

    JWT 只是 token ,和上述协议无可比性,比如 OAuth2 issue 的 token 就可以是 JWT 。
    mirrornighth
    mirrornighth
    Jul 10, 2024
    7
    @snipking 我也觉得是和 jwt ,cookie 等这些无关
    cxhello
    cxhello
    OP
    Jul 10, 2024
    8
    @snipking 好的,我再去了解了解,感谢 V 友。
    Ayanokouji
    Ayanokouji
    Jul 10, 2024
    9
    OIDC
    ny562kPWNJK9g86f
    ny562kPWNJK9g86f
    Jul 10, 2024
    10
    1 和 2 需要混合起来用
    jiakme
    jiakme
    Jul 10, 2024
    11
    需要区分应用场景:
    1. 小型(集中/分布式)应用: 建议 session 模式, 而非 token, 维护成本远低于 token
    2. 中型分布式应用: 两者均可, 分布式 session 可做两层缓存, 同步也不成问题; token 模式需要考虑登出, 黑名单等等场景, 成本不低.
    3. 大型分布式应用: 建议 token 模式, 此时 session 同步会成为问题.
    不论何种模式, 一定要封装前端请求组件和后端拦截器组件, 方便后期调整维护.
    zzl22100048
    zzl22100048
    Jul 10, 2024
    12
    OIDC
    oauth2 只是个授权协议,OIDC 才是用来做认证的
    cxhello
    cxhello
    OP
    Jul 10, 2024
    13
    @jiakme 退出登录 Token 如何处理?子系统公共拦截器组件本质还是会校验通过。
    lucifer4he
    lucifer4he
    Jul 10, 2024
    15
    微软的 AAD 接入了直接用,不自己实现啥
    cxhello
    cxhello
    OP
    Jul 10, 2024
    16
    @jiakme 认证中心维护黑名单,业务子系统去查询吗?
    Jasckcc
    Jasckcc
    Jul 10, 2024
    17
    CAS 可以
    zealotxxxx
    zealotxxxx
    Jul 11, 2024
    18
    @cxhello 你可以有两个模式:session 模式和 token 模式,token 模式是无状态的,用于给业务之间的授权逻辑。
    session 模式处理用户登陆的。
    jiakme
    jiakme
    Jul 15, 2024
    19
    @cxhello 退出登录 Token 如何处理?建议了解一下 oauth2 协议.
    jiakme
    jiakme
    Jul 15, 2024
    20
    @cxhello 认证中心维护黑名单,业务子系统去查询吗? 网关统一处理认证, 管控用户进入. 内部服务只解析用户信息.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1379 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 20:55 · PVG 04:55 · LAX 12:55 · JFK 15:55
    ♥ Do have faith in what you're doing.