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 |
| Использовать ли конфигурацию областей из 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.8/modules/keycloak_client_module.html