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
。
要在剧本中使用它,请指定: community.general.keycloak_user_federation
。
community.general 3.7.0 中的新增功能
概要
此模块允许您通过 Keycloak REST API 添加、删除或修改 Keycloak 用户联合。它需要通过 OpenID Connect 访问 REST API;连接的用户和使用的客户端必须具有必要的访问权限。在默认的 Keycloak 安装中,admin-cli 和管理员用户都可以工作,单独的客户端定义(其范围根据您的需求进行调整)和具有预期角色的用户也可以工作。
模块选项的名称是 Keycloak API 及其文档中找到的 camelCase 名称的 snake_case 版本,网址为 https://keycloak.java.net.cn/docs-api/20.0.2/rest-api/index.html。
参数
参数 |
注释 |
---|---|
用于向 API 进行身份验证的 OpenID Connect 默认值: |
|
与 |
|
Keycloak 实例的 URL。 |
|
用于 API 访问身份验证的密码。 |
|
用于 API 访问身份验证的 Keycloak realm 名称。 |
|
用于 API 访问身份验证的用户名。 |
|
Keycloak 响应中会删除配置参数 设置为 设置为 选项
|
|
指定提供程序配置选项的字典;内容取决于 自 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 读取操作。 |
|
到 LDAP 服务器的连接 URL。 |
|
用于过滤搜索用户的附加 LDAP 过滤器。如果不需要附加过滤器,请将其留空。 |
|
启用/禁用对 Krb5LoginModule 的标准输出调试日志记录。 选项
|
|
选项
|
|
启用/禁用此用户联合。 选项
|
|
条目将在其上失效的星期几。 |
|
条目将在其上失效的一天中的小时。 |
|
条目将在其上失效的一天中的分钟。 |
|
完全同步的周期(秒)。 默认值: |
|
如果为 选项
|
|
Kerberos 领域的名称。 |
|
包含服务器主体凭据的 Kerberos KeyTab 文件的位置。例如 |
|
引用 Kerberos 主体的 LDAP 属性的名称。这用于在 Keycloak 中成功进行 Kerberos/SPNEGO 身份验证后查找相应的 LDAP 用户。如果为空,则将根据与 Kerberos 主体第一部分相对应的 LDAP 用户名查找 LDAP 用户。例如,对于主体 |
|
缓存条目最长生命周期(毫秒)。 |
|
LDAP 服务器是否支持分页。 选项
|
|
执行用户查找时提供程序的优先级。数值越低,优先级越高。 默认值: |
|
用作典型用户 DN 的 RDN(顶部属性)的 LDAP 属性的名称。通常它与用户名 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 属性映射器”。 选项
|
|
映射为 Keycloak 用户名的 LDAP 属性的名称。对于许多 LDAP 服务器供应商来说,它可以是 |
|
LDAP 中用户的 LDAP objectClass 属性的所有值,用逗号分隔。例如 |
|
LDAP 树中用户的完整 DN。此 DN 是 LDAP 用户的父级。 |
|
指定 LDAP 连接是否将使用在 standalone.xml/domain.xml 中配置的 truststore 的 truststore SPI。 选项
|
|
LDAP 属性名称,用作 LDAP 对象的唯一对象标识符 (UUID)。对于许多 LDAP 服务器供应商来说,它是 |
|
确定 Keycloak 是否应在更新密码之前使用领域密码策略验证密码。 选项
|
|
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 证书(不要在生产环境中禁用此选项)。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 |
|
支持:完全支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
示例
- 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/host.example.com@EXAMPLE.COM
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
返回值
常见的返回值已在此处记录 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
模块执行后用户联合体的表示。 返回:成功时 示例: |
|
现有用户联合体的表示。 返回:始终返回 示例: |
|
关于采取了什么操作的消息。 返回:始终返回 示例: |
|
建议的用户联合体的表示。 返回:始终返回 示例: |