这里写自定义目录标题
- 微服务架构,服务鉴权如何设计
微服务架构,服务鉴权如何设计
现在有一个项目管理 API,有基于角色的权限管理,分为了三个微服务和一个鉴权服务。
A 管理后台服务是管理后台使用的 API,只能由管理员使用,允许对所有项目数据进行增删改查。
B 用户后台服务是用户后台使用的 API,所有用户都可以用,只允许用户操作自己和被授权的项目。
C 项目管理服务直接连接项目数据库,提供 RestFull 接口。
D 鉴权服务能够获取用户的权限。
现在设计了两个方案,第一种由 A 和 B 服务确认权限,C 服务提供通用的 Restfull 接口,不鉴权,无条件信任 A/B 的请求,只做网络访问控制,C 服务可以通用且轻量化,业务逻辑都在 A 和 B 里。
第二种方案由 C 服务确认权限,A 和 B 直接发送请求。权限控制上更严格,但是 C 需要包含复杂的鉴权业务逻辑,如果接口变动可能影响 A 或 B。
对用户请求的拦截越早越好,避免服务器不必要的开销,鉴权属于横切关注,应该用拦截过滤器的方式动态织入,必要的时候还可以单独做facade,基于这两点方案一更优!