最近公司想改造一下当前的项目结构,把一些内容抽离成单个的服务,这里面我对鉴权模块有一些问题
对于一个 API 来说,我们把它分为两种步骤,一种是注册登陆签发 token 的步骤,另外一种是带着 token 请求其余接口的步骤
现在的问题就是,如果我们把两个步骤都集成在网关上的话,那么一些 web 服务中会涉及到角色的接口权限,菜单权限也要一并做在网关处吗,如果只是把第一个步骤放在网关处,第二个步骤细化到各自的服务上做鉴权的吧,那网关在权限这方面只做了签发 token 的工作咯?
![]() |
1
Chad0000 209 天前 ![]() 我们在入口也就是网关处做统一鉴权,进入微服务内部后无需再鉴权(用户部分)。
|
2
ql562482472 209 天前 ![]() authz 和 authn 的实现肯定是另一个服务,调用点肯定网关要有一个,其他地方可能也要有,比如你微服务里面有一个 app 需要按照权限去展示菜单 那 app 里获取菜单的位置肯定要去调一下 authz 来拼装菜单项目嘛
|
3
Autmn 209 天前 ![]() 我们是统一在网关验证 token 相关,细化的菜单权限是 aop 拦截做的。
|
![]() |
4
abcbuzhiming 209 天前 ![]() 其实这是一个难点,早年一直对网关该不该做全局鉴权争论不休,最后大家似乎还是妥协了,网关只给 token ,鉴权是各 API 接口拿到 token 后各自做的,这样做才能解决网关负担太重的问题,但从职责上说这其实是违背服务职责单一原则的。无奈的是鉴权这个东西说起来简单,在实际开发中又不那么简单,往往不单包含对接口的访问权限,还存在数据租户的问题。所以也就只能这么拧巴的做了
|
![]() |
6
hzjseasea OP @abcbuzhiming 对的,老哥表述比我更明确点..
|