community.general.keycloak_clienttemplate – Позволяет администрировать шаблоны клиентов Keycloak через API Keycloak
Примечание
Этот плагин входит в коллекцию community.general (версия 2.0.1).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.keycloak_clienttemplate.
Обзор
- Этот модуль позволяет администрировать шаблоны клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, осуществляющий подключение, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak, admin-cli и администраторский пользователь будут работать, так же как и отдельное определение клиента со scope, настроенным под ваши потребности, и пользователем с соответствующими ролями.
- Имена параметров модуля — это snake_cased версии camelCase имён, встречающихся в API Keycloak и его документации по адресу https://www.keycloak.org/docs-api/8.0/rest-api/index.html
- API Keycloak не всегда проверяет, используются ли только разумные параметры — например, вы можете установить параметры, специфичные для SAML, на клиенте OpenID Connect, и наоборот. Будьте внимательны. Если вы не указываете параметр, обычно выбирается разумное значение по умолчанию.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| attributes словарь | Словарь дополнительных атрибутов для этого шаблона клиента. Он может содержать различные параметры конфигурации, хотя в стандартной установке Keycloak по состоянию на 3.4 они не документированы или неизвестны, поэтому он обычно пустой. | ||
| auth_client_id строка | По умолчанию: "admin-cli" | OpenID Connect client_id для аутентификации с API. | |
| auth_client_secret строка | Секретный ключ клиента для использования совместно с auth_client_id (если требуется). | ||
| auth_keycloak_url строка / обязательно | URL-адрес экземпляра Keycloak. алиасы: url | ||
| auth_password строка / обязательно | Пароль для аутентификации доступа к API. алиасы: password | ||
| auth_realm строка / обязательно | Имя домена Keycloak для аутентификации доступа к API. | ||
| auth_username строка / обязательно | Имя пользователя для аутентификации доступа к API. алиасы: username | ||
| description строка | Описание шаблона клиента в Keycloak | ||
| full_scope_allowed булево |
| Включено ли разрешение на "Полный доступ" для этого шаблона клиента. Это 'fullScopeAllowed' в REST API Keycloak. | |
| id строка | Идентификатор шаблона клиента, с которым необходимо работать. Обычно это UUID. | ||
| name строка | Имя шаблона клиента | ||
| protocol строка |
| Тип шаблона клиента (либо протокол, либо тип). | |
| protocol_mappers список / элементы=словарь | список словарей, определяющих мапперы протокола для этого шаблона клиента. Это 'protocolMappers' в REST API Keycloak. | ||
| config словарь | Словарь, определяющий параметры конфигурации для маппера протокола; содержимое отличается в зависимости от значения protocolMapper и не документировано, за исключением источника мапперов и его родительских классов. Пример приведён ниже. Наиболее простой способ получить допустимые значения конфигурации — вывести конфигурацию уже существующего маппера протокола в режиме проверки ("existing"). | ||
| consentRequired булево |
| Указывает, требуется ли пользовательское согласие для клиента, чтобы этот маппер был активен. | |
| consentText строка | Человеко-читаемое имя согласия, которое пользователь должен принять. | ||
| id строка | Обычно UUID, определяющий внутренний ID экземпляра маппера протокола. | ||
| name строка | Имя этого маппера протокола. | ||
| protocol строка |
| равно 'openid-connect' или 'saml', это указывает, для какого протокола активен этот маппер протокола. | |
| protocolMapper строка | Внутреннее имя Keycloak типа этого маппера протокола. Хотя исчерпывающий список невозможен, поскольку он может быть расширен через SPI пользователем Keycloak, по умолчанию Keycloak по состоянию на 3.4 поставляет как минимум docker-v2-allow-all-mapperoidc-address-mapperoidc-full-name-mapperoidc-group-membership-mapperoidc-hardcoded-claim-mapperoidc-hardcoded-role-mapperoidc-role-name-mapperoidc-script-based-protocol-mapperoidc-sha256-pairwise-sub-mapperoidc-usermodel-attribute-mapperoidc-usermodel-client-role-mapperoidc-usermodel-property-mapperoidc-usermodel-realm-role-mapperoidc-usersessionmodel-note-mappersaml-group-membership-mappersaml-hardcode-attribute-mappersaml-hardcode-role-mappersaml-role-list-mappersaml-role-name-mappersaml-user-attribute-mappersaml-user-property-mappersaml-user-session-note-mapperПолный список доступных мапперов в вашей установке можно получить на консоли администратора, перейдя в Server Info -> Providers и просмотрев раздел 'protocol-mapper'. | ||
| realm строка | По умолчанию: "master" | Домен, в котором находится этот шаблон клиента. | |
| state строка |
| Состояние шаблона клиента В случае present, шаблон клиента будет создан (или обновлён, если он уже существует).В случае absent, шаблон клиента будет удалён, если он существует | |
| validate_certs булево |
| Проверять сертификаты TLS (не отключайте это в рабочей среде). | |
Примечания
Примечание
- REST API Keycloak определяет дополнительные поля (а именно bearerOnly, consentRequired, standardFlowEnabled, implicitFlowEnabled, directAccessGrantsEnabled, serviceAccountsEnabled, publicClient и frontchannelLogout), которые, хотя и доступны с помощью keycloak_client, не оказывают никакого влияния на шаблоны клиентов Keycloak и отбрасываются при отправке запроса API для изменения шаблонов клиентов. Поэтому они недоступны через этот модуль.
Примеры
- name: Create or update Keycloak client template (minimal)
local_action:
module: keycloak_clienttemplate
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
realm: master
name: this_is_a_test
- name: Delete Keycloak client template
local_action:
module: keycloak_clienttemplate
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
realm: master
state: absent
name: test01
- name: Create or update Keycloak client template (with a protocol mapper)
local_action:
module: keycloak_clienttemplate
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
realm: master
name: this_is_a_test
protocol_mappers:
- config:
access.token.claim: True
claim.name: "family_name"
id.token.claim: True
jsonType.label: String
user.attribute: lastName
userinfo.token.claim: True
consentRequired: True
consentText: "${familyName}"
name: family name
protocol: openid-connect
protocolMapper: oidc-usermodel-property-mapper
full_scope_allowed: false
id: bce6f5e9-d7d3-4955-817e-c5b7f8d65b3f
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| end_state словарь | всегда | Представление шаблона клиента после выполнения модуля (пример урезан) Пример: {'description': 'test01', 'fullScopeAllowed': False, 'id': '9c3712ab-decd-481e-954f-76da7b006e5f', 'name': 'test01', 'protocol': 'saml'} |
| existing словарь | всегда | Представление существующего шаблона клиента (пример урезан) Пример: {'description': 'test01', 'fullScopeAllowed': False, 'id': '9c3712ab-decd-481e-954f-76da7b006e5f', 'name': 'test01', 'protocol': 'saml'} |
| msg строка | всегда | Сообщение о том, какое действие было выполнено Пример: Шаблон клиента testclient был обновлён |
| proposed словарь | всегда | Представление шаблона клиента с предлагаемыми изменениями Пример: {'name': 'test01'} |
Авторы
- Eike Frost (@eikef)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/keycloak_clienttemplate_module.html