community.general.keycloak_clienttemplate – Позволяет администрировать шаблоны клиентов Keycloak через API Keycloak
Примечание
Этот плагин является частью коллекции community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.keycloak_clienttemplate.
Обзор
- Этот модуль позволяет управлять шаблонами клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; у пользователя, осуществляющего подключение, и используемого клиента должны быть соответствующие права доступа. В стандартной установке Keycloak административные клиенты (admin-cli) и административные пользователи будут работать, как и отдельное определение клиента с областью, настроенной под ваши потребности, и пользователем, имеющим соответствующие роли.
- Имена параметров модуля — это записи в snake_case, соответствующие названиям в 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 логический тип |
| Включен ли параметр «Разрешено полное охватывание» для этого шаблона клиента. В REST API Keycloak это 'fullScopeAllowed'. | |
| id строка | Идентификатор шаблона клиента для обработки. Обычно это UUID. | ||
| name строка | Имя шаблона клиента | ||
| protocol строка |
| Тип шаблона клиента (либо openid-connect, либо saml. | |
| protocol_mappers список / элементы=словарь | Список словарей, определяющих мапперы протоколов для этого шаблона клиента. Это 'protocolMappers' в REST API Keycloak. | ||
| config словарь | Словарь, определяющий параметры конфигурации для маппера протокола; содержимое отличается в зависимости от значения protocolMapper и не документировано, за исключением источника мапперов и его родительского класса(ов). Пример приведён ниже. Лучше всего получить допустимые значения конфигурации, выведя конфигурацию уже существующего маппера протокола в режиме проверки в поле «existing». | ||
| consentRequired логический тип |
| Указывает, требуется ли пользователю предоставить согласие клиенту, чтобы этот маппер был активным. | |
| consentText строка | Текстовое описание согласия, которое представлено пользователю для принятия. | ||
| id строка | Обычно UUID, определяющий внутренний ID этого экземпляра маппера протокола. | ||
| name строка | Имя этого маппера протокола. | ||
| protocol строка |
| либо 'openid-connect', либо 'saml', указывает, для какого протокола этот маппер протокола активен. | |
| protocolMapper строка | Внутреннее имя Keycloak типа этого маппера протокола. Хотя исчерпывающий список невозможно предоставить, поскольку это может быть расширено через SPIs пользователем 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 (не отключайте это в рабочей среде). | |
Примечания
Примечание
- API REST 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/keycloak_clienttemplate_module.html