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

Springboot 多个项目如何 统一认证?

  •  
  •   mocxe2vwww · 2020-04-23 19:47:12 +08:00 · 4022 次点击
    这是一个创建于 1458 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有 2 个独立的项目 app1 和 app2 。都是采用 jwt 的方式进行认证。

    如何带着 app1 的 token 去访问 app2 的接口时 无需再次认证。

    我想要的方案如下:

    1. 两个项目用一套认证逻辑,同样的 key 加密或解密 token.(感觉有点 low)
    
    2. 集成 spring cloud 在网关进行权限认证
    
    3. oauth2
    
    4. cas
    

    你们认为那种方案比较合适,或者还有其他什么方式,帮忙给点建议,谢谢。

    16 条回复    2020-04-25 10:03:47 +08:00
    MikeLei
        1
    MikeLei  
       2020-04-23 19:55:15 +08:00
    我也是采用 jwt,集成 Shiro,把 token 跟权限缓存到 redis 里面,两个系统用同一个 redis 就不需要再次认证啦。
    Jafee
        2
    Jafee  
       2020-04-23 20:39:23 +08:00
    可以用网关统一认证,然后再转发到相关服务。
    xuanbg
        3
    xuanbg  
       2020-04-23 20:48:16 +08:00
    正规的做法是 2 楼的方案。当然 1 楼的也能用,但不推荐。
    CoderGeek
        4
    CoderGeek  
       2020-04-23 20:51:59 +08:00
    oauth2
    CoderGeek
        5
    CoderGeek  
       2020-04-23 20:52:23 +08:00
    做统一鉴权服务 我的主页有类似的 demo
    CoderGeek
        6
    CoderGeek  
       2020-04-23 20:54:40 +08:00
    仔细看了下 我说的不太好 , 这种 token 分发要收口在一个服务 还要维护鉴权关系 做一个分发鉴权的系统 或者网关拦截
    两个 token 还要有权限配置
    wangxiaoaer
        7
    wangxiaoaer  
       2020-04-23 21:05:04 +08:00 via Android
    @Jafee 如果网关做认证那是不是相当于网关开始涉及业务了?
    huijiewei
        8
    huijiewei  
       2020-04-23 22:03:53 +08:00
    @wangxiaoaer 网关只做认证
    Kyle18Tang
        9
    Kyle18Tang  
       2020-04-24 00:36:41 +08:00
    OAuth2
    jzmws
        10
    jzmws  
       2020-04-24 08:52:20 +08:00
    最外面套一个网关 其他模块都不做认证
    mocxe2vwww
        11
    mocxe2vwww  
    OP
       2020-04-24 10:03:39 +08:00 via iPhone
    @xuanbg 确实,还是网关最合适。
    abcbuzhiming
        12
    abcbuzhiming  
       2020-04-24 11:10:37 +08:00
    想简单就 1 楼,redis 缓存 jwt,正统一点的是 2 楼
    securityCoding
        13
    securityCoding  
       2020-04-24 11:20:37 +08:00   ❤️ 1
    @wangxiaoaer 鉴权不算具体业务,正确的做法就是通过网关,对底层的微服务屏蔽登录态 /权限相关的逻辑. 网关层面鉴权成功将登录态属性设置到上下文中( http-header/rpc-context) ,底层服务直接获取属性就好 .
    securityCoding
        14
    securityCoding  
       2020-04-24 11:21:49 +08:00
    springboot 转 spring-cloud 几乎无成本 ,阿里开源的 nacos 同时做配置中心 /注册中心非常方便
    mocxe2vwww
        15
    mocxe2vwww  
    OP
       2020-04-24 22:09:38 +08:00
    @securityCoding 我看了下你说的 nacos,感觉是阿里云 API 网关的简化版。
    securityCoding
        16
    securityCoding  
       2020-04-25 10:03:47 +08:00
    @mocxe2vwww nacos 跟网关不是一个领域的东西 ,你可以这样理解他综合了 Zookeeper 和 Apollo
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1844 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:24 · PVG 00:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.