community.general.keycloak_userprofile 模块 – 允许管理 Keycloak 用户配置文件

注意

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

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

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

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

community.general 9.4.0 中的新增功能

概要

  • 此模块允许您通过 Keycloak API 创建、更新或删除 Keycloak 用户配置文件。您还可以使用它自定义“未托管的属性”。

  • 模块选项的名称是 Keycloak API 及其文档中找到的 camelCase 版本的 snake_cased 版本,网址为 https://keycloak.java.net.cn/docs-api/24.0.5/rest-api/index.html。出于兼容性原因,该模块也接受选项的 camelCase 版本。

参数

参数

注释

auth_client_id

字符串

用于向 API 进行身份验证的 OpenID Connect client_id

默认: "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 访问身份验证的用户名。

config

字典

用户配置文件提供程序的配置。

kc_user_profile_config

别名:kcUserProfileConfig

列表 / elements=dictionary

定义声明式用户配置文件。有关更多上下文,请参见示例。

attributes

列表 / elements=dictionary

要包含在用户配置文件中的属性列表。

annotations

字典

属性的注释。

display_name

别名:displayName

字符串 / 必需

属性的显示名称。

group

字符串

指定将添加此属性的用户配置文件组。

multivalued

布尔值

属性是否可以具有多个值。

选项

  • false ← (默认)

  • true

name

字符串 / 必需

属性的名称。

permissions

字典

用于查看和编辑属性的权限。

edit

列表 / elements=string

可以编辑属性的角色。

支持的值为 adminuser

默认: ["admin", "user"]

view

列表 / elements=string

可以查看属性的角色。

支持的值为 adminuser

默认: ["admin", "user"]

required

字典

需要此属性的角色。

roles

列表 / elements=string

需要此属性的角色。

支持的值为 adminuser

默认: ["user"]

validations

字典

要应用于属性的验证。

email

字典

属性的电子邮件验证。

length

字典

属性的长度验证。

max

整数 / 必需

属性的最大长度。

min

整数

属性的最小长度。

options

字典

验证以确保属性与提供的选项之一匹配。

pattern

字典

使用正则表达式对属性进行的模式验证。

person_name_prohibited_characters

别名: personNameProhibitedCharacters

字典

针对人名属性的禁用字符验证。

up_username_not_idn_homograph

别名: upUsernameNotIdnHomograph

字典

用于防止用户名中出现 IDN 同形字攻击的验证。

uri

字典

针对属性的 URI 验证。

username_prohibited_characters

别名: usernameProhibitedCharacters

字典

针对用户名属性的禁用字符验证。

groups

列表 / elements=dictionary

要包含在用户配置中的属性组列表。

annotations

字典

包含在组中的注解。

display_description

别名: displayDescription

字符串

组的显示描述。

display_header

别名: displayHeader

字符串 / 必需

组的显示标题。

name

字符串 / 必需

组的名称。

unmanaged_attribute_policy

别名: unmanagedAttributePolicy

字符串

针对非托管属性的策略。

选项

  • "ENABLED"

  • "ADMIN_EDIT"

  • "ADMIN_VIEW"

connection_timeout

整数

在 community.general 4.5.0 中添加

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

默认值: 10

http_agent

字符串

在 community.general 5.4.0 中添加

配置 HTTP User-Agent 标头。

默认值: "Ansible"

parent_id

别名: parentId, realm

字符串 / 必需

领域密钥的父 ID。 实际上是领域的 ID(名称)。

provider_id

别名: providerId

字符串

密钥的提供程序 ID 的名称(支持的值为 declarative-user-profile)。

选项

  • "declarative-user-profile" ← (默认)

provider_type

别名: providerType

字符串

用户配置的组件类型(唯一支持的值是 org.keycloak.userprofile.UserProfileProvider)。

选项

  • "org.keycloak.userprofile.UserProfileProvider" ← (默认)

state

字符串

用户配置提供程序的状态。

当为 present 时,如果用户配置提供程序尚不存在,则会创建它,或者使用您提供的参数更新它。

当为 absent 时,如果用户配置提供程序存在,则会删除它。

选项

  • "present" ← (默认)

  • "absent"

token

字符串

在 community.general 3.0.0 中添加

Keycloak API 的身份验证令牌。

validate_certs

布尔值

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

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持: 完全

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

diff_mode

支持: 完全

在差异模式下,将返回有关已更改的内容(或可能需要在 check_mode 中更改的内容)的详细信息。

说明

注意

示例

- name: Create a Declarative User Profile with default settings
  community.general.keycloak_userprofile:
    state: present
    parent_id: master
    config:
      kc_user_profile_config:
        - attributes:
            - name: username
              displayName: ${username}
              validations:
                length:
                  min: 3
                  max: 255
                username_prohibited_characters: {}
                up_username_not_idn_homograph: {}
              annotations: {}
              permissions:
                view:
                  - admin
                  - user
                edit: []
              multivalued: false
            - name: email
              displayName: ${email}
              validations:
                email: {}
                length:
                  max: 255
              annotations: {}
              required:
                roles:
                  - user
              permissions:
                view:
                  - admin
                  - user
                edit: []
              multivalued: false
            - name: firstName
              displayName: ${firstName}
              validations:
                length:
                  max: 255
                person_name_prohibited_characters: {}
              annotations: {}
              required:
                roles:
                  - user
              permissions:
                view:
                  - admin
                  - user
                edit: []
              multivalued: false
            - name: lastName
              displayName: ${lastName}
              validations:
                length:
                  max: 255
                person_name_prohibited_characters: {}
              annotations: {}
              required:
                roles:
                  - user
              permissions:
                view:
                  - admin
                  - user
                edit: []
              multivalued: false
          groups:
            - name: user-metadata
              displayHeader: User metadata
              displayDescription: Attributes, which refer to user metadata
              annotations: {}

- name: Delete a Keycloak User Profile Provider
  keycloak_userprofile:
    state: absent
    parent_id: master

# Unmanaged attributes are user attributes not explicitly defined in the User Profile
# configuration. By default, unmanaged attributes are "Disabled" and are not
# available from any context such as registration, account, and the
# administration console. By setting "Enabled", unmanaged attributes are fully
# recognized by the server and accessible through all contexts, useful if you are
# starting migrating an existing realm to the declarative User Profile
# and you don't have yet all user attributes defined in the User Profile configuration.
- name: Enable Unmanaged Attributes
  community.general.keycloak_userprofile:
    state: present
    parent_id: master
    config:
      kc_user_profile_config:
        - unmanagedAttributePolicy: ENABLED

# By setting "Only administrators can write", unmanaged attributes can be managed
# only through the administration console and API, useful if you have already
# defined any custom attribute that can be managed by users but you are unsure
# about adding other attributes that should only be managed by administrators.
- name: Enable ADMIN_EDIT on Unmanaged Attributes
  community.general.keycloak_userprofile:
    state: present
    parent_id: master
    config:
      kc_user_profile_config:
        - unmanagedAttributePolicy: ADMIN_EDIT

# By setting `Only administrators can view`, unmanaged attributes are read-only
# and only available through the administration console and API.
- name: Enable ADMIN_VIEW on Unmanaged Attributes
  community.general.keycloak_userprofile:
    state: present
    parent_id: master
    config:
      kc_user_profile_config:
        - unmanagedAttributePolicy: ADMIN_VIEW

返回值

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

描述

data

字典

Keycloak API 返回的数据。

返回: 当状态为 present 时

示例: {"...": null}

msg

字符串

模块生成的输出消息。

返回: 始终

示例: "UserProfileProvider created successfully"

作者

  • Eike Waldt (@yeoldegrove)