keycloak_client – Позволяет администрировать клиентов Keycloak через API Keycloak
Новая версия с 2.5.
Описание
- Этот модуль позволяет администрировать клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak, admin-cli и администраторский пользователь будут работать, как и отдельное определение клиента с областью, настроенной под ваши потребности, и пользователем, имеющим необходимые роли.
- Имена параметров модуля — это snake_cased версии camelCase параметров, найденные в API Keycloak и его документации по адресу http://www.keycloak.org/docs-api/3.3/rest-api/. Предоставляются псевдонимы, чтобы можно было использовать также camelCase версии.
- API Keycloak не всегда проверяет вводимые данные, например, вы можете установить параметры, специфичные для SAML, на клиенте OpenID Connect, и наоборот. Будьте осторожны. Если вы не указываете параметр, обычно выбирается разумное значение по умолчанию.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| admin_url - | URL административного интерфейса клиента. Это 'adminUrl' в API Keycloak REST. Псевдонимы: 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, булево значение, указывающее, следует ли оптимизировать поиск ключа подписи REDIRECT путём включения идентификатора ключа подписи в элемент 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, булево значение, указывающее, следует ли игнорировать запрошенный формат имени пользователя и использовать настроенный вместо него. | ||
| saml_name_id_format - | Для клиентов SAML, формат имени пользователя для использования (один из 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, булево значение, указывающее, следует ли использовать URL JWKS для получения открытых ключей клиента. | ||
| user.info.response.signature.alg - | Для клиентов OpenID Connect, алгоритм JWA для подписанных ответов с UserInfo-endpoint. Один из RS256 или unsigned. | ||
| 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 | ||
| 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' в API Keycloak REST. Псевдонимы: authorizationSettings | ||
| base_url - | URL по умолчанию для использования, когда сервер авторизации должен перенаправить или связать обратно с клиентом. Это 'baseUrl' в API Keycloak REST. Псевдонимы: baseUrl | ||
| bearer_only булево |
| Тип доступа этого клиента — только bearer. Это 'bearerOnly' в API Keycloak REST. Псевдонимы: 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 boolean |
| Если включено, пользователи должны дать согласие на доступ клиента. Это 'consentRequired' в API Keycloak REST. Псевдонимы: consentRequired | |
| default_roles - | Список ролей по умолчанию для этого клиента. Если ссылаемые роли клиента еще не существуют, они будут созданы. Это 'defaultRoles' в API Keycloak REST. Псевдонимы: defaultRoles | ||
| description - | Описание клиента в Keycloak | ||
| direct_access_grants_enabled boolean |
| Включены ли прямые разрешения доступа для этого клиента (OpenID connect)? Это 'directAccessGrantsEnabled' в API Keycloak REST. Псевдонимы: directAccessGrantsEnabled | |
| enabled boolean |
| Включен ли этот клиент? | |
| frontchannel_logout boolean |
| Включен ли frontchannel logout для этого клиента? Это 'frontchannelLogout' в API Keycloak REST. Псевдонимы: frontchannelLogout | |
| full_scope_allowed boolean |
| Включена ли функция "Разрешено полное охватом" для этого клиента? Это 'fullScopeAllowed' в API Keycloak REST. Псевдонимы: fullScopeAllowed | |
| id - | Идентификатор клиента, с которым нужно работать. Обычно это UUID. Требуется либо это, либо client_id. Если вы укажете оба, приоритет отдаётся этому. | ||
| implicit_flow_enabled boolean |
| Включить неявный поток для этого клиента (OpenID connect). Это 'implicitFlowEnabled' в 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, указывающий внутренний 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'. | ||
| public_client boolean |
| Является ли тип доступа для этого клиента общедоступным? Это 'publicClient' в API Keycloak REST. Псевдонимы: publicClient | |
| realm - | Домен, в котором нужно создать клиента. | ||
| redirect_uris - | Допустимые URIs перенаправления для этого клиента. Это '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 | ||
| secret - | При использовании client_authenticator_type client-secret (по умолчанию) вы можете указать здесь секрет (в противном случае он будет сгенерирован, если не существует). При изменении этого секрета модуль не зарегистрирует изменение в настоящее время (но измененный секрет будет сохранён). | ||
| service_accounts_enabled boolean |
| Включены ли учетные записи служб для этого клиента (OpenID connect)? Это «serviceAccountsEnabled» в API Keycloak REST. Псевдонимы: serviceAccountsEnabled | |
| standard_flow_enabled boolean |
| Включить стандартный поток для этого клиента или нет (OpenID connect)? Это «standardFlowEnabled» в API Keycloak REST. Псевдонимы: standardFlowEnabled | |
| state - |
| Состояние клиента В present, клиент будет создан (или обновлен, если он уже существует).В absent, клиент будет удалён, если он существует. | |
| surrogate_auth_required boolean |
| Требуется ли суррогатная авторизация. Это «surrogateAuthRequired» в API Keycloak REST. Псевдонимы: surrogateAuthRequired | |
| use_template_config boolean |
| Использовать ли конфигурацию из client_template. Это «useTemplateConfig» в API Keycloak REST. Псевдонимы: useTemplateConfig | |
| use_template_mappers boolean |
| Использовать ли конфигурацию мапперов из client_template. Это «useTemplateMappers» в API Keycloak REST. Псевдонимы: useTemplateMappers | |
| use_template_scope boolean |
| Использовать ли конфигурацию scope из client_template. Это «useTemplateScope» в API Keycloak REST. Псевдонимы: useTemplateScope | |
| validate_certs 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.9/modules/keycloak_client_module.html