18.8. 角色操作


创建 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 命令列出现有的域角色。

$ 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 命令和 角色名称 为特定域角色 roles/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 命令和您用来获取特定 realm 角色的端点 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 命令和用于获取特定 realm 角色的端点 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 选项)指定目标复合角色,并通过 clientId 属性(--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 角色添加到复合角色中

Red Hat build of Keycloak 提供了一个 add-roles 命令,用于添加 realm 角色和客户端角色。

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

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

从复合角色中删除 realm 角色

Red Hat build of Keycloak 提供了一个 remove-roles 命令,用于删除 realm 角色和客户端角色。

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

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

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

Red Hat build of Keycloak 提供了一个 add-roles 命令,用于添加 realm 角色和客户端角色。

以下示例将客户端 realm-management 中定义的角色、create-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-management 中定义的角色create-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 命令从组中删除客户端角色。

以下示例从 Group 组中删除客户端 realm-management 上定义的两个角色: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.