17.7. 角色操作
创建 realm 角色
使用 roles
端点来创建 realm 角色。
$ kcadm.sh create roles -r demorealm -s name=user -s 'description=Regular user with a limited set of permissions'
创建客户端角色
- 确定客户端。
使用
get
命令列出可用的客户端。$ kcadm.sh get clients -r demorealm --fields id,clientId
使用
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
命令列出为复合角色分配的、可用和有效的域角色。
要列出复合角色的 分配的 域角色,请按名称(
--rname
选项)或 ID (--rid
选项指定目标复合角色。例如:
$ kcadm.sh get-roles -r demorealm --rname testrole
使用
-- effective
选项列出有效的域角色。例如:
$ kcadm.sh get-roles -r demorealm --rname testrole --effective
使用
--available
选项列出您可以添加到复合角色的域角色。例如:
$ kcadm.sh get-roles -r demorealm --rname testrole --available
列出复合角色的已分配、可用和有效的客户端角色
使用 get-roles
命令列出为复合角色分配的、可用和有效的客户端角色。
要列出为复合角色分配的客户端角色,您可以按名称(
--rname
选项)或 ID (--rid
选项)和客户端(--cclientid
选项)或 ID (--cid
选项指定目标复合角色。例如:
$ kcadm.sh get-roles -r demorealm --rname testrole --cclientid realm-management
使用
-- effective
选项列出有效的域角色。例如:
$ kcadm.sh get-roles -r demorealm --rname testrole --cclientid realm-management --effective
使用
--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-management
、create-client
和 view-users
中定义的角色添加到 testrole
复合角色。
$ kcadm.sh add-roles -r demorealm --rname testrole --cclientid realm-management --rolename create-client --rolename view-users
将客户端角色添加到客户端角色
使用
get-roles
命令确定复合客户端角色的 ID。例如:
$ kcadm.sh get-roles -r demorealm --cclientid test-client --rolename operations
-
假设存在一个名为
test-client
的 clientId 属性、名为support
的客户端角色,以及名为operations
的客户端角色,它成为复合角色,其 ID 为 "fc400897-ef6a-4e8c-872b-1581b7fa8a71"。 使用以下示例将另一个角色添加到复合角色。
$ kcadm.sh add-roles -r demorealm --cclientid test-client --rid fc400897-ef6a-4e8c-872b-1581b7fa8a71 --rolename support
使用
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-client
和 view-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-client
和 view-users
中定义的两个角色。
如需更多信息 ,请参阅 组操作。
$ kcadm.sh remove-roles -r demorealm --gname Group --cclientid realm-management --rolename create-client --rolename view-users