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

请教个问题,SSO(单点登录)能不能用 JWT 实现?

  •  
  •   wanghaa · 2017-11-09 16:54:36 +08:00 · 10956 次点击
    这是一个创建于 2331 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有没有相关的 demo,感觉 CAS 略复杂了点
    14 条回复    2020-06-24 16:11:44 +08:00
    hezhou920
        1
    hezhou920  
       2017-11-09 17:09:15 +08:00
    显然是可以的
    janxin
        2
    janxin  
       2017-11-09 17:09:41 +08:00
    可以
    wanghaa
        3
    wanghaa  
    OP
       2017-11-10 09:04:24 +08:00
    @hezhou920 @janxin 用 jwt(token)的话,假如 A 系统已经登录了,在访问 B 系统的时候是怎么知道已经登录的呢?
    K1W1
        4
    K1W1  
       2017-11-15 19:39:00 +08:00
    @wanghaa #3 因为认证与验证是分开的,用户通过 A 服务器登录得到了签名 token (认证),然后用户再请求 B 把 token 一起发过去,B 拿到约定好的 token 就会是验证是否是有效,有效就是登录用户,无效重新登录
    wanghaa
        5
    wanghaa  
    OP
       2017-11-16 08:21:41 +08:00 via Android
    @K1W1 访问 B 系统的时候用户怎么知道 token 在哪
    K1W1
        6
    K1W1  
       2017-11-16 09:49:26 +08:00
    @wanghaa #5 看你们约定了,一般放在 cookie 或者请求头,甚至请求参数带过来就行了,参数放在哪、参数名称是什么这都是要约定好的
    wanghaa
        7
    wanghaa  
    OP
       2017-11-16 17:35:37 +08:00
    @K1W1
    问题 1. 不同的域名怎么可能还放在 cookie 里呢?
    问题 2. 在 A 系统登陆过之后,访问 B 系统的时候是没有带 Token 的
    K1W1
        8
    K1W1  
       2017-11-16 17:59:40 +08:00
    @wanghaa #7 问题 1.看你怎么做吧,一般不同服务,至少我们只是子域名不同。根域名下的 cookie 是共用的。问题 2.对接 sso 相应服务是肯定要修改的,不然不可能实现
    andymee
        9
    andymee  
       2017-11-30 23:05:42 +08:00   ❤️ 2
    不管是访问 A 系统 还是 B 系统 都是要跳转到 认证系统 AUTH 去的 比如 auth.app.com 可以在这个域下 创建 COOKIE 这样 在 A 系统跳转到 AUTH 时 创建 cookie token=tk1 然后跳会 A 系统 a.app1.com 带上发给 A 的 cookie token=tk2 之后访问 b.app2.com 发现没有 token 需要登录 那么就跳转到 auth.app.com 这时候 发现已经有 cookie token=tk1 了 那验证登录有效后 带上签发给 B 的 token tk3 跳转 B . 这样访问 B 系统就只是一个跳转 不需要登录了..
    abcbuzhiming
        10
    abcbuzhiming  
       2017-12-01 10:29:44 +08:00
    @wanghaa
    1.为什么不能放,能不能放是由客户端决定的,cookie 这玩意是个客户端能拿到就能放在任何地方的东西
    2.访问 A 系统的目的就是为了生成 token,这个 token 是会返还给客户端的,客户端要拿着这个 token 去访问 B,B 系统得到这个 token 后,可能会去找 A 系统问询,也可能会去找统一的 token 校验服务器问询。这才是整个流程
    kba977
        11
    kba977  
       2017-12-04 22:47:36 +08:00
    可以的, 推荐一个连接 [Single Sign On (SSO), Scalable Authentication Example with JSON Web Token (JWT) and Spring Boot]( https://hellokoding.com/hello-single-sign-on-sso-with-json-web-token-jwt-spring-boot/)
    snakejia
        12
    snakejia  
       2017-12-12 14:32:32 +08:00
    @andymee 偶然间看帖子,解了困扰我半天的问题,3Q
    ivydom
        13
    ivydom  
       2019-10-10 16:36:25 +08:00
    用 authing 可以快速实现单点登录,快速体验: https://sample.authing.cn
    Shikyou
        14
    Shikyou  
       2020-06-24 16:11:44 +08:00
    实现单点登录最快的方式,可以用国内的 Authing,国外的 Auth0 / AWS Cognito 这一类用户身份验证的云服务,给应用添加注册、登录和访问控制功能很快
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1385 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:43 · PVG 07:43 · LAX 16:43 · JFK 19:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.