community.general.keycloak_client модуль – Разрешает администрирование клиентов Keycloak через API Keycloak
Примечание
Этот модуль является частью коллекции community.general (версия 9.5.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить ее, используйте: ansible-galaxy collection install community.general.
Чтобы использовать ее в книге задач, укажите: community.general.keycloak_client.
Описание
- Этот модуль позволяет администрировать клиентов 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. Предоставляются псевдонимы, чтобы можно было использовать также camelCase версии.
- API Keycloak не всегда проверяет вводимые данные, например, вы можете задавать настройки, специфичные для SAML, на клиенте OpenID Connect, и наоборот. Будьте внимательны. Если вы не укажете настройку, обычно выбирается разумное значение по умолчанию.
Параметры
Параметр | Комментарии |
|---|---|
admin_url aliases: adminUrl string | URL для доступа к административному интерфейсу клиента. Это ‘adminUrl’ в Keycloak REST API. |
always_display_in_console aliases: alwaysDisplayInConsole boolean добавлено в community.general 4.7.0 | Отображать ли этого клиента в консоли учетных записей, даже если у пользователя нет активной сессии. Варианты:
|
attributes dictionary | Словарь дополнительных атрибутов для этого клиента. Он может содержать различные параметры конфигурации; пример приведен в разделе примеров. Хотя исчерпывающий список допустимых параметров недоступен, возможные параметры по состоянию на Keycloak 3.4 перечислены ниже. Keycloak API не проверяет, подходит ли данный параметр для используемого протокола; если он указан, Keycloak просто не будет его использовать. |
|
jwks.url string |
Для клиентов OpenID-Connect, URL, где хранятся ключи клиента в JWK. |
|
jwt.credential.certificate string |
Для клиентов OpenID-Connect, сертификат клиента для проверки JWT, выпущенного клиентом и подписанного его ключом, кодированный в base64. |
|
request.object.signature.alg string |
Для клиентов OpenID-Connect, алгоритм JWA, который клиент должен использовать при отправке объекта запроса OIDC. Один из |
|
saml.authnstatement string |
Для клиентов SAML, логическое значение, указывающее, следует ли включать в ответ на вход утверждение, содержащее метод и временную метку. |
|
saml.client.signature string |
Для клиентов SAML, логическое значение, указывающее, требуется ли подпись клиента и ее проверка. |
|
saml.encrypt string |
Логическое значение, указывающее, следует ли шифровать утверждения SAML с помощью открытого ключа клиента. |
|
saml.force.post.binding string |
Для клиентов SAML, логическое значение, указывающее, следует ли всегда использовать привязку POST для ответов. |
|
saml.onetimeuse.condition string |
Для клиентов SAML, логическое значение, указывающее, следует ли включать условие OneTimeUse в ответы на вход. |
|
saml.server.signature string |
Логическое значение, указывающее, следует ли подписывать документы SAML областью. |
|
saml.server.signature.keyinfo.ext string |
Для клиентов SAML, логическое значение, указывающее, следует ли оптимизировать поиск ключа подписи REDIRECT путем включения идентификатора ключа подписи в элемент SAML Extensions. |
|
saml.signature.algorithm string |
Алгоритм подписи, используемый для подписи документов SAML. Один из |
|
saml.signing.certificate string |
Сертификат ключа подписи SAML, кодированный в base64. |
|
saml.signing.private.key string |
Закрытый ключ подписи SAML, кодированный в base64. |
|
saml_assertion_consumer_url_post string |
URL привязки SAML POST для службы обработки утверждений клиента (ответы на вход). |
|
saml_assertion_consumer_url_redirect string |
URL привязки SAML Redirect для службы обработки утверждений клиента (ответы на вход). |
|
saml_force_name_id_format string |
Для клиентов SAML, логическое значение, указывающее, следует ли игнорировать запрашиваемый формат субъекта NameID и использовать настроенный вместо него. |
|
saml_name_id_format string |
Для клиентов SAML, формат NameID для использования (один из |
|
saml_signature_canonicalization_method string |
Метод канонизации подписи SAML. Это одно из четырёх значений: |
|
saml_single_logout_service_url_post string |
URL SAML POST-связи для службы однократного выхода клиента. |
|
saml_single_logout_service_url_redirect string |
URL SAML-перенаправления для службы однократного выхода клиента. |
|
use.jwks.url string |
Для клиентов OpenID-Connect, булево значение, указывающее, использовать ли URL JWKS для получения открытых ключей клиента. |
|
user.info.response.signature.alg string |
Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов с UserInfo-точки входа. Одно из |
|
x509.allow.regex.pattern.comparison boolean added in community.general 9.5.0 |
Для клиентов OpenID-Connect, булево значение, указывающее, разрешить ли Варианты:
|
|
x509.subjectdn string added in community.general 9.5.0 |
Для клиентов OpenID-Connect, субъект, который будет использоваться для аутентификации клиента. |
auth_client_id string | OpenID Connect По умолчанию: |
auth_client_secret string | Секрет клиента для использования совместно с |
auth_keycloak_url aliases: url string / обязательно | URL экземпляра Keycloak. |
auth_password aliases: password string | Пароль для аутентификации доступа к API. |
auth_realm string | Имя области Keycloak для аутентификации доступа к API. |
auth_username aliases: username string | Имя пользователя для аутентификации доступа к API. |
authentication_flow_binding_overrides aliases: authenticationFlowBindingOverrides dictionary added in community.general 3.4.0 | Переопределение привязок потоков аутентификации области. |
|
browser string |
Идентификатор потока браузерного потока аутентификации.
|
|
browser_name aliases: browserName string added in community.general 9.1.0 |
Имя потока браузерного потока аутентификации.
|
|
direct_grant aliases: directGrant string |
Идентификатор потока аутентификации прямого предоставления.
|
|
direct_grant_name aliases: directGrantName string added in community.general 9.1.0 |
Имя потока аутентификации прямого предоставления.
|
authorization_services_enabled aliases: authorizationServicesEnabled boolean | Включены ли для этого клиента службы авторизации (OpenID connect)? Это ‘authorizationServicesEnabled’ в API Keycloak. Варианты:
|
authorization_settings aliases: authorizationSettings dictionary | Структура данных, определяющая параметры авторизации для этого клиента. Для справки, пожалуйста, обратитесь к документации API Keycloak по адресу https://www.keycloak.org/docs-api/8.0/rest-api/index.html#_resourceserverrepresentation. Это ‘authorizationSettings’ в API Keycloak. |
base_url aliases: baseUrl string | Основной URL для использования при необходимости перенаправления или связи с клиентом сервером аутентификации. Это ‘baseUrl’ в API Keycloak. |
bearer_only aliases: bearerOnly boolean | Тип доступа для этого клиента — только токен bearer. Это ‘bearerOnly’ в API Keycloak. Варианты:
|
client_authenticator_type aliases: clientAuthenticatorType string | Как клиенты аутентифицируются на сервере авторизации? Можно выбрать Это ‘clientAuthenticatorType’ в API Keycloak. Варианты:
|
client_id aliases: clientId string | |
client_template aliases: clientTemplate string | Шаблон клиента, используемый для этого клиента. Если шаблон не существует, это поле будет проигнорировано. Это ‘clientTemplate’ в API Keycloak. |
connection_timeout integer added in community.general 4.5.0 | Управляет временем ожидания HTTP-соединений (в секундах) с API Keycloak. По умолчанию: |
consent_required aliases: consentRequired boolean | Если включено, пользователи должны дать согласие на доступ к клиенту. Это ‘consentRequired’ в API Keycloak. Варианты:
|
default_client_scopes aliases: defaultClientScopes list / elements=string added in community.general 4.7.0 | Список стандартных областей действия клиента. |
default_roles aliases: defaultRoles list / elements=string | Список стандартных ролей для этого клиента. Если ссылаемые роли клиента еще не существуют, они будут созданы. Это ‘defaultRoles’ в API Keycloak. |
description string | Описание клиента в Keycloak. |
direct_access_grants_enabled aliases: directAccessGrantsEnabled boolean | Включены ли прямые гранты доступа для этого клиента (OpenID connect)? Это ‘directAccessGrantsEnabled’ в API Keycloak. Варианты:
|
enabled boolean | Включен ли этот клиент? Варианты:
|
frontchannel_logout aliases: frontchannelLogout boolean | Включен ли frontchannel logout для этого клиента? Это «frontchannelLogout» в API Keycloak. Варианты:
|
full_scope_allowed aliases: fullScopeAllowed boolean | Включена ли функция «Разрешить полный объем доступа» для этого клиента? Это ‘fullScopeAllowed’ в API Keycloak. Варианты:
|
http_agent string добавлено в community.general 5.4.0 | Настраивает заголовок HTTP User-Agent. По умолчанию: |
id string | Идентификатор клиента, с которым будет выполняться работа. Обычно это UUID. Требуется либо это, либо |
implicit_flow_enabled aliases: implicitFlowEnabled boolean | Включить неявный поток для данного клиента (OpenID connect). Это ‘implicitFlowEnabled’ в API Keycloak. Варианты:
|
name string | Имя клиента (это не то же самое, что |
node_re_registration_timeout aliases: nodeReRegistrationTimeout integer | Таймаут повторной регистрации узла кластера для этого клиента. Это ‘nodeReRegistrationTimeout’ в API Keycloak. |
not_before aliases: notBefore integer | Отменить все токен, выпущенные до этой даты для этого клиента (это метка времени Unix). Это ‘notBefore’ в API Keycloak. |
optional_client_scopes aliases: optionalClientScopes list / elements=string добавлено в community.general 4.7.0 | Список дополнительных областей действия клиента. |
protocol string | Тип клиента. Только при создании, значение по умолчанию будет Значение Варианты:
|
protocol_mappers aliases: protocolMappers list / elements=dictionary | Список словарей, определяющих мапперы протокола для данного клиента. Это ‘protocolMappers’ в API Keycloak. |
|
config dictionary |
Словарь, определяющий параметры конфигурации маппера протокола; содержимое отличается в зависимости от значения |
|
consentRequired boolean |
Указывает, требуется ли пользователю предоставить согласие клиенту, чтобы этот маппер был активен. Варианты:
|
|
consentText string |
Человекопонятное имя согласия, которое пользователю необходимо принять. |
|
id string |
Обычно UUID, указывающий внутренний идентификатор экземпляра этого маппера протокола. |
|
name string |
Имя этого маппера протокола. |
|
protocol string |
Это указывает, для какого протокола активен данный протокол-маппер. Варианты:
|
|
protocolMapper string |
Внутреннее имя типа Keycloak для этого протокол-маппера. Полный список невозможно предоставить, так как он может быть расширен пользователями Keycloak с помощью SPI. По умолчанию, в Keycloak версии 3.4 есть, по крайней мере:
Полный список доступных мапперов на вашей установке можно получить на админской панели, перейдя в Server Info -> Providers и посмотрев раздел ‘protocol-mapper’. |
public_client aliases: publicClient boolean | Тип доступа для данного клиента – публичный или нет. В API Keycloak это 'publicClient'. Варианты:
|
realm string | Домен, в котором будет создан клиент. По умолчанию: |
redirect_uris aliases: redirectUris list / elements=string | Допустимые URI перенаправления для этого клиента. В Keycloak REST API это 'redirectUris'. |
registered_nodes aliases: registeredNodes dictionary | Словарь зарегистрированных узлов кластера (с |
registration_access_token aliases: registrationAccessToken string | Токен доступа для регистрации предоставляет доступ к службе регистрации клиентов. В Keycloak REST API это 'registrationAccessToken'. |
root_url aliases: rootUrl string | Основной URL, добавляемый к относительным URL-адресам для данного клиента. В Keycloak REST API это 'rootUrl'. |
secret string | При использовании |
service_accounts_enabled aliases: serviceAccountsEnabled boolean | Включены ли учетные записи служб для этого клиента (OpenID connect)? В Keycloak REST API это 'serviceAccountsEnabled'. Варианты:
|
standard_flow_enabled aliases: standardFlowEnabled boolean | Включить стандартный поток для этого клиента или нет (OpenID connect)? В Keycloak REST API это 'standardFlowEnabled'. Варианты:
|
state string | Состояние клиента. При При Варианты:
|
surrogate_auth_required aliases: surrogateAuthRequired boolean | Требуется ли суррогат аутентификация. В Keycloak REST API это 'surrogateAuthRequired'. Варианты:
|
token string добавлено в community.general 3.0.0 | Токен аутентификации для API Keycloak. |
использовать_шаблон_настройки псевдонимы: useTemplateConfig логическое | Использовать ли настройки из Варианты:
|
использовать_шаблон_мапперов псевдонимы: useTemplateMappers логическое | Использовать ли настройки мапперов из Варианты:
|
использовать_шаблон_области псевдонимы: useTemplateScope логическое | Использовать ли настройки области из Варианты:
|
проверять_сертификаты логическое | Проверять TLS-сертификаты (не отключайте это в рабочей среде). Варианты:
|
домены_сайтов псевдонимы: webOrigins список / элементы=строка | Список разрешённых источников CORS. Это ‘webOrigins’ в API Keycloak. |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
режим_проверки | Поддержка: полная | Может работать в |
режим_сравнения | Поддержка: полная | Возвращает подробности о том, что изменилось (или, возможно, должно быть изменено в |
Примеры
- name: Create or update Keycloak client (minimal example), authentication with credentials
community.general.keycloak_client:
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
auth_username: USERNAME
auth_password: PASSWORD
client_id: test
state: present
delegate_to: localhost
- name: Create or update Keycloak client (minimal example), authentication with token
community.general.keycloak_client:
auth_client_id: admin-cli
auth_keycloak_url: https://auth.example.com/auth
auth_realm: master
token: TOKEN
client_id: test
state: present
delegate_to: localhost
- name: Delete a Keycloak client
community.general.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
delegate_to: localhost
- name: Create or update a Keycloak client (minimal example), with x509 authentication
community.general.keycloak_client:
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: present
client_id: test
client_authenticator_type: client-x509
attributes:
x509.subjectdn: "CN=client"
x509.allow.regex.pattern.comparison: false
- name: Create or update a Keycloak client (with all the bells and whistles)
community.general.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: false
always_display_in_console: true
registered_nodes:
node01.example.com: 1507828202
registration_access_token: eyJWT_TOKEN
surrogate_auth_required: false
default_roles:
- test01
- test02
authentication_flow_binding_overrides:
browser: 4c90336b-bf1d-4b87-916d-3677ba4e5fbb
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
delegate_to: localhost
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:
Ключ | Описание |
|---|---|
конечное_состояние словарь | Представление клиента после выполнения модуля (образец усечён). Возвращается: при успехе Пример: |
существующий словарь | Представление существующего клиента (образец усечён). Возвращается: всегда Пример: |
сообщение строка | Сообщение о том, какое действие было выполнено. Возвращается: всегда Пример: |
предложенный словарь | Представление предлагаемого клиента. Возвращается: всегда Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/keycloak_client_module.html