Spec-Zone.ru › Ansible

community.general.keycloak_user_federation модуль — Позволяет администрировать федерации пользователей Keycloak через API Keycloak

Примечание

Этот модуль входит в коллекцию community.general (версия 9.5.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. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь необходимые права доступа. В стандартной установке Keycloak admin-cli и административный пользователь будут работать, как и отдельное определение клиента с объемом, настроенным под ваши потребности, и пользователем с ожидаемыми ролями.
  • Имена опций модуля — snake_case версии camelCase, встречающиеся в API Keycloak и его документации по адресу https://www.keycloak.org/docs-api/20.0.2/rest-api/index.html.

Параметры

Параметр

Комментарии

auth_client_id

строка

OpenID Connect client_id для аутентификации в API.

По умолчанию: "admin-cli"

auth_client_secret

строка

Секретный ключ клиента для использования совместно с auth_client_id (если требуется).

auth_keycloak_url

псевдонимы: url

строка / обязательно

URL-адрес экземпляра Keycloak.

auth_password

псевдонимы: пароль

строка

Пароль для аутентификации с доступом к API.

auth_realm

строка

Имя домена Keycloak для аутентификации с доступом к API.

auth_username

псевдонимы: имя пользователя

строка

Имя пользователя для аутентификации с доступом к API.

bind_credential_update_mode

строка

добавлено в community.general 9.5.0

Значение конфигурационного параметра config.bindCredential скрывается в ответах Keycloak. Сравнение скрытого значения с желаемым значением всегда дает результат «не равно». Это означает, что предыдущее и желаемое состояния никогда не будут равны, если параметр задан.

Установите always для включения config.bindCredential в сравнение предыдущего и желаемого состояния. Из-за скрытого значения, возвращаемого Keycloak, модуль всегда будет обнаруживать изменение и производить обновление, если установлено значение config.bindCredential.

Установите only_indirect для исключения config.bindCredential при сравнении предыдущего состояния с желаемым состоянием. Значение config.bindCredential будет обновлено только в том случае, если есть другие изменения в конфигурации федерации пользователей, требующие обновления.

Варианты:

  • "always" ← (по умолчанию)
  • "only_indirect"

config

словарь

Словарь, определяющий параметры конфигурации поставщика; содержание отличается в зависимости от значения provider_id. Примеры для ldap, kerberos и sssd приведены ниже. Самый простой способ получить действительные значения конфигурации — вывести существующую конфигурацию федерации пользователей с помощью режима проверки в поле existing.

Значение sssd поддерживается с версии community.general 4.2.0.

allowKerberosAuthentication

логическое значение

Включить/отключить HTTP-аутентификацию пользователей с токенами SPNEGO/Kerberos. Данные об аутентифицированных пользователях будут получены с этого сервера LDAP.

Варианты:

  • false ← (по умолчанию)
  • true

allowPasswordAuthentication

логическое значение

Включить/отключить возможность аутентификации с именем пользователя/паролем по отношению к базе данных Kerberos.

Варианты:

  • false
  • true

authType

строка

Тип метода аутентификации, используемого во время операции привязки LDAP. Он используется в большинстве запросов, отправляемых на сервер LDAP.

Варианты:

  • "none" ← (по умолчанию)
  • "simple"

batchSizeForSync

целое число

Количество пользователей LDAP, которые должны быть импортированы из LDAP в Keycloak в рамках одной транзакции.

По умолчанию: 1000

bindCredential

строка

Пароль администратора LDAP.

bindDn

строка

DN пользователя LDAP, который будет использоваться Keycloak для доступа к серверу LDAP.

cachePolicy

строка

Политика кэширования для этого поставщика хранилища.

Варианты:

  • "DEFAULT" ← (по умолчанию)
  • "EVICT_DAILY"
  • "EVICT_WEEKLY"
  • "MAX_LIFESPAN"
  • "NO_CACHE"

changedSyncPeriod

целое число

Период синхронизации изменённых или вновь созданных пользователей LDAP в секундах.

По умолчанию: -1

connectionPooling

логическое значение

Определяет, будет ли Keycloak использовать пулы соединений для доступа к серверу LDAP.

Варианты:

  • false
  • true ← (по умолчанию)
END_OF_DOCUMENT_MARKER

connectionPoolingAuthentication

string

Список типов аутентификации подключений, которые могут быть объединены в пул, разделённых пробелом.

Варианты:

  • "none"
  • "simple"
  • "DIGEST-MD5"

connectionPoolingDebug

string

Строка, определяющая уровень отладки. Примеры допустимых значений: fine (отслеживание создания и удаления подключений) и all (вся информация об отладке).

connectionPoolingInitSize

integer

Количество подключений на идентификатор подключения, создаваемое при первоначальном создании подключения для идентификатора.

connectionPoolingMaxSize

integer

Максимальное количество подключений на идентификатор подключения, которое может быть поддерживаемо одновременно.

connectionPoolingPrefSize

integer

Предпочтительное количество подключений на идентификатор подключения, которое должно поддерживаться одновременно.

connectionPoolingProtocol

string

Список типов протоколов подключений, которые могут быть объединены в пул, разделённых пробелом. Допустимые типы: plain и ssl.

connectionPoolingTimeout

integer

Количество миллисекунд, которое может простаивать подключение в пуле без закрытия и удаления из пула.

connectionTimeout

integer

Время ожидания подключения LDAP в миллисекундах.

connectionUrl

string

URL подключения к серверу LDAP.

customUserSearchFilter

string

Дополнительный фильтр LDAP для фильтрации искомых пользователей. Оставьте пустым, если не требуется дополнительный фильтр.

debug

boolean

Включить/отключить отладку протоколирования в стандартный вывод для Krb5LoginModule.

Варианты:

  • false
  • true

editMode

string

READ_ONLY — хранилище LDAP только для чтения. WRITABLE — данные будут синхронизированы обратно в LDAP по требованию. UNSYNCED — данные пользователей будут импортированы, но не будут синхронизированы обратно в LDAP.

Варианты:

  • "READ_ONLY"
  • "WRITABLE"
  • "UNSYNCED"

enabled

boolean

Включить/отключить эту федерацию пользователей.

Варианты:

  • false
  • true ← (по умолчанию)

evictionDay

string

День недели, когда запись станет недействительной.

evictionHour

string

Час дня, когда запись станет недействительной.

evictionMinute

string

Минута дня, когда запись станет недействительной.

fullSyncPeriod

integer

Период для полной синхронизации в секундах.

По умолчанию: -1

importEnabled

boolean

Если true, пользователи LDAP будут импортированы в базу данных Keycloak и синхронизированы с помощью настроенных политик синхронизации.

Варианты:

  • false
  • true ← (по умолчанию)

kerberosRealm

string

Имя домена Kerberos.

keyTab

string

Путь к файлу Kerberos KeyTab, содержащему учетные данные серверного принципала. Например /etc/krb5.keytab.

krbPrincipalAttribute

строка

добавлен в community.general 8.1.0

Имя атрибута LDAP, который ссылается на Kerberos-принципал. Используется для поиска соответствующего пользователя LDAP после успешной аутентификации Kerberos/SPNEGO в Keycloak. Если этот параметр пуст, пользователь LDAP будет найден по имени пользователя LDAP, соответствующему первой части его Kerberos-принципала. Например, для принципала john@KEYCLOAK.ORG, будет предполагаться, что имя пользователя LDAP равно john.

maxLifespan

целое число

Максимальное время жизни записи кэша в миллисекундах.

pagination

булево

Поддерживает ли сервер LDAP пагинацию.

Варианты:

  • false
  • true ← (по умолчанию)

priority

целое число

Приоритет поставщика при поиске пользователя. Наименьший сначала.

По умолчанию: 0

rdnLDAPAttribute

строка

Имя атрибута LDAP, используемого в качестве RDN (верхнего атрибута) типичного DN пользователя. Обычно оно совпадает с атрибутом имени пользователя LDAP, однако это необязательно. Например, для Active Directory обычно используется cn в качестве атрибута RDN, когда атрибут имени пользователя может быть sAMAccountName.

readTimeout

целое число

Тайм-аут чтения LDAP в миллисекундах. Этот тайм-аут применяется для операций чтения LDAP.

referral

строка

добавлен в community.general 9.5.0

Указывает, следует ли следовать ссылкам LDAP или игнорировать их. Обратите внимание, что включение ссылок может замедлить аутентификацию, так как это позволяет серверу LDAP решать, какие другие серверы LDAP использовать. Это потенциально может включать ненадежные серверы.

Варианты:

  • "ignore"
  • "follow"

searchScope

строка

Для одного уровня поиск применяется только для пользователей в DN, указанных в User DNs. Для поддерева поиск применяется ко всему поддереву. Для получения дополнительной информации см. документацию LDAP.

Варианты:

  • "1" ← (по умолчанию)
  • "2"

serverPrincipal

строка

Полное имя серверного принципала для HTTP-сервиса, включая сервер и доменное имя. Например, HTTP/host.foo.org@FOO.ORG. Используйте * для принятия любого сервисного принципала в файле KeyTab.

startTls

булево

Шифрует соединение с LDAP с помощью STARTTLS, что отключит кэширование соединений.

Варианты:

  • false ← (по умолчанию)
  • true

syncRegistrations

булево

Создавать ли новых пользователей в хранилище LDAP? Приоритет влияет на то, какой поставщик выбран для синхронизации нового пользователя.

Варианты:

  • false ← (по умолчанию)
  • true

trustEmail

булево

Если включено, электронная почта, предоставленная этим поставщиком, не проверяется, даже если проверка включена для домена.

Варианты:

  • false ← (по умолчанию)
  • true

updateProfileFirstLogin

булево

Обновить профиль при первой авторизации.

Варианты:

  • false
  • true

useKerberosForPasswordAuthentication

булево

Использовать модуль входа Kerberos для аутентификации имени пользователя/пароля на сервере Kerberos вместо аутентификации на сервере LDAP с помощью API службы каталогов.

Варианты:

  • false ← (по умолчанию)
  • true

usePasswordModifyExtendedOp

булево

Использовать расширенную операцию изменения пароля LDAPv3 (RFC-3062). Расширенная операция изменения пароля обычно требует, чтобы у пользователя LDAP уже был пароль на сервере LDAP. Поэтому при использовании с «Sync Registrations» можно также добавить «Hardcoded LDAP attribute mapper» со случайно сгенерированным начальным паролем.

Варианты:

  • false ← (по умолчанию)
  • true

usernameLDAPAttribute

строка

Имя атрибута LDAP, отображаемого как имя пользователя Keycloak. Для многих поставщиков серверов LDAP это может быть uid. Для Active Directory это может быть sAMAccountName или cn. Атрибут должен быть заполнен для всех записей пользователей LDAP, которые вы хотите импортировать из LDAP в Keycloak.

userObjectClasses

string

Все значения атрибута LDAP objectClass для пользователей в LDAP, разделенные запятыми. Например inetOrgPerson, organizationalPerson. Созданные пользователи Keycloak будут записаны в LDAP со всеми этими классами объектов, а существующие записи пользователей LDAP будут найдены только в том случае, если они содержат все эти классы объектов.

usersDn

string

Полный DN дерева LDAP, где находятся ваши пользователи. Этот DN является родителем пользователей LDAP.

useTruststoreSpi

string

Указывает, будет ли подключение LDAP использовать SPI хранилища доверенных сертификатов с хранилищем доверенных сертификатов, настроенным в standalone.xml/domain.xml. always означает, что он всегда будет использоваться. never означает, что он не будет использоваться. ldapsOnly означает, что он будет использоваться, если ваш URL-адрес подключения использует ldaps. Примечание: даже если standalone.xml/domain.xml не настроен, будет использоваться стандартный Java cacerts или сертификат, указанный свойством javax.net.ssl.trustStore.

Варианты:

  • "always"
  • "ldapsOnly" ← (по умолчанию)
  • "never"

uuidLDAPAttribute

string

Имя атрибута LDAP, используемого в качестве уникального идентификатора объекта (UUID) для объектов в LDAP. Для многих поставщиков серверов LDAP это entryUUID; однако некоторые отличаются. Например, для Active Directory это должно быть objectGUID. Если ваш сервер LDAP не поддерживает понятие UUID, вы можете использовать любой другой атрибут, который должен быть уникальным среди пользователей LDAP в дереве.

validatePasswordPolicy

boolean

Определяет, должен ли Keycloak проверять пароль по политике пароля домена перед его обновлением.

Варианты:

  • false ← (по умолчанию)
  • true

vendor

string

Поставщик LDAP (провайдер).

Используйте короткое имя. Например, напишите rhds для «Red Hat Directory Server».

connection_timeout

integer

added in community.general 4.5.0

Управляет временем ожидания подключений HTTP (в секундах) к API Keycloak.

По умолчанию: 10

http_agent

string

added in community.general 5.4.0

Настраивает заголовок HTTP User-Agent.

По умолчанию: "Ansible"

id

string

Уникальный идентификатор для этой федерации пользователей. Если поле оставлено пустым, федерация пользователей будет найдена по ее name.

mappers

list / elements=dictionary

Список словарей, определяющих мапперы, связанные с этим поставщиком идентификации.

config

dictionary

Словарь, определяющий параметры конфигурации маппера; содержимое зависит от значения identityProviderMapper.

id

string

Уникальный идентификатор этого маппера.

name

string

Имя маппера. Если идентификатор не указан, маппер будет найден по имени.

parentId

string

Уникальный идентификатор родительского элемента для этого маппера. Идентификатор федерации пользователей будет автоматически использован, если поле оставлено пустым.

providerId

string

Тип маппера для данного маппера (например user-attribute-ldap-mapper).

providerType

string

Тип компонента для этого маппера.

По умолчанию: "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"

name

string

Имя поставщика для отображения при подключении в консоли администрирования.

parent_id

aliases: parentId

string

Уникальный идентификатор родительской федерации пользователей. Идентификатор домена будет автоматически использован, если поле оставлено пустым.

provider_id

aliases: providerId

string

Поставщик для этой федерации пользователей. Встроенные поставщики — ldap, kerberos, и sssd. Также можно использовать настраиваемые поставщики хранения пользователей.

provider_type

aliases: providerType

string

Тип компонента для федерации пользователей (поддерживается только значение org.keycloak.storage.UserStorageProvider).

По умолчанию: "org.keycloak.storage.UserStorageProvider"

realm

string

Область Keycloak, в которой находится эта федерация пользователей.

По умолчанию: "master"

remove_unspecified_mappers

boolean

добавлен в community.general 9.4.0

Удалить мапперы, которые не указаны в конфигурации для этой федерации.

Установите false, чтобы сохранить мапперы, которые не перечислены в mappers.

Выбор:

  • false
  • true ← (по умолчанию)

state

string

Состояние федерации пользователей.

При значении present, федерация пользователей будет создана, если она еще не существует, или обновлена с предоставленными параметрами.

При значении absent, федерация пользователей будет удалена, если она существует.

Выбор:

  • "present" ← (по умолчанию)
  • "absent"

token

string

добавлен в community.general 3.0.0

Токен аутентификации для API Keycloak.

validate_certs

boolean

Проверка TLS-сертификатов (не отключайте это в производственной среде).

Выбор:

  • false
  • true ← (по умолчанию)

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в check_mode и возвращать прогноз состояния изменения без модификации целевого объекта.

diff_mode

Поддержка: полная

Вернет подробности о том, что изменилось (или, возможно, нуждается в изменении в check_mode), при режиме 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/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

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:

Ключ

Описание

end_state

словарь

Представление федерации пользователей после выполнения модуля.

Возвращается: при успехе

Пример: {"config": {"allowPasswordAuthentication": "false", "cachePolicy": "DEFAULT", "enabled": "true", "kerberosRealm": "EXAMPLE.COM", "keyTab": "/etc/krb5.keytab", "priority": "0", "serverPrincipal": "HTTP/host.example.com@EXAMPLE.COM", "updateProfileFirstLogin": "false"}, "id": "cf52ae4f-4471-4435-a0cf-bb620cadc122", "mappers": [], "name": "kerberos", "parentId": "myrealm", "providerId": "kerberos", "providerType": "org.keycloak.storage.UserStorageProvider"}

existing

словарь

Представление существующей федерации пользователей.

Возвращается: всегда

Пример: {"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "**********", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "changedSyncPeriod": "-1", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ_ONLY", "enabled": "true", "fullSyncPeriod": "-1", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "id": "01122837-9047-4ae4-8ca0-6e2e891a765f", "mappers": [{"config": {"always.read.value.from.ldap": "false", "is.mandatory.in.ldap": "false", "ldap.attribute": "mail", "read.only": "true", "user.model.attribute": "email"}, "id": "17d60ce2-2d44-4c2c-8b1f-1fba601b9a9f", "name": "email", "parentId": "01122837-9047-4ae4-8ca0-6e2e891a765f", "providerId": "user-attribute-ldap-mapper", "providerType": "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"}], "name": "myfed", "parentId": "myrealm", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}

msg

строка

Сообщение о произведённом действии.

Возвращается: всегда

Пример: "No changes required to user federation 164bb483-c613-482e-80fe-7f1431308799."

proposed

словарь

Представление предлагаемой федерации пользователей.

Возвращается: всегда

Пример: {"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "**********", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ_ONLY", "enabled": "true", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "name": "ldap", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}

Авторы

  • Laurent Paumier (@laurpaum)

Ссылки на сборку

  • Система отслеживания проблем
  • Репозиторий (источники)
  • Задать вопрос
  • Отправить сообщение об ошибке
  • Запросить новую функцию
  • Общение

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/keycloak_user_federation_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API