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

2022-08-25 10:03:42 +08:00
 awanganddong

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

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

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

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

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

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

具体接口的权限判断,下游微服务判断:
比如你用 sping security 的话,控制器上直接加权限校验注解 @PreAuthorize 就行。
saberscarlet
2022-08-26 00:38:49 +08:00
网关做认证,鉴权,调用单独的 auth 服务,接口权限根据业务判断了,注意 token 的传递

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX