community.general.keycloak_user_federation 模块 – 允许通过 Keycloak API 管理 Keycloak 用户联合
注意
此模块是 community.general 集合(版本 10.1.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.general。
要在 playbook 中使用它,请指定:community.general.keycloak_user_federation。
community.general 3.7.0 中的新功能
概要
- 此模块允许您通过 Keycloak REST API 添加、删除或修改 Keycloak 用户联合。 它需要通过 OpenID Connect 访问 REST API;连接的用户和正在使用的客户端必须具有必要的访问权限。 在默认的 Keycloak 安装中,admin-cli 和管理员用户可以工作,具有针对您的需求量身定制的作用域和具有预期角色的单独客户端定义也可以工作。 
- 模块选项的名称是 Keycloak API 及其文档(位于 https://keycloak.com.cn/docs-api/20.0.2/rest-api/index.html)中找到的 camelCase 版本的 snake_cased 版本。 
参数
| 参数 | 注释 | 
|---|---|
| OpenID Connect  默认:  | |
| 与  | |
| Keycloak 实例的 URL。 | |
| 用于 API 访问的身份验证密码。 | |
| 用于 API 访问的身份验证 Keycloak 领域名称。 | |
| 用于 API 访问的身份验证用户名。 | |
| config 参数  设置为  设置为  选择 
 | |
| 一个字典,指定提供程序的配置选项;其内容取决于  自 community.general 4.2.0 版本起支持  | |
| 启用/禁用使用 SPNEGO/Kerberos 令牌对用户进行 HTTP 身份验证。经过身份验证的用户数据将从此 LDAP 服务器提供。 选择 
 | |
| 启用/禁用针对 Kerberos 数据库使用用户名/密码进行身份验证的可能性。 选择 
 | |
| LDAP 绑定操作期间使用的身份验证方法类型。它用于发送到 LDAP 服务器的大多数请求中。 选择 
 | |
| 在单个事务中从 LDAP 导入到 Keycloak 的 LDAP 用户计数。 默认值:  | |
| LDAP 管理员的密码。 | |
| Keycloak 用于访问 LDAP 服务器的 LDAP 用户的 DN。 | |
| 此存储提供程序的缓存策略。 选择 
 | |
| 同步已更改或新创建的 LDAP 用户的周期(以秒为单位)。 默认值:  | |
| 确定 Keycloak 是否应使用连接池来访问 LDAP 服务器。 选择 
 | |
| 可能被池化的连接的以空格分隔的身份验证类型列表。 选择 
 | |
| 一个字符串,指示要生成的调试输出级别。有效的示例值包括  | |
| 在最初为身份创建连接时,每个连接身份要创建的连接数。 | |
| 可以同时维护的每个连接身份的最大连接数。 | |
| 应该同时维护的每个连接身份的首选连接数。 | |
| 可能被池化的连接的以空格分隔的协议类型列表。有效类型为  | |
| 空闲连接可以在池中保留而不会被关闭并从池中删除的毫秒数。 | |
| LDAP 连接超时(以毫秒为单位)。 | |
| 到 LDAP 服务器的连接 URL。 | |
| 用于过滤搜索用户的其他 LDAP 过滤器。如果不需要其他过滤器,请将其留空。 | |
| 启用/禁用 Krb5LoginModule 的调试日志记录到标准输出。 选择 
 | |
| 
 选择 
 | |
| 启用/禁用此用户联合。 选择 
 | |
| 该条目失效的星期几。 | |
| 该条目失效的当天的小时。 | |
| 该条目失效的当天的分钟。 | |
| 完全同步的周期(以秒为单位)。 默认值:  | |
| 如果为  选择 
 | |
| Kerberos 域的名称。 | |
| 包含服务器主体凭据的 Kerberos KeyTab 文件位置。例如  | |
| LDAP 属性的名称,它引用 Kerberos 主体。这用于在 Keycloak 中成功进行 Kerberos/SPNEGO 身份验证后查找相应的 LDAP 用户。当此为空时,将基于 LDAP 用户名(对应于其 Kerberos 主体的第一部分)查找 LDAP 用户。例如,对于主体  | |
| 缓存条目的最大生命周期(以毫秒为单位)。 | |
| LDAP 服务器是否支持分页。 选择 
 | |
| 执行用户查找时提供程序的优先级。最低优先级优先。 默认值:  | |
| LDAP 属性的名称,它用作典型用户 DN 的 RDN(顶部属性)。通常,它与 Username LDAP 属性相同,但不是必需的。例如,对于 Active Directory,通常使用  | |
| LDAP 读取超时(以毫秒为单位)。此超时适用于 LDAP 读取操作。 | |
| 指定是否应遵循或忽略 LDAP 引用。请注意,启用引用可能会减慢身份验证速度,因为它允许 LDAP 服务器决定要使用哪些其他 LDAP 服务器。这可能包括不受信任的服务器。 选择 
 | |
| 对于一层,搜索仅适用于“用户 DN”指定的 DN 中的用户。对于子树,搜索适用于整个子树。有关更多详细信息,请参阅 LDAP 文档。 选择 
 | |
| HTTP 服务的服务器主体的完整名称,包括服务器和域名。例如  | |
| 使用 STARTTLS 加密与 LDAP 的连接,这将禁用连接池。 选择 
 | |
| 是否应在 LDAP 存储中创建新创建的用户?优先级会影响选择哪个提供程序来同步新用户。 选择 
 | |
| 如果启用,即使该域启用了验证,此提供程序提供的电子邮件也不会被验证。 选择 
 | |
| 在首次登录时更新个人资料。 选择 
 | |
| 使用 Kerberos 登录模块对 Kerberos 服务器进行用户名/密码身份验证,而不是使用目录服务 API 对 LDAP 服务器进行身份验证。 选择 
 | |
| 使用 LDAPv3 密码修改扩展操作 (RFC-3062)。密码修改扩展操作通常需要 LDAP 用户在 LDAP 服务器中已经有密码。因此,当将其与“同步注册”一起使用时,最好添加一个具有随机生成的初始密码的“硬编码 LDAP 属性映射器”。 选择 
 | |
| LDAP 属性的名称,它映射为 Keycloak 用户名。对于许多 LDAP 服务器供应商,它可以是  | |
| LDAP 中用户的 LDAP objectClass 属性的所有值,以逗号分隔。例如  | |
| 用户所在的 LDAP 树的完整 DN。此 DN 是 LDAP 用户的父级。 | |
| 指定 LDAP 连接是否将使用 standalone.xml/domain.xml 中配置的信任存储 SPI。 选择 
 | |
| 用于 LDAP 中对象的唯一对象标识符 (UUID) 的 LDAP 属性的名称。对于许多 LDAP 服务器供应商来说,它是  | |
| 确定 Keycloak 是否应在更新密码之前使用 realm 密码策略验证密码。 选择 
 | |
| LDAP 供应商(提供商)。 使用简称。例如,对于“Red Hat Directory Server”,请写  | |
| 控制与 Keycloak API 的 HTTP 连接超时时间(以秒为单位)。 默认值:  | |
| 配置 HTTP User-Agent 标头。 默认值:  | |
| 此用户联合的唯一 ID。如果留空,将通过其  | |
| 定义与此身份提供程序关联的映射器的字典列表。 | |
| 指定映射器配置选项的字典;内容取决于 identityProviderMapper 的值。 | |
| 此映射器的唯一 ID。 | |
| 映射器的名称。如果没有给出 ID,将按名称搜索映射器。 | |
| 此映射器父项的唯一 ID。如果留空,将自动使用用户联合的 ID。 | |
| 此映射器的映射器类型(例如  | |
| 此映射器的组件类型。 默认值:  | |
| 在管理控制台中链接时提供程序的显示名称。 | |
| 此用户联合的父项的唯一 ID。如果留空,将自动使用 Realm ID。 | |
| 此用户联合的提供程序。内置提供程序为  | |
| 用户联合的组件类型(仅支持的值为  默认值:  | |
| 此用户联合所在的 Keycloak Realm。 默认值:  | |
| 用户联合的状态。 设置为  设置为  选择 
 | |
| Keycloak API 的身份验证令牌。 | |
| 验证 TLS 证书(请勿在生产环境中禁用此选项)。 选择 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持:完全 | 可以在  | |
| 支持:完全 | 当处于 diff 模式时,将返回已更改(或可能需要在  | 
示例
- name: Create LDAP user federation
  community.general.keycloak_user_federation:
    auth_keycloak_url: https://keycloak.example.com/auth
    auth_realm: master
    auth_username: admin
    auth_password: password
    realm: my-realm
    name: my-ldap
    state: present
    provider_id: ldap
    provider_type: org.keycloak.storage.UserStorageProvider
    config:
      priority: 0
      enabled: true
      cachePolicy: DEFAULT
      batchSizeForSync: 1000
      editMode: READ_ONLY
      importEnabled: true
      syncRegistrations: false
      vendor: other
      usernameLDAPAttribute: uid
      rdnLDAPAttribute: uid
      uuidLDAPAttribute: entryUUID
      userObjectClasses: inetOrgPerson, organizationalPerson
      connectionUrl: ldaps://ldap.example.com:636
      usersDn: ou=Users,dc=example,dc=com
      authType: simple
      bindDn: cn=directory reader
      bindCredential: password
      searchScope: 1
      validatePasswordPolicy: false
      trustEmail: false
      useTruststoreSpi: ldapsOnly
      connectionPooling: true
      pagination: true
      allowKerberosAuthentication: false
      debug: false
      useKerberosForPasswordAuthentication: false
    mappers:
      - name: "full name"
        providerId: "full-name-ldap-mapper"
        providerType: "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"
        config:
          ldap.full.name.attribute: cn
          read.only: true
          write.only: false
- name: Create Kerberos user federation
  community.general.keycloak_user_federation:
    auth_keycloak_url: https://keycloak.example.com/auth
    auth_realm: master
    auth_username: admin
    auth_password: password
    realm: my-realm
    name: my-kerberos
    state: present
    provider_id: kerberos
    provider_type: org.keycloak.storage.UserStorageProvider
    config:
      priority: 0
      enabled: true
      cachePolicy: DEFAULT
      kerberosRealm: EXAMPLE.COM
      serverPrincipal: HTTP/[email protected]
      keyTab: keytab
      allowPasswordAuthentication: false
      updateProfileFirstLogin: false
- name: Create sssd user federation
  community.general.keycloak_user_federation:
    auth_keycloak_url: https://keycloak.example.com/auth
    auth_realm: master
    auth_username: admin
    auth_password: password
    realm: my-realm
    name: my-sssd
    state: present
    provider_id: sssd
    provider_type: org.keycloak.storage.UserStorageProvider
    config:
      priority: 0
      enabled: true
      cachePolicy: DEFAULT
- name: Delete user federation
  community.general.keycloak_user_federation:
    auth_keycloak_url: https://keycloak.example.com/auth
    auth_realm: master
    auth_username: admin
    auth_password: password
    realm: my-realm
    name: my-federation
    state: absent
返回值
常见的返回值记录在此处,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 模块执行后用户联合的表示形式。 已返回:成功时 示例:  | |
| 现有用户联合的表示形式。 已返回:始终 示例:  | |
| 关于采取了什么操作的消息。 已返回:始终 示例:  | |
| 建议的用户联合的表示形式。 已返回:始终 示例:  | 
