V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sola97
V2EX  ›  Java

网关统一鉴权+SSO 单点登录的架构中,网关是 SSO Client 吗?

  •  
  •   sola97 · 2021-09-01 15:01:46 +08:00 · 2609 次点击
    这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前项目的架构是
    有一个登录服务,生成 token 写入 redis
    然后有几个 web 应用,每个 web 应用都需要调用登录服务登录后,带上 token 调用其他服务
    想要改造成 SSO 单点登录,实现网关鉴权+日志等功能

    目前我找到的两篇文章有
    微服务-API 网关-身份验证 架构图 多模块 web 系统登录设计 架构图

    这种架构中如果认证服务器颁发 ticket 后,是网关来根据 ticket 登录,也就是 SSO Client?

    8 条回复    2022-01-29 18:45:14 +08:00
    xiaoyanbot
        1
    xiaoyanbot  
       2021-09-01 17:58:54 +08:00
    正常的 jwt token 不用写入 redis

    只有 ban,或者用户主动注销的 jwt token 才写入一个 未过期的 token 禁止列表
    meshell
        2
    meshell  
       2021-09-01 18:39:05 +08:00
    网关鉴权是不是只能针对 url 鉴权?我现在系统里面如果弄成网关鉴权就只能针对 url 处理,不能根据业务来。
    ccde8259
        3
    ccde8259  
       2021-09-01 19:05:22 +08:00 via iPhone
    CAS 的 SSO 优势主要是基于 HTTP 协议完成单点登录,也就是即使你的 Web 应用是 polyglot 的场景也能完成鉴权。
    一个简单的实现是,让你的 Web 应用如何成为 SSO Client 。缺陷就是各个 Web 应用这个场景下并不是共享 Session 的,因为 CAS 只负责鉴权。
    实现共享 Session 就是让 Gateway 成为 SSO Client,由 Gateway 控制 Session 。
    securityCoding
        4
    securityCoding  
       2021-09-01 19:30:17 +08:00
    @meshell 理论上网关都是根据 url path 匹配路由规则 , 每条路由规则可以做各种定制化的配置
    xuanbg
        5
    xuanbg  
       2021-09-01 19:56:42 +08:00
    网关已经实现认证 /鉴权了,微服务都在网关后面了,还要什么 token 。
    THESDZ
        6
    THESDZ  
       2021-09-02 16:45:51 +08:00
    @xuanbg #5 是不用 token,但是要当前用户信息
    meshell
        7
    meshell  
       2021-09-03 12:22:34 +08:00
    @securityCoding 如果是这样的话,等于系统开始设计的时候 url 这些就要想好了。不然网关里面的规则经常改。 我们现在还是在不同的服务里面做鉴权这样就是每个服务都重复了三个文件这些文件有变动就是所有的服务又要 copy 一遍。
    norristong2
        8
    norristong2  
       2022-01-29 18:45:14 +08:00
    - https://cdn.authing.co/authing-docs-v2/1.1.72/assets/img/app-device-logout-6.f739ed29.png
    - https://docs.authing.cn/v2/concepts/single-sign-on-and-single-sign-out.html

    可以参考这家公司的设计方案,“返回一个授权码 code ,再使用 code 在业务后端换取 Access token ,再用 Access token 获取用户信息。”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5307 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:39 · PVG 15:39 · LAX 00:39 · JFK 03:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.