community.general.keycloak_client_rolescope 模块 – 允许管理 Keycloak 客户端角色范围,以限制某些角色在其他特定客户端应用程序中的使用。

注意

此模块是 community.general 集合(版本 10.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了这个集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general

要在 playbook 中使用它,请指定: community.general.keycloak_client_rolescope

community.general 8.6.0 中的新增功能

概要

  • 此模块允许您通过 Keycloak REST API 添加或删除客户端范围中的 Keycloak 角色。它需要通过 OpenID Connect 访问 REST API;连接的用户和正在使用的客户端必须具有必要的访问权限。在默认的 Keycloak 安装中,admin-cli 和一个管理员用户可以工作,一个单独的客户端定义也可以,该客户端的范围根据您的需求量身定制,并且一个用户具有预期的角色。

  • 客户端 client_id 必须将 full_scope_allowed 设置为 false

  • 属性在 Keycloak API 中是多值的。所有属性都是单个值的列表,并且将以此方式由该模块返回。您可以在调用模块时传递属性的单个值,这将转换为适合 API 的列表。

参数

参数

注释

auth_client_id

字符串

用于使用 OpenID Connect client_id 验证 API 身份。

默认值: "admin-cli"

auth_client_secret

字符串

auth_client_id 结合使用的客户端密钥(如果需要)。

auth_keycloak_url

别名:url

字符串 / 必需

Keycloak 实例的 URL。

auth_password

别名:password

字符串

用于 API 访问的身份验证密码。

auth_realm

字符串

用于 API 访问的 Keycloak 领域名称。

auth_username

别名:username

字符串

用于 API 访问的身份验证用户名。

client_id

字符串 / 必需

role_names 中提供的角色将被添加到此客户端范围。

client_scope_id

字符串

如果 role_names 是客户端角色,则它所在的客户端 ID。

如果此参数不存在,则角色被视为领域角色。

connection_timeout

整数

在 community.general 4.5.0 中添加

控制与 Keycloak API 的 HTTP 连接超时时间(以秒为单位)。

默认值: 10

http_agent

字符串

在 community.general 5.4.0 中添加

配置 HTTP User-Agent 标头。

默认值: "Ansible"

realm

字符串

客户端所在的 Keycloak 领域。

默认值: "master"

role_names

列表 / 元素=字符串 / 必需

要操作的角色名称。

如果存在 client_scope_id,则所有角色必须在此客户端下。

如果不存在 client_scope_id,则所有角色必须在领域下。

state

字符串

角色映射的状态。

当为 present 时,如果还不存在,则将映射 role_names 中的所有角色。

当为 absent 时,如果存在,则将删除 role_names 中的所有角色映射。

选项

  • "present" ←(默认)

  • "absent"

token

字符串

在 community.general 3.0.0 中添加

Keycloak API 的身份验证令牌。

validate_certs

布尔值

验证 TLS 证书(请勿在生产环境中禁用此项)。

选项

  • false

  • true ←(默认)

属性

属性

支持

描述

check_mode

支持: 完全支持

可以在 check_mode 中运行,并返回更改状态预测,而无需修改目标。

diff_mode

支持: 完全支持

当处于 diff 模式时,将返回有关已更改(或在 check_mode 中可能需要更改)的详细信息。

示例

- name: Add roles to public client scope
  community.general.keycloak_client_rolescope:
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    auth_username: USERNAME
    auth_password: PASSWORD
    realm: MyCustomRealm
    client_id: frontend-client-public
    client_scope_id: backend-client-private
    role_names:
    - backend-role-admin
    - backend-role-user

- name: Remove roles from public client scope
  community.general.keycloak_client_rolescope:
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    auth_username: USERNAME
    auth_password: PASSWORD
    realm: MyCustomRealm
    client_id: frontend-client-public
    client_scope_id: backend-client-private
    role_names:
    - backend-role-admin
    state: absent

- name: Add realm roles to public client scope
  community.general.keycloak_client_rolescope:
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    auth_username: USERNAME
    auth_password: PASSWORD
    realm: MyCustomRealm
    client_id: frontend-client-public
    role_names:
    - realm-role-admin
    - realm-role-user

返回值

通用返回值记录在这里,以下是此模块特有的字段

描述

end_state

列表 / 元素=字典

模块执行后角色作用域的表示。

返回: 成功时

示例: [{"clientRole": false, "composite": false, "containerId": "MyCustomRealm", "id": "47293104-59a6-46f0-b460-2e9e3c9c424c", "name": "backend-role-admin"}, {"clientRole": false, "composite": false, "containerId": "MyCustomRealm", "id": "39c62a6d-542c-4715-92d2-41021eb33967", "name": "backend-role-user"}]

msg

字符串

关于采取了什么操作的消息。

返回: 总是

示例: "客户端 角色 作用域 对于 frontend-client-public 已更新"

作者

  • Andre Desrosiers (@desand01)