Модуль community.general.keycloak_client — позволяет администрировать клиенты Keycloak с помощью API Keycloak
Примечание
Этот модуль входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет 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 псевдонимы: adminUrl string | URL административного интерфейса клиента. В API REST Keycloak это |
always_display_in_console псевдонимы: alwaysDisplayInConsole boolean добавлено в community.general 4.7.0 | Следует ли отображать этого клиента в консоли учетной записи, даже если у пользователя нет активного сеанса. Варианты:
|
attributes dictionary | Словарь дополнительных атрибутов этого клиента. Он может содержать различные параметры конфигурации; пример приведен в разделе примеров. Полный список допустимых параметров отсутствует; ниже перечислены возможные параметры для Keycloak 3.4. API Keycloak не проверяет, подходит ли указанный параметр для используемого протокола; если параметр все же указан, Keycloak его не использует. |
|
jwks.url string |
Для клиентов OpenID Connect — URL, по которому хранятся ключи клиента в формате JWK. |
|
jwt.credential.certificate string |
Для клиентов OpenID Connect — сертификат клиента в кодировке base64 для проверки JWT, выпущенного клиентом и подписанного его ключом. |
|
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. |
|
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 привязки POST SAML для службы потребителя утверждений клиента (ответы при входе). |
|
saml_assertion_consumer_url_redirect string |
URL привязки Redirect SAML для службы потребителя утверждений клиента (ответы при входе). |
|
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 привязки POST SAML для службы единого выхода клиента. |
|
saml_single_logout_service_url_redirect string |
URL привязки Redirect 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 добавлено в community.general 9.5.0 |
Для клиентов OpenID Connect — логическое значение, указывающее, разрешено ли использовать Варианты:
|
|
x509.subjectdn string добавлено в community.general 9.5.0 |
Для клиентов OpenID Connect — субъект, используемый для аутентификации клиента. |
auth_client_id string |
По умолчанию: |
auth_client_secret string | Секрет клиента, используемый вместе с |
auth_keycloak_url псевдонимы: url string / обязательный | URL экземпляра Keycloak. |
auth_password псевдонимы: password string | Пароль для аутентификации при доступе к API. |
auth_realm string | Имя реалма Keycloak для аутентификации при доступе к API. |
auth_username псевдонимы: username string | Имя пользователя для аутентификации при доступе к API. |
authentication_flow_binding_overrides псевдонимы: authenticationFlowBindingOverrides dictionary добавлено в community.general 3.4.0 | Переопределение привязок потоков аутентификации реалма. |
|
browser string |
Идентификатор потока аутентификации браузера.
|
|
browser_name псевдонимы: browserName string добавлено в community.general 9.1.0 |
Имя потока аутентификации браузера.
|
|
direct_grant псевдонимы: directGrant string |
Идентификатор потока аутентификации прямого доступа.
|
|
direct_grant_name псевдонимы: directGrantName string добавлено в community.general 9.1.0 |
Имя потока аутентификации прямого доступа.
|
authorization_services_enabled псевдонимы: authorizationServicesEnabled boolean | Включены ли службы авторизации для этого клиента (OpenID Connect). В API REST Keycloak это Варианты:
|
authorization_settings псевдонимы: authorizationSettings dictionary | Структура данных, определяющая параметры авторизации для этого клиента. Справочную информацию см. в документации API Keycloak: https://www.keycloak.org/docs-api/8.0/rest-api/index.html#_resourceserverrepresentation. В API REST Keycloak это |
backchannel_logout_url псевдонимы: backchannelLogoutUrl string добавлено в community.general 12.4.0 | URL, при обращении к которому клиент выполнит выход из системы, когда в этот реалм будет отправлен запрос на выход. Это значение хранится в атрибутах клиента как |
base_url псевдонимы: baseUrl string | URL по умолчанию, используемый, когда сервер аутентификации должен перенаправить пользователя к клиенту или создать ссылку на него. В API REST Keycloak это |
bearer_only псевдонимы: bearerOnly boolean | Тип доступа этого клиента — только bearer. В API REST Keycloak это Варианты:
|
client_authenticator_type псевдонимы: clientAuthenticatorType string | Как клиенты проходят аутентификацию на сервере аутентификации? Можно выбрать В API REST Keycloak это Варианты:
|
client_id псевдонимы: clientId string | |
client_scopes_behavior псевдонимы: clientScopesBehavior string добавлено в community.general 11.4.0 | Определяет поведение
Варианты:
|
client_template псевдонимы: clientTemplate string | Шаблон клиента, используемый для этого клиента. Если он не существует, это поле незаметно игнорируется. В API REST Keycloak это |
connection_timeout integer добавлено в community.general 4.5.0 | Задает период ожидания HTTP-соединений с API Keycloak (в секундах). По умолчанию: |
consent_required псевдонимы: consentRequired boolean | Если параметр включен, пользователи должны дать согласие на доступ клиента. В REST API Keycloak этому соответствует Варианты:
|
default_client_scopes псевдонимы: defaultClientScopes list / elements=string добавлено в community.general 4.7.0 | Список областей действия клиента по умолчанию. См. |
default_roles псевдонимы: defaultRoles list / elements=string | Список ролей клиента по умолчанию. Если указанные роли клиента еще не существуют, они создаются. В REST API Keycloak этому соответствует |
description string | Описание клиента в Keycloak. |
direct_access_grants_enabled псевдонимы: directAccessGrantsEnabled boolean | Включены ли для этого клиента прямые разрешения на доступ (OpenID Connect). В REST API Keycloak этому соответствует Варианты:
|
enabled boolean | Включен ли этот клиент? Варианты:
|
frontchannel_logout псевдонимы: frontchannelLogout boolean | Включен ли для этого клиента выход из системы через front channel. В REST API Keycloak этому соответствует Варианты:
|
full_scope_allowed псевдонимы: fullScopeAllowed boolean | Включена ли для этого клиента функция «Разрешить полную область действия». В REST API Keycloak этому соответствует Варианты:
|
http_agent string добавлено в community.general 5.4.0 | Настраивает заголовок HTTP User-Agent. По умолчанию: |
id string | Идентификатор обрабатываемого клиента. Обычно это UUID. Необходимо указать либо его, либо |
implicit_flow_enabled псевдонимы: implicitFlowEnabled boolean | Включен ли для этого клиента неявный поток (OpenID Connect). В REST API Keycloak этому соответствует Варианты:
|
name string | Имя клиента (оно отличается от |
node_re_registration_timeout псевдонимы: nodeReRegistrationTimeout integer | Время ожидания повторной регистрации узла кластера для этого клиента. В REST API Keycloak этому соответствует |
not_before псевдонимы: notBefore integer | Отозвать все токены, выданные этому клиенту до указанной даты (это временная метка UNIX). В REST API Keycloak этому соответствует |
optional_client_scopes псевдонимы: optionalClientScopes list / elements=string добавлено в community.general 4.7.0 | Список необязательных областей действия клиента. См. |
protocol string | Тип клиента. Только при создании, если Значение Варианты:
|
protocol_mappers псевдонимы: protocolMappers list / elements=dictionary | Список словарей, задающих сопоставители протокола для этого клиента. В REST 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 псевдонимы: publicClient boolean | Является ли тип доступа этого клиента общедоступным. В REST API Keycloak этому соответствует Варианты:
|
realm string | Область, в которой нужно создать клиента. По умолчанию: |
redirect_uris псевдонимы: redirectUris list / elements=string | Допустимые URI перенаправления для этого клиента. В REST API Keycloak этому соответствует |
refresh_token string добавлено в community.general 10.3.0 | Токен обновления для аутентификации в API Keycloak. |
registered_nodes псевдонимы: registeredNodes dictionary | Словарь зарегистрированных узлов кластера (ключом является |
registration_access_token псевдонимы: registrationAccessToken string | Токен доступа для регистрации предоставляет клиентам доступ к службе регистрации клиентов. В REST API Keycloak этому соответствует |
root_url псевдонимы: rootUrl string | Корневой URL, добавляемый к относительным URL этого клиента. В REST API Keycloak этому соответствует |
secret string | При использовании |
service_accounts_enabled псевдонимы: serviceAccountsEnabled boolean | Включены ли для этого клиента учетные записи служб (OpenID Connect). В REST API Keycloak этому соответствует Варианты:
|
standard_flow_enabled псевдонимы: standardFlowEnabled boolean | Включен ли для этого клиента стандартный поток (OpenID Connect). В REST API Keycloak этому соответствует Варианты:
|
state string | Состояние клиента. При значении При значении Варианты:
|
surrogate_auth_required псевдонимы: surrogateAuthRequired boolean | Требуется ли замещающая аутентификация. В REST API Keycloak этому соответствует Варианты:
|
token string добавлено в community.general 3.0.0 | Токен аутентификации для API Keycloak. |
use_template_config псевдонимы: useTemplateConfig boolean | Использовать ли конфигурацию из Варианты:
|
use_template_mappers псевдонимы: useTemplateMappers boolean | Использовать ли конфигурацию сопоставителей из Варианты:
|
use_template_scope псевдонимы: useTemplateScope boolean | Использовать ли конфигурацию областей действия из Варианты:
|
valid_post_logout_redirect_uris aliases: postLogoutRedirectUris list / elements=string добавлено в community.general 12.4.0 | Допустимые URI перенаправления после выхода для этого клиента. Это хранится как Используйте |
validate_certs boolean | Проверять сертификаты TLS (не отключайте эту проверку в production). Варианты:
|
web_origins aliases: webOrigins list / elements=string | Список разрешённых источников CORS. В API REST Keycloak это |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группа действий: community.general.keycloak добавлено в community.general 10.2.0 | Используйте |
check_mode | Поддержка: full | Может работать в |
diff_mode | Поддержка: full | В режиме diff возвращает сведения об изменениях (или о возможных изменениях в |
Примеры
- 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь, ниже приведены поля, характерные для этого модуля:
Ключ | Описание |
|---|---|
end_state dictionary | Представление клиента после выполнения модуля (пример сокращён). Возвращается: при успешном выполнении Пример: |
existing dictionary | Представление существующего клиента (пример сокращён). Возвращается: всегда Пример: |
msg string | Сообщение о выполненном действии. Возвращается: всегда Пример: |
proposed dictionary | Представление предлагаемого клиента. Возвращается: всегда Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/keycloak_client_module.html