V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hzjseasea
V2EX  ›  问与答

微服务鉴权模块咨询

  •  
  •   hzjseasea · 2023-03-06 09:58:22 +08:00 · 942 次点击
    这是一个创建于 389 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近公司想改造一下当前的项目结构,把一些内容抽离成单个的服务,这里面我对鉴权模块有一些问题

    对于一个 API 来说,我们把它分为两种步骤,一种是注册登陆签发 token 的步骤,另外一种是带着 token 请求其余接口的步骤

    现在的问题就是,如果我们把两个步骤都集成在网关上的话,那么一些 web 服务中会涉及到角色的接口权限,菜单权限也要一并做在网关处吗,如果只是把第一个步骤放在网关处,第二个步骤细化到各自的服务上做鉴权的吧,那网关在权限这方面只做了签发 token 的工作咯?

    6 条回复    2023-03-06 13:03:55 +08:00
    Chad0000
        1
    Chad0000  
       2023-03-06 10:03:18 +08:00   ❤️ 1
    我们在入口也就是网关处做统一鉴权,进入微服务内部后无需再鉴权(用户部分)。
    ql562482472
        2
    ql562482472  
       2023-03-06 10:11:55 +08:00   ❤️ 1
    authz 和 authn 的实现肯定是另一个服务,调用点肯定网关要有一个,其他地方可能也要有,比如你微服务里面有一个 app 需要按照权限去展示菜单 那 app 里获取菜单的位置肯定要去调一下 authz 来拼装菜单项目嘛
    Autmn
        3
    Autmn  
       2023-03-06 10:18:37 +08:00   ❤️ 2
    我们是统一在网关验证 token 相关,细化的菜单权限是 aop 拦截做的。
    abcbuzhiming
        4
    abcbuzhiming  
       2023-03-06 10:47:39 +08:00   ❤️ 2
    其实这是一个难点,早年一直对网关该不该做全局鉴权争论不休,最后大家似乎还是妥协了,网关只给 token ,鉴权是各 API 接口拿到 token 后各自做的,这样做才能解决网关负担太重的问题,但从职责上说这其实是违背服务职责单一原则的。无奈的是鉴权这个东西说起来简单,在实际开发中又不那么简单,往往不单包含对接口的访问权限,还存在数据租户的问题。所以也就只能这么拧巴的做了
    hzjseasea
        5
    hzjseasea  
    OP
       2023-03-06 12:58:54 +08:00
    @Autmn 好的感谢
    hzjseasea
        6
    hzjseasea  
    OP
       2023-03-06 13:03:55 +08:00
    @abcbuzhiming 对的,老哥表述比我更明确点..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5389 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:33 · PVG 15:33 · LAX 00:33 · JFK 03:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.