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

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

  •  
  •   awanganddong · 99 天前 · 2133 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    具体接口的权限判断,下游微服务判断:
    比如你用 sping security 的话,控制器上直接加权限校验注解 @PreAuthorize 就行。
    saberscarlet
        16
    saberscarlet  
       99 天前
    网关做认证,鉴权,调用单独的 auth 服务,接口权限根据业务判断了,注意 token 的传递
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1124 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.