【问题标题】:Keycloak, sharing resources between clientsKeycloak,在客户端之间共享资源
【发布时间】:2020-07-04 17:50:51
【问题描述】:

我们正在开发具有基于微服务架构的应用程序,其中用户可以是组织的成员,并且在每个组织内,他们可能具有基于资源的访问限制。例如,招聘人员是平台上多个组织的成员;在组织 A 中,他们可能会看到所有职位发布和面试官的列表,而在组织 B 中,他们只能看到他们直接被允许查看的职位发布。

在结构上,这变成了这样:

这一切似乎都可以通过 Keycloak 轻松完成,我们创建机密客户端(每个微服务一个)并在它们上启用资源管理。但是,在相当多的情况下,不同的微服务(即 Keycloak 客户端)需要验证用户对同一资源的访问范围。例如,我们有 2 个微服务,一个用于发布和管理工作公告,另一个用于管理申请和面试,例如 job-managerapplication-manager。现在,当提交新申请或面试官尝试访问应用程序时,application-manager 必须确保用户有权访问在 job 中配置的职位发布(资源) -manager Keycloak 客户端。我认为 Keycloak 不支持。

在规模方面,我们谈论的是 X00k 用户、4-5 倍的组织用户连接以及数千万资源。因此,为了尽量减少我们在 Keycloak 中创建的对象数量,我们决定利用存储 JSON 结构的资源的属性。

那么,一个微服务如何通过另一个微服务验证用户对资源管理器的访问?

【问题讨论】:

  • 您找到问题的答案了吗?

标签: oauth-2.0 authorization microservices keycloak openid-connect


【解决方案1】:

尝试启用细粒度授权: https://www.keycloak.org/docs/latest/authorization_services/#_resource_server_enable_authorization

这允许基于资源的授权。资源不一定是您拥有的每个资源,而是像 org_manager 等抽象...

或者,您可以使用已有的 json 并使用您定义的策略询问 OPA 代理。

https://www.openpolicyagent.org/

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2019-04-02
    • 2016-03-01
    相关资源
    最近更新 更多