我们正在开发一个基于微服务架构的应用程序,用户可以是组织的成员,而在每个组织中,他们可能有基于资源的访问限制。例如,招聘人员是平台上几个组织的成员;在组织A中,他们可能会看到所有职位公告和面试官的列表,而在组织B中,他们只能看到他们可以直接看到的招聘公告。
从结构上看,这变成了这样的情况:
所有这一切似乎很容易用Keycloak,我们创建机密客户端(每个微服务),并启用他们的资源管理。但是,在一些情况下,不同的微服务(即Keycloak客户端)需要验证用户对同一资源的访问范围。例如,我们有两个微服务,一个用于发布和管理职务公告,另一个用于管理应用程序和面试,因此工作经理和应用程序管理器。现在,当新的应用程序提交时,或者面试官试图访问应用程序管理器时,必须确保用户能够访问在作业管理器Keycloak客户端中配置的职务公告(资源)。我认为,这不是凯恩斯所支持的。
就规模而言,我们谈论的是X00k用户,是组织用户连接的4-5倍,以及数以千万计的资源。因此,为了最小化我们在Keycloak中创建的对象的数量,我们决定在存储JSON结构的资源上使用属性。
那么,一个微服务如何通过另一个微服务来验证用户对资源管理器的访问呢?
发布于 2021-07-12 10:51:41
尝试启用细粒度授权:https://www.keycloak.org/docs/latest/authorization_services/#_resource_server_enable_authorization
这允许基于资源的授权。资源不一定是您拥有的每个资源,而是一个抽象(如org_manager等).
或者,您可以使用您已经拥有的json,并使用您定义的策略询问OPA代理。
https://stackoverflow.com/questions/60827577
复制相似问题