keycloak_clienttemplate - Позволяет администрировать шаблоны клиентов Keycloak через API Keycloak
Новая версия с 2.5.
Обзор
- Этот модуль позволяет администрировать шаблоны клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak admin-cli и административный пользователь будут работать, а также отдельное определение клиента со scope, настроенным под ваши нужды, и пользователем с ожидаемыми ролями.
- Имена параметров модуля — snake_cased версии camelCase, найденные в API Keycloak и его документации по адресу http://www.keycloak.org/docs-api/3.3/rest-api/
- API Keycloak не всегда накладывает ограничения на использование только разумных настроек — вы можете задавать SAML-специфичные настройки для клиента OpenID Connect и наоборот. Будьте осторожны. Если вы не указываете настройку, обычно выбирается разумное значение по умолчанию.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| attributes | Словарь дополнительных атрибутов для этого шаблона клиента. Он может содержать различные параметры конфигурации, хотя в стандартной установке Keycloak по состоянию на 3.4 они не документированы или неизвестны, поэтому обычно пуст. | ||
| auth_client_id обязательно | 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 | Включено ли для этого шаблона клиента свойство «Разрешено использование полного объема» или нет. В Keycloak REST API это — 'fullScopeAllowed'. | ||
| id | Идентификатор шаблона клиента, над которым нужно работать. Обычно это UUID. | ||
| name | Название шаблона клиента | ||
| protocol |
| Тип шаблона клиента (либо openid-connect или saml. | |
| protocol_mappers | Список словарей, определяющих мапперы протоколов для этого шаблона клиента. В Keycloak REST API это 'protocolMappers'. | ||
| consentText | Текстовое название согласия, которое отображается пользователю для принятия. | ||
| protocol |
| Может быть 'openid-connect' или 'saml', это указывает, для какого протокола активен данный маппер протокола. | |
| name | Название данного маппера протокола. | ||
| config | Словарь, задающий параметры конфигурации для маппера протокола; содержимое зависит от значения protocolMapper и не документировано, кроме как исходным кодом мапперов и родительскими классами. Пример приведен ниже. Легче всего получить допустимые значения конфигурации, выведя существующую конфигурацию маппера протокола в режиме проверки в поле «existing». | ||
| 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». | ||
| consentRequired | Указывает, требуется ли пользователю согласие с клиентом, чтобы этот маппер был активен. | ||
| id | Обычно UUID, определяющий внутренний идентификатор этого экземпляра маппера протокола. | ||
| realm | Домен, в котором находится этот шаблон клиента. | ||
| state |
| Состояние шаблона клиента В present, шаблон клиента будет создан (или обновлен, если он уже существует).В absent, шаблон клиента будет удален, если он существует | |
| validate_certs | По умолчанию: да | Проверять сертификаты TLS (не отключайте это в рабочей среде). | |
Примечания
Примечание
- Keycloak REST API определяет дополнительные поля (именно 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 словарь | всегда | Представление шаблона клиента после выполнения модуля (пример усечен) Пример: {'fullScopeAllowed': False, 'protocol': 'saml', 'id': '9c3712ab-decd-481e-954f-76da7b006e5f', 'name': 'test01', 'description': 'test01'} |
| existing словарь | всегда | Представление существующего шаблона клиента (пример усечен) Пример: {'fullScopeAllowed': False, 'protocol': 'saml', 'id': '9c3712ab-decd-481e-954f-76da7b006e5f', 'name': 'test01', 'description': 'test01'} |
| 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.5/modules/keycloak_clienttemplate_module.html