community.general.keycloak_authz_permission 模块 – 允许通过 Keycloak API 管理 Keycloak 客户端授权权限
注意
此模块是 community.general 集合(版本 10.1.0)的一部分。
如果您正在使用 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。
要在剧本中使用它,请指定:community.general.keycloak_authz_permission
。
community.general 7.2.0 中的新增功能
概要
此模块允许通过 Keycloak REST API 管理 Keycloak 客户端授权权限。仅当客户端启用授权时,授权权限才可用。
授权权限的 JSON 路径和有效负载存在一些特殊性。特别是,POST 和 PUT 操作的目标是权限端点,而 GET 请求则转到策略端点。更令人感兴趣的是,GET 请求的 JSON 响应返回的数据格式与 POST 和 PUT 所期望的格式不同。最终结果是无法检测到策略、范围或资源等内容的更改,至少在不进行大量额外 API 调用的情况下是无法检测到的。因此,此模块始终更新授权权限,而不是尝试确定是否真的需要更改。
此模块需要通过 OpenID Connect 访问 REST API;连接的用户和正在使用的领域必须具有所需的访问权限。在默认的 Keycloak 安装中,admin-cli 和管理员用户可以工作,使用范围适合您的需求且具有预期角色的用户,也可以使用单独的领域定义。
模块选项的名称是 Keycloak 使用的 camelCase 选项的蛇形小写版本。Keycloak 项目尚未正式记录授权服务路径和有效负载。https://www.puppeteers.net/blog/keycloak-authorization-services-rest-api-paths-and-payload/
参数
参数 |
注释 |
---|---|
用于使用 OpenID Connect 默认: |
|
与 |
|
Keycloak 实例的 URL。 |
|
用于使用 API 访问进行身份验证的密码。 |
|
用于使用 API 访问进行身份验证的 Keycloak 领域名称。 |
|
用于使用 API 访问进行身份验证的用户名。 |
|
应具有授权范围的 Keycloak 客户端的 clientId。 这通常是 Keycloak 客户端的人类可读名称。 |
|
控制与 Keycloak API 的 HTTP 连接超时时间段(以秒为单位)。 默认: |
|
此权限使用的决策策略。 选项
|
|
授权权限的描述。 |
|
配置 HTTP User-Agent 标头。 默认: |
|
要创建的授权权限的名称。 |
|
授权许可的类型。 选择 选择 选项
|
|
要附加到此许可的策略名称。 默认值: |
|
Keycloak 客户端所在的 Keycloak realm 的名称。 |
|
要附加到此许可的资源名称。 基于作用域的许可只能包含一个资源。 基于资源的许可可以包含多个资源。 默认值: |
|
要附加到此许可的作用域名称。 基于资源的许可不能附加作用域。 默认值: |
|
授权许可的状态。 选择 选择 选项
|
|
Keycloak API 的身份验证令牌。 |
|
验证 TLS 证书(请勿在生产环境中禁用此项)。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完全 |
可以在 |
|
支持: 无 |
在 diff 模式下,将返回已更改(或可能需要在 |
示例
- name: Manage scope-based Keycloak authorization permission
community.general.keycloak_authz_permission:
name: ScopePermission
state: present
description: Scope permission
permission_type: scope
scopes:
- file:delete
policies:
- Default Policy
client_id: myclient
realm: myrealm
auth_keycloak_url: https://127.0.0.1:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
- name: Manage resource-based Keycloak authorization permission
community.general.keycloak_authz_permission:
name: ResourcePermission
state: present
description: Resource permission
permission_type: resource
resources:
- Default Resource
policies:
- Default Policy
client_id: myclient
realm: myrealm
auth_keycloak_url: https://127.0.0.1:8080/auth
auth_username: keycloak
auth_password: keycloak
auth_realm: master
返回值
通用返回值记录在 此处,以下是此模块独有的字段
键 |
描述 |
---|---|
模块执行后授权许可的表示形式。 返回: 成功时 |
|
有关采取的操作的消息。 返回: 总是 |
作者
Samuli Seppänen (@mattock)