微服务鉴权模块咨询

2023-03-06 09:58:22 +08:00
 hzjseasea

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

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

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

981 次点击
所在节点    问与答
6 条回复
Chad0000
2023-03-06 10:03:18 +08:00
我们在入口也就是网关处做统一鉴权,进入微服务内部后无需再鉴权(用户部分)。
ql562482472
2023-03-06 10:11:55 +08:00
authz 和 authn 的实现肯定是另一个服务,调用点肯定网关要有一个,其他地方可能也要有,比如你微服务里面有一个 app 需要按照权限去展示菜单 那 app 里获取菜单的位置肯定要去调一下 authz 来拼装菜单项目嘛
Autmn
2023-03-06 10:18:37 +08:00
我们是统一在网关验证 token 相关,细化的菜单权限是 aop 拦截做的。
abcbuzhiming
2023-03-06 10:47:39 +08:00
其实这是一个难点,早年一直对网关该不该做全局鉴权争论不休,最后大家似乎还是妥协了,网关只给 token ,鉴权是各 API 接口拿到 token 后各自做的,这样做才能解决网关负担太重的问题,但从职责上说这其实是违背服务职责单一原则的。无奈的是鉴权这个东西说起来简单,在实际开发中又不那么简单,往往不单包含对接口的访问权限,还存在数据租户的问题。所以也就只能这么拧巴的做了
hzjseasea
2023-03-06 12:58:54 +08:00
@Autmn 好的感谢
hzjseasea
2023-03-06 13:03:55 +08:00
@abcbuzhiming 对的,老哥表述比我更明确点..

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

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

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

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

© 2021 V2EX