keycloak_client – Позволяет администрировать клиентов Keycloak через API Keycloak
Новое в версии 2.5.
Обзор
- Этот модуль позволяет администрировать клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak admin-cli и администраторский пользователь будут работать, так же как и отдельное определение клиента со scope, настроенным под ваши нужды, и пользователем с соответствующими ролями.
- Имена параметров модуля — snake_case версии camelCase параметров в API Keycloak и его документации по адресу http://www.keycloak.org/docs-api/3.3/rest-api/. Предоставляются псевдонимы, чтобы можно было использовать и camelCased версии.
- API Keycloak не всегда гарантирует, что используются только разумные настройки — вы можете настроить SAML-специфические настройки для клиента OpenID Connect, например, и наоборот. Будьте внимательны. Если вы не укажете настройку, обычно выбирается разумное значение по умолчанию.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| admin_url - | URL администрирования клиента. Это 'adminUrl' в REST API Keycloak. псевдонимы: adminUrl | ||
| attributes - | Словарь дополнительных атрибутов для данного клиента. Он может содержать различные параметры конфигурации; пример приведён в разделе примеров. Полный список допустимых опций недоступен; возможные опции на момент Keycloak 3.4 перечислены ниже. API Keycloak не проверяет, подходит ли заданная опция для используемого протокола; если опция указана, Keycloak просто её не будет использовать. | ||
| jwks.url - | Для клиентов OpenID-Connect, URL, где хранятся ключи клиента в формате JWK. | ||
| jwt.credential.certificate - | Для клиентов OpenID-Connect, сертификат клиента для проверки JWT, выпущенного клиентом и подписанного его ключом, закодированный в base64. | ||
| request.object.signature.alg - | Для клиентов OpenID-Connect, алгоритм JWA, который клиент должен использовать при отправке объекта запроса OIDC. Один из any, none, RS256. | ||
| saml.authnstatement - | Для клиентов SAML, булево значение, указывающее, следует ли включать в ответ на вход информацию о методе и временной отметке. | ||
| saml.client.signature - | Для клиентов SAML, булево значение, указывающее, требуется ли и проверяется ли подпись клиента. | ||
| saml.encrypt - | Булево значение, указывающее, следует ли шифровать утверждения SAML с помощью открытого ключа клиента. | ||
| saml.force.post.binding - | Для клиентов SAML, булево значение, указывающее, следует ли всегда использовать привязки POST для ответов. | ||
| saml.onetimeuse.condition - | Для клиентов SAML, булево значение, указывающее, следует ли включать условие OneTimeUse в ответы на вход. | ||
| saml.server.signature - | Булево значение, указывающее, следует ли подписывать документы SAML областью. | ||
| saml.server.signature.keyinfo.ext - | Для клиентов SAML, булево значение, указывающее, следует ли оптимизировать поиск ключа подписи через включение идентификатора ключа подписи в элемент SAML Extensions. | ||
| saml.signature.algorithm - | Алгоритм подписи, используемый для подписи документов SAML. Один из RSA_SHA256, RSA_SHA1, RSA_SHA512, или DSA_SHA1. | ||
| saml.signing.certificate - | Сертификат ключа подписи SAML, закодированный в base64. | ||
| saml.signing.private.key - | Закрытый ключ подписи SAML, закодированный в base64. | ||
| saml_assertion_consumer_url_post - | URL SAML POST Binding для службы потребления утверждений клиента (ответов на вход). | ||
| saml_assertion_consumer_url_redirect - | URL SAML Redirect Binding для службы потребления утверждений клиента (ответов на вход). | ||
| saml_force_name_id_format - | Для клиентов SAML, булево значение, указывающее, следует ли игнорировать запрашиваемый формат имени субъекта NameID и использовать настроенный вместо него. | ||
| saml_name_id_format - | Для клиентов SAML, формат NameID для использования (один из username, email, transient, или persistent) | ||
| saml_signature_canonicalization_method - | Метод канонизации подписи SAML. Это одно из четырёх значений, а именно http://www.w3.org/2001/10/xml-exc-c14n# для EXCLUSIVE, http://www.w3.org/2001/10/xml-exc-c14n#WithComments для EXCLUSIVE_WITH_COMMENTS, http://www.w3.org/TR/2001/REC-xml-c14n-20010315 для INCLUSIVE и http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments для INCLUSIVE_WITH_COMMENTS. | ||
| saml_single_logout_service_url_post - | URL SAML POST привязки для службы однократного выхода клиента. | ||
| saml_single_logout_service_url_redirect - | URL SAML Redirect привязки для службы однократного выхода клиента. | ||
| use.jwks.url - | Для клиентов OpenID-Connect, булево значение, указывающее, следует ли использовать JWKS URL для получения открытых ключей клиента. | ||
| user.info.response.signature.alg - | Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов с UserInfo-endpoint. Один из RS256 или unsigned. | ||
| auth_client_id - / обязательно | По умолчанию: "admin-cli" | client_id OpenID Connect для аутентификации с 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 | ||
| authorization_services_enabled - | Включены ли службы авторизации для данного клиента (OpenID Connect). Это 'authorizationServicesEnabled' в REST API Keycloak. псевдонимы: authorizationServicesEnabled | ||
| authorization_settings - | Структура данных, определяющая параметры авторизации для данного клиента. Для справки, см. документацию API Keycloak по адресу http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_resourceserverrepresentation. Это 'authorizationSettings' в REST API Keycloak. псевдонимы: authorizationSettings | ||
| base_url - | URL по умолчанию для использования, когда сервер аутентификации должен перенаправить или связать обратно с клиентом. Это 'baseUrl' в REST API Keycloak. псевдонимы: baseUrl | ||
| bearer_only - | Тип доступа этого клиента — только bearer. Это 'bearerOnly' в REST API Keycloak. псевдонимы: bearerOnly | ||
| client_authenticator_type - |
| Как клиенты аутентифицируются на сервере авторизации? Можно выбрать либо client-secret, либо client-jwt. При использовании client-secret, параметр модуля secret может его задать, а для client-jwt, можно использовать ключи use.jwks.url, jwks.url, и jwt.credential.certificate в параметре модуля attributes для настройки его поведения. Это 'clientAuthenticatorType' в API Keycloak REST.Псевдонимы: clientAuthenticatorType | |
| client_id - | Идентификатор клиента, с которым необходимо работать. Обычно это буквенно-цифровое имя, выбранное вами. Требуется либо это, либо id. Если вы укажете оба, id имеет приоритет. Это 'clientId' в API Keycloak REST. Псевдонимы: clientId | ||
| client_template - | Шаблон клиента, который нужно использовать для этого клиента. Если он не существует, это поле будет тихо удалено. Это 'clientTemplate' в API Keycloak REST. Псевдонимы: clientTemplate | ||
| consent_required - | Если включено, пользователи должны дать согласие на доступ клиента. Это 'consentRequired' в API Keycloak REST. Псевдонимы: consentRequired | ||
| default_roles - | Список ролей по умолчанию для этого клиента. Если ссылаемые роли клиента еще не существуют, они будут созданы. Это 'defaultRoles' в API Keycloak REST. Псевдонимы: defaultRoles | ||
| description - | Описание клиента в Keycloak | ||
| direct_access_grants_enabled - | Включены ли прямые гранты доступа для этого клиента (OpenID connect)? Это 'directAccessGrantsEnabled' в API Keycloak REST. Псевдонимы: directAccessGrantsEnabled | ||
| enabled - | Включен ли этот клиент? | ||
| frontchannel_logout - | Включен ли фронтальный выход для этого клиента? Это 'frontchannelLogout' в API Keycloak REST. Псевдонимы: frontchannelLogout | ||
| full_scope_allowed - | Включена ли функция «Разрешение полного доступа» для этого клиента? Это 'fullScopeAllowed' в API Keycloak REST. Псевдонимы: fullScopeAllowed | ||
| id - | Идентификатор клиента, с которым необходимо работать. Обычно это UUID. Требуется либо это, либо client_id. Если вы укажете оба, приоритет отдается этому. | ||
| implicit_flow_enabled - | Включить неявный поток для этого клиента (OpenID connect)? Это 'implictFlowEnabled' в API Keycloak REST. Псевдонимы: implicitFlowEnabled | ||
| name - | Имя клиента (это не то же самое, что client_id) | ||
| node_re_registration_timeout - | Тайм-аут повторной регистрации узла кластера для этого клиента. Это 'nodeReRegistrationTimeout' в API Keycloak REST. Псевдонимы: nodeReRegistrationTimeout | ||
| not_before - | Отменить все токены, выданные до этой даты для этого клиента (это метка времени UNIX). Это 'notBefore' в API Keycloak REST. Псевдонимы: notBefore | ||
| protocol - |
| Тип клиента (либо openid-connect, либо saml). | |
| protocol_mappers - | список словарей, определяющих мапперы протокола для этого клиента. Это 'protocolMappers' в API Keycloak REST. Псевдонимы: protocolMappers | ||
| config - | Словарь, определяющий параметры конфигурации для маппера протокола; содержимое зависит от значения protocolMapper и не документировано, кроме источника мапперов и его родительских классов(ов). Пример приведен ниже. Легче всего получить допустимые значения конфигурации, выведя конфигурацию уже существующего маппера протокола с помощью режима проверки в поле existing. | ||
| consentRequired - | Указывает, требуется ли пользователю предоставить согласие клиенту для активации этого маппера. | ||
| consentText - | Человекопонятное имя согласия, которое предлагается принять пользователю. | ||
| id - | Обычно UUID, определяющий внутренний идентификатор экземпляра этого маппера протокола. | ||
| 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». | ||
| public_client - | Является ли тип доступа для этого клиента публичным или нет? Это 'publicClient' в API Keycloak REST. Псевдонимы: publicClient | ||
| realm - | Домен, в котором нужно создать клиента. | ||
| redirect_uris - | Допустимые URL-адреса перенаправления для этого клиента. Это 'redirectUris' в API Keycloak REST. Псевдонимы: redirectUris | ||
| registered_nodes - | словарь зарегистрированных узлов кластера (с nodename в качестве ключа и последним временем регистрации в качестве значения). Это 'registeredNodes' в API Keycloak REST.Псевдонимы: registeredNodes | ||
| registration_access_token - | Токен доступа к регистрации предоставляет клиентам доступ к службе регистрации клиента. Это 'registrationAccessToken' в API Keycloak REST. Псевдонимы: registrationAccessToken | ||
| root_url - | Корневой URL, добавляемый к относительным URL-адресам для этого клиента. Это 'rootUrl' в API Keycloak REST. Псевдонимы: rootUrl | ||
| секрет - | При использовании client_authenticator_type client-secret (по умолчанию), вы можете указать секрет здесь (в противном случае он будет сгенерирован, если не существует). При изменении этого секрета модуль не зарегистрирует изменение в настоящее время (но измененный секрет будет сохранен). | ||
| service_accounts_enabled - | Включены ли учетные записи сервисов для этого клиента (OpenID connect)? Это 'serviceAccountsEnabled' в API Keycloak REST. псевдонимы: serviceAccountsEnabled | ||
| standard_flow_enabled - | Включить стандартный поток для этого клиента (OpenID connect)? Это 'standardFlowEnabled' в API Keycloak REST. псевдонимы: standardFlowEnabled | ||
| состояние - |
| Состояние клиента В present, клиент будет создан (или обновлен, если он уже существует).В absent, клиент будет удален, если он существует | |
| surrogate_auth_required - | Требуется ли суррогатная авторизация. Это 'surrogateAuthRequired' в API Keycloak REST. псевдонимы: surrogateAuthRequired | ||
| использовать_шаблон_конфигурации - | Использовать ли конфигурацию из client_template. Это 'useTemplateConfig' в API Keycloak REST. псевдонимы: useTemplateConfig | ||
| использовать_шаблон_мапперов - | Использовать ли конфигурацию мапперов из client_template. Это 'useTemplateMappers' в API Keycloak REST. псевдонимы: useTemplateMappers | ||
| использовать_шаблон_скоупов - | Использовать ли конфигурацию скоупов из client_template. Это 'useTemplateScope' в API Keycloak REST. псевдонимы: useTemplateScope | ||
| проверять_сертификаты boolean |
| Проверять TLS-сертификаты (не отключайте это в рабочей среде). | |
| web_origins - | Список разрешенных источников CORS. Это 'webOrigins' в API Keycloak REST. псевдонимы: webOrigins | ||
Примеры
- name: Create or update Keycloak client (minimal example)
local_action:
module: keycloak_client
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
client_id: test
state: present
- name: Delete a Keycloak client
local_action:
module: keycloak_client
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
client_id: test
state: absent
- name: Create or update a Keycloak client (with all the bells and whistles)
local_action:
module: keycloak_client
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
state: present
realm: master
client_id: test
id: d8b127a3-31f6-44c8-a7e4-4ab9a3e78d95
name: this_is_a_test
description: Description of this wonderful client
root_url: https://www.example.com/
admin_url: https://www.example.com/admin_url
base_url: basepath
enabled: True
client_authenticator_type: client-secret
secret: REALLYWELLKEPTSECRET
redirect_uris:
- https://www.example.com/*
- http://localhost:8888/
web_origins:
- https://www.example.com/*
not_before: 1507825725
bearer_only: False
consent_required: False
standard_flow_enabled: True
implicit_flow_enabled: False
direct_access_grants_enabled: False
service_accounts_enabled: False
authorization_services_enabled: False
public_client: False
frontchannel_logout: False
protocol: openid-connect
full_scope_allowed: false
node_re_registration_timeout: -1
client_template: test
use_template_config: False
use_template_scope: false
use_template_mappers: no
registered_nodes:
node01.example.com: 1507828202
registration_access_token: eyJWT_TOKEN
surrogate_auth_required: false
default_roles:
- test01
- test02
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
- config:
attribute.name: Role
attribute.nameformat: Basic
single: false
consentRequired: false
name: role list
protocol: saml
protocolMapper: saml-role-list-mapper
attributes:
saml.authnstatement: True
saml.client.signature: True
saml.force.post.binding: True
saml.server.signature: True
saml.signature.algorithm: RSA_SHA256
saml.signing.certificate: CERTIFICATEHERE
saml.signing.private.key: PRIVATEKEYHERE
saml_force_name_id_format: False
saml_name_id_format: username
saml_signature_canonicalization_method: "http://www.w3.org/2001/10/xml-exc-c14n#"
user.info.response.signature.alg: RS256
request.object.signature.alg: RS256
use.jwks.url: true
jwks.url: JWKS_URL_FOR_CLIENT_AUTH_JWT
jwt.credential.certificate: JWT_CREDENTIAL_CERTIFICATE_FOR_CLIENT_AUTH
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| end_state словарь | всегда | Представление клиента о клиенте после выполнения модуля (пример усечен) Пример: {'adminUrl': 'http://www.example.com/admin_url', 'attributes': {'request.object.signature.alg': 'RS256'}} |
| existing словарь | всегда | Представление клиента о существующем клиенте (пример усечен) Пример: {'adminUrl': 'http://www.example.com/admin_url', 'attributes': {'request.object.signature.alg': 'RS256'}} |
| msg строка | всегда | Сообщение о том, какое действие было предпринято Пример: Клиент testclient был обновлен |
| proposed словарь | всегда | Представление клиента о предлагаемых изменениях в клиенте Пример: {'clientId': 'test'} |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- 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.7/modules/keycloak_client_module.html