【发布时间】:2020-07-04 17:50:51
【问题描述】:
我们正在开发具有基于微服务架构的应用程序,其中用户可以是组织的成员,并且在每个组织内,他们可能具有基于资源的访问限制。例如,招聘人员是平台上多个组织的成员;在组织 A 中,他们可能会看到所有职位发布和面试官的列表,而在组织 B 中,他们只能看到他们直接被允许查看的职位发布。
这一切似乎都可以通过 Keycloak 轻松完成,我们创建机密客户端(每个微服务一个)并在它们上启用资源管理。但是,在相当多的情况下,不同的微服务(即 Keycloak 客户端)需要验证用户对同一资源的访问范围。例如,我们有 2 个微服务,一个用于发布和管理工作公告,另一个用于管理申请和面试,例如 job-manager 和 application-manager。现在,当提交新申请或面试官尝试访问应用程序时,application-manager 必须确保用户有权访问在 job 中配置的职位发布(资源) -manager Keycloak 客户端。我认为 Keycloak 不支持。
在规模方面,我们谈论的是 X00k 用户、4-5 倍的组织用户连接以及数千万资源。因此,为了尽量减少我们在 Keycloak 中创建的对象数量,我们决定利用存储 JSON 结构的资源的属性。
那么,一个微服务如何通过另一个微服务验证用户对资源管理器的访问?
【问题讨论】:
-
您找到问题的答案了吗?
标签: oauth-2.0 authorization microservices keycloak openid-connect