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

微服务认证鉴权做在那一层比较好

  •  
  •   awanganddong · 2022-08-25 10:03:42 +08:00 · 3225 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在项目代码耦合在一起,现在打算进行重构,目的是用不同语言来对功能模块进行重构。

    现在是 nginx+lua 作为一个简单的网关,进行消息转发。

    现在比较困惑的就是,认证与鉴权是直接在网关层做,

    还是说在后端起一个鉴权服务来进行处理。

    这两者之间比较困惑, 所以想知道下主流的技术方案。

    16 条回复    2022-08-26 00:38:49 +08:00
    moremoney
        1
    moremoney  
       2022-08-25 10:11:05 +08:00
    我觉得在网关层比较好,后面一马平川,像有些接口服务之间调用比较多的话,频繁的鉴权也影响效率
    helone
        2
    helone  
       2022-08-25 10:12:07 +08:00
    网关层
    zzzzz001
        3
    zzzzz001  
       2022-08-25 10:13:08 +08:00
    我的理解,网关 调用 鉴权服务。
    iamtsm
        4
    iamtsm  
       2022-08-25 10:17:52 +08:00
    楼主用 nginx+lua 这块,像网关鉴权的话,市面上也比较多的一些优秀开源框架,kong, apisix, orange 都有类似鉴权插件的。或者自己写一个也行。
    coderxy
        5
    coderxy  
       2022-08-25 10:27:59 +08:00
    lua 里面去调用鉴权服务进行鉴权。
    awanganddong
        6
    awanganddong  
    OP
       2022-08-25 10:31:58 +08:00
    明白大家的意思了,自己用 nginx+lua 写的话,比较可控。
    wetalk
        7
    wetalk  
       2022-08-25 10:40:24 +08:00
    当然 api 层,否则 req 进入到集群内部,不可能每个服务都做一次鉴权
    morty0
        8
    morty0  
       2022-08-25 10:45:56 +08:00   ❤️ 2
    网关做通用鉴权, 鉴权服务做特殊业务的鉴权
    wongskay
        9
    wongskay  
       2022-08-25 11:43:04 +08:00
    @morty0 +1
    qfdk
        10
    qfdk  
       2022-08-25 13:33:41 +08:00 via iPhone
    来你可以来抄作业了…… 鉴权在 gateway 做, 每个请求都知道是否鉴权了. 就算是前端的请求来了也知道是不是登录了. 虽然可以向 openid 获取 /user 来获取用户. 这样会先一步知道有没有登陆. 每个用户鉴权成功会有 session 在 gateway 产生,具体就是会有个 cookie 存在客户端,每个请求都带有他. 鉴权是单独做的 openid 服务器. gateway 也管着 token 续命.
    adoal
        11
    adoal  
       2022-08-25 13:38:47 +08:00
    认证在网关,鉴权看情况
    Aliberter
        12
    Aliberter  
       2022-08-25 13:42:13 +08:00
    最近刚做了这块,单独起的 auth 服务,然后在网关全局过滤器里通过 feign 调用 auth 服务进行鉴权
    runningman
        13
    runningman  
       2022-08-25 13:54:04 +08:00
    nginx + lua 复杂吗
    xuanbg
        14
    xuanbg  
       2022-08-25 15:57:47 +08:00
    网关!合适做身份认证和鉴权的只有网关。
    mmdsun
        15
    mmdsun  
       2022-08-25 18:55:37 +08:00 via iPhone
    网关验证登陆、和通用鉴权验证签名之类的。

    具体接口的权限判断,下游微服务判断:
    比如你用 sping security 的话,控制器上直接加权限校验注解 @PreAuthorize 就行。
    saberscarlet
        16
    saberscarlet  
       2022-08-26 00:38:49 +08:00
    网关做认证,鉴权,调用单独的 auth 服务,接口权限根据业务判断了,注意 token 的传递
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:42 · PVG 05:42 · LAX 14:42 · JFK 17:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.