Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Keycloak KeyClope-为每个租户/帐户授予用户不同的权限_Keycloak_Keycloak Services - Fatal编程技术网

Keycloak KeyClope-为每个租户/帐户授予用户不同的权限

Keycloak KeyClope-为每个租户/帐户授予用户不同的权限,keycloak,keycloak-services,Keycloak,Keycloak Services,我们正在使用Key斗篷提供SaaS服务。每个用户都是租户/帐户的一部分,具有访问此帐户数据的特定角色。角色在keydape中配置,相关帐户保存为用户的用户属性 现在我们有了一个新的要求,允许用户访问多个帐户。对于每个帐户,用户可能具有不同的角色: User A: - Account A: - ADMIN - Account B: - Reader User B - Account B: - Reader ... 我找到了很多关于多租户的不同方法的文章,但没有这方面的文章。大多数文

我们正在使用Key斗篷提供SaaS服务。每个用户都是租户/帐户的一部分,具有访问此帐户数据的特定角色。角色在keydape中配置,相关帐户保存为用户的用户属性

现在我们有了一个新的要求,允许用户访问多个帐户。对于每个帐户,用户可能具有不同的角色:

User A:
- Account A:
  - ADMIN
- Account B:
  - Reader 
User B
- Account B:
  - Reader
...
我找到了很多关于多租户的不同方法的文章,但没有这方面的文章。大多数文章结合了角色和组。但在我的情况下,我需要为每个帐户创建一个新组。所以我最终会有成千上万的团体

现在,我的API可以根据发布的JWT授权请求。理想情况下我可以保留这个

实现这种结构(用户可以访问多个具有不同角色的帐户)的最佳方式是什么? 钥匙斗篷真的能做到这一点吗

还是我在往错误的方向想? 这听起来像是一个相当常见的用例

已经非常感谢了

角色在keydape中配置,相关帐户保存为用户的>用户属性

我不知道你为什么需要这个,因为你可以根据用户角色推断

现在我们有了一个新的要求,允许用户访问多个 账户。对于这些帐户中的每一个,用户可能有不同的 角色:

如果我完全理解您的问题,我认为可以通过客户级别的角色来解决。例如:

转到:

  • 你的王国
  • 客户
  • 账户A
  • 角色
  • 增加角色
  • 设置角色并保存它

要将角色设置为用户,请转到

  • 你的王国
  • 用户
  • 点击用户
  • 角色映射
  • 从“客户端角色”下拉列表中选择客户端(例如,帐户A)
  • 增加角色

现在,我的API可以根据发布的JWT授权请求。 理想情况下我可以保留这个

代表
用户a
帐户a
发出的令牌请求是什么样子的:

  "acr": "1",
  "realm_access": {
    "roles": [
      "offline_access",
      "uma_authorization"
    ]
  },
  "resource_access": {
    "AccountA": {
      "roles": [
        "ADMIN"
      ]
    },
    "AccountB": {
      "roles": [
        "Reader"
      ]
    },
    "account": {
      "roles": [
        "manage-account",
        "view-profile"
      ]
    }
  },
有人可能会说,当从客户端
帐户a
请求令牌时,实际上并不关心客户端
帐户B
中的角色。这可以通过使用KeyClope的范围特性来解决。使用此功能,可以从与当前客户机相关的其他客户机中选择角色。默认情况下,包含所有角色。尽管如此,要筛选角色,您需要:

  • 你的王国
  • 客户
  • 在这种情况下,客户账户A
  • 范围
  • 切换到
    关闭
    允许的选项
    全范围
  • 保存

令牌现在的样子:

  "resource_access": {
    "AccountA": {
      "roles": [
        "ADMIN"
      ]
    }
  },