搜索

17.7. 角色操作

download PDF

创建 realm 角色

使用 roles 端点来创建 realm 角色。

$ kcadm.sh create roles -r demorealm -s name=user -s 'description=Regular user with a limited set of permissions'

创建客户端角色

  1. 确定客户端。
  2. 使用 get 命令列出可用的客户端。

    $ kcadm.sh get clients -r demorealm --fields id,clientId
  3. 使用 clientId 属性创建新角色来构造端点 URI,如 clients/ID/roles

    例如:

    $ kcadm.sh create clients/a95b6af3-0bdc-4878-ae2e-6d61a4eca9a0/roles -r demorealm -s name=editor -s 'description=Editor can edit, and publish any article'

列出 realm 角色

roles 端点使用 get 命令来列出现有的 realm 角色。

$ kcadm.sh get roles -r demorealm

您还可以使用 get-roles 命令。

$ kcadm.sh get-roles -r demorealm

列出客户端角色

Red Hat build of Keycloak 有一个专用的 get-roles 命令,可简化域和客户端角色列表。命令是 get 命令的扩展,其行为与 get 命令相同,但具有列出角色的额外语义。

通过传递 clientId (--cclientid)选项或 id (--c id )选项,使用 get-roles 命令来识别客户端以列出客户端角色。

例如:

$ kcadm.sh get-roles -r demorealm --cclientid realm-management

获取特定的域角色

使用 get 命令和角色名称,为特定域角色(role /ROLE_NAME )构造端点 URI,其中 user 是现有角色的名称。

例如:

$ kcadm.sh get roles/user -r demorealm

您可以使用 get-roles 命令,传递角色名称(--rolename 选项)或 ID (--roleid 选项)。

例如:

$ kcadm.sh get-roles -r demorealm --rolename user

获取特定的客户端角色

使用 get-roles 命令,传递 clientId 属性(--cclientid 选项)或 ID 属性(--cid 选项)来识别客户端,并传递角色名称(--rolename 选项)或角色 ID 属性(--roleid)来标识特定的客户端角色。

例如:

$ kcadm.sh get-roles -r demorealm --cclientid realm-management --rolename manage-clients

更新 realm 角色

使用 update 命令和您用来获取特定域角色的端点 URI。

例如:

$ kcadm.sh update roles/user -r demorealm -s 'description=Role representing a regular user'

更新客户端角色

使用 update 命令和您用来获取特定客户端角色的端点 URI。

例如:

$ kcadm.sh update clients/a95b6af3-0bdc-4878-ae2e-6d61a4eca9a0/roles/editor -r demorealm -s 'description=User that can edit, and publish articles'

删除 realm 角色

使用 delete 命令和您用来获取特定域角色的端点 URI。

例如:

$ kcadm.sh delete roles/user -r demorealm

删除客户端角色

使用 delete 命令和您用来获取特定客户端角色的端点 URI。

例如:

$ kcadm.sh delete clients/a95b6af3-0bdc-4878-ae2e-6d61a4eca9a0/roles/editor -r demorealm

列出复合角色的已分配、可用和有效域角色

使用 get-roles 命令列出为复合角色分配的、可用和有效的域角色。

  1. 要列出复合角色的 分配的 域角色,请按名称(--rname 选项)或 ID (--rid 选项指定目标复合角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole
  2. 使用 -- effective 选项列出有效的域角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole --effective
  3. 使用 --available 选项列出您可以添加到复合角色的域角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole --available

列出复合角色的已分配、可用和有效的客户端角色

使用 get-roles 命令列出为复合角色分配的、可用和有效的客户端角色。

  1. 要列出为复合角色分配的客户端角色,您可以按名称(--rname 选项)或 ID (--rid 选项)和客户端(--cclientid 选项)或 ID (--cid 选项指定目标复合角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole --cclientid realm-management
  2. 使用 -- effective 选项列出有效的域角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole --cclientid realm-management --effective
  3. 使用 --available 选项列出您可以添加到目标复合角色的域角色。

    例如:

    $ kcadm.sh get-roles -r demorealm --rname testrole --cclientid realm-management --available

将 realm 角色添加到复合角色

红帽构建的 Keycloak 提供了一个 add-roles 命令,用于添加域角色和客户端角色。

本例将用户角色添加到复合角色 testrole

$ kcadm.sh add-roles --rname testrole --rolename user -r demorealm

从复合角色中删除域角色

红帽构建的 Keycloak 提供了一个 remove-roles 命令,用于删除域角色和客户端角色。

以下示例从目标复合角色 testrole 中删除 用户角色

$ kcadm.sh remove-roles --rname testrole --rolename user -r demorealm

将客户端角色添加到域角色

红帽构建的 Keycloak 提供了一个 add-roles 命令,用于添加域角色和客户端角色。

以下示例将客户端 realm-managementcreate-clientview-users 中定义的角色添加到 testrole 复合角色。

$ kcadm.sh add-roles -r demorealm --rname testrole --cclientid realm-management --rolename create-client --rolename view-users

将客户端角色添加到客户端角色

  1. 使用 get-roles 命令确定复合客户端角色的 ID。

    例如:

    $ kcadm.sh get-roles -r demorealm --cclientid test-client --rolename operations
  2. 假设存在一个名为 test-client 的 clientId 属性、名为 support 的客户端角色,以及名为 operations 的客户端角色,它成为复合角色,其 ID 为 "fc400897-ef6a-4e8c-872b-1581b7fa8a71"。
  3. 使用以下示例将另一个角色添加到复合角色。

    $ kcadm.sh add-roles -r demorealm --cclientid test-client --rid fc400897-ef6a-4e8c-872b-1581b7fa8a71 --rolename support
  4. 使用 get-roles --all 命令列出复合角色的角色。

    例如:

    $ kcadm.sh get-roles --rid fc400897-ef6a-4e8c-872b-1581b7fa8a71 --all

从复合角色中删除客户端角色

使用 remove-roles 命令从复合角色中删除客户端角色。

使用以下示例从 testrole 复合角色中删除客户端 realm-management 中定义的两个角色,即 create-client 角色和 view-users 角色。

$ kcadm.sh remove-roles -r demorealm --rname testrole --cclientid realm-management --rolename create-client --rolename view-users

将客户端角色添加到组中

使用 add-roles 命令添加 realm 角色和客户端角色。

以下示例将客户端 realm-managementcreate-clientview-users 中定义的角色添加到 Group 组(--gname 选项)。或者,您可以根据 ID (--gid 选项)指定组。

如需更多信息 ,请参阅 组操作

$ kcadm.sh add-roles -r demorealm --gname Group --cclientid realm-management --rolename create-client --rolename view-users

从组中删除客户端角色

使用 remove-roles 命令从组中删除客户端角色。

以下示例从组组中删除客户端域管理、create-clientview-users 中定义的两个角色。

如需更多信息 ,请参阅 组操作

$ kcadm.sh remove-roles -r demorealm --gname Group --cclientid realm-management --rolename create-client --rolename view-users
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.