首页 新闻 会员 周边

微服务,认证,鉴权,授权 机制如何设计比较通用合理.

0
[待解决问题]

查了些资料. 大多都是网关Gateway,做认证.鉴权.
也有根据实际情况,在gateway做认证和部份鉴权+单微服务内做业务鉴权.
我觉得自己的比较合适第二种,gateway+单微服务这种方式.但还有几点疑惑还在犹豫中

环境: spring cloud gateway,nacos,openfeign,(认证.鉴权,授权未使用三方库)

gateway层

  • 认证没有什么问题.

  • 鉴权部分的话,应该只能做根据url的鉴权. 配置url+权限这种方式.这种方式需与api做协调,一边加了url,也需要在gateway层配置这个url+允许权限+拒绝权限.

单个微服务层

  • 需要在业务鉴权,比如管理员,发布者,拥有同样的功能,甚至比发布者更多功能.为了减低相同逻辑的维护成本, 所有觉得用鉴权这种方式比较合适一点.

  • 鉴权方式1,gateway到auth服务加载权限列表,再回gateway做鉴权

    因为gateway加载过这个权限列表,所以在转发时带上这个权限列表,在单个微服务内,直接拿这个权限列表做鉴权,这种方式需要带着权限列表跑.这种方式避免多次加载权限列表,微服务将脱离auth依赖,缺点是需要带着这个列表到处跑.

  • 鉴权方式2,gateway只到auth服务做鉴权,返回鉴权结果

    这种方式需要多次鉴权,gateway跑auth鉴权,微服务跑auth鉴权. 所有需要鉴权的服务都依赖auth

授权

  • 注册权限

    微服务中定义权限,自动注册到权限模块.

  • 授权 权限模块,统一分配


这些只是一些构思,还没有去实现,肯定有不合理的地方,也有些问题还没考虑到.

欢迎大家指点一二. 让我能有机会一次性比较全面的完成这个模块.

随吧的主页 随吧 | 菜鸟二级 | 园豆:210
提问于:2023-07-25 13:12
< >
分享
所有回答(1)
0

在设计微服务架构的认证、鉴权和授权机制时,我们需要考虑如何实现一个既通用又合理的解决方案。以下是一些建议:

  1. 使用统一的认证服务:将认证过程集中在一个独立的认证服务中,使得各个微服务无需关心用户的认证过程。这样可以降低系统的复杂性,提高安全性和可维护性。通常可以采用OAuth 2.0、OpenID Connect等标准协议实现认证服务。

  2. 采用JWT(JSON Web Token):使用JWT作为访问令牌(Access Token),在用户认证成功后,认证服务会生成一个包含用户信息和权限的JWT。微服务可以通过解析JWT来获取用户的身份和权限信息,从而进行鉴权和授权。JWT具有较好的安全性、易于传输且可以跨域的特点。

  3. 微服务内部授权:在微服务内部,根据用户的身份和权限信息,实现基于角色的访问控制(RBAC,Role-Based Access Control)。这样可以确保只有具备相应权限的用户才能访问相应的资源。

  4. API网关鉴权:在微服务架构中,可以引入API网关作为所有微服务的统一入口。API网关可以负责对请求进行鉴权,验证JWT的有效性,对无效或过期的JWT进行拦截。这样可以进一步提高系统的安全性。

  5. 鉴权和授权日志:记录鉴权和授权的操作日志,以便在出现安全问题时进行追踪和审计。

  6. 保持简单和易于扩展:设计认证、鉴权和授权机制时,应保持简单明了,避免过度设计。同时,要具备一定的灵活性,以便在需求变更时进行扩展。

综上所述,设计微服务架构的认证、鉴权和授权机制时,可以采用统一的认证服务、JWT、基于角色的访问控制、API网关鉴权等技术手段,以实现一个既通用又合理的解决方案。

Bingo-he | 园豆:202 (菜鸟二级) | 2023-07-31 19:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册