Spec-Zone.ru › Ansible 2.6

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/. Предоставляются псевдонимы, чтобы можно было использовать и camelCased версии.
  • API Keycloak не всегда требует, чтобы использовались только разумные настройки — вы можете установить настройки, специфичные для SAML, на клиенте OpenID Connect, например, и наоборот. Будьте внимательны. Если вы не указываете настройку, обычно выбирается разумное значение по умолчанию.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
admin_url
URL интерфейса администрирования клиента. В API Keycloak это «adminUrl».

Псевдонимы: adminUrl
attributes
Словарь дополнительных атрибутов для этого клиента. Может содержать различные параметры конфигурации; примеры приведены в разделе примеров. Полный список допустимых опций не доступен; возможные опции, начиная с Keycloak 3.4, перечислены ниже. API Keycloak не проверяет, подходит ли выбранная опция для используемого протокола; если опция указана, Keycloak просто её проигнорирует.
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 привязки для службы потребления утверждений клиента (ответы на вход).
saml_assertion_consumer_url_redirect
URL SAML Redirect привязки для службы потребления утверждений клиента (ответы на вход).
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
SAML POST адрес привязки для службы единого выхода клиента.
saml_single_logout_service_url_redirect
SAML адрес привязки Redirect для службы единого выхода клиента.
user.info.response.signature.alg
Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов на UserInfo-точку входа. Один из RS256 или unsigned.
request.object.signature.alg
Для клиентов OpenID-Connect, алгоритм JWA, который клиент должен использовать при отправке объекта запроса OIDC. Один из any, none, RS256.
use.jwks.url
Для клиентов OpenID-Connect, булево значение, определяющее, использовать ли JWKS URL для получения открытых ключей клиента.
jwks.url
Для клиентов OpenID-Connect, URL, где хранятся ключи клиента в JWK.
jwt.credential.certificate
Для клиентов OpenID-Connect, сертификат клиента для проверки JWT, выпущенных клиентом и подписанных его ключом, закодированный в base64.
auth_client_id
обязательно
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). В API Keycloak это 'authorizationServicesEnabled'.

Псевдонимы: authorizationServicesEnabled
authorization_settings
Структура данных, определяющая параметры авторизации для этого клиента. Для справки, пожалуйста, ознакомьтесь с документацией API Keycloak по адресу http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_resourceserverrepresentation. В API Keycloak это 'authorizationSettings'.

Псевдонимы: authorizationSettings
base_url
URL по умолчанию, используемый, когда сервер аутентификации должен перенаправить или связать клиента. В API Keycloak это 'baseUrl'.

Псевдонимы: baseUrl
bearer_only
Тип доступа этого клиента — только bearer. В API Keycloak это 'bearerOnly'.

Псевдонимы: bearerOnly
client_authenticator_type
    Варианты:
  • client-secret
  • client-jwt
Как клиенты авторизуются на сервере аутентификации? Можно выбрать client-secret или client-jwt. При использовании client-secret, параметр модуля secret может быть использован, в то время как для client-jwt, вы можете использовать ключи use.jwks.url, jwks.url, и jwt.credential.certificate в параметре модуля attributes для настройки его поведения. В API Keycloak это 'clientAuthenticatorType'.

Псевдонимы: clientAuthenticatorType
client_id
Идентификатор клиента, с которым нужно работать. Обычно это буквенно-цифровое имя, выбранное вами. Требуется либо это, либо id. Если вы указали оба, id имеет приоритет. В API Keycloak это 'clientId'.

Псевдонимы: clientId
client_template
Шаблон клиента, который необходимо использовать для данного клиента. Если шаблон не существует, это поле будет проигнорировано. В API Keycloak это 'clientTemplate'.

Псевдонимы: clientTemplate
consent_required
Если включено, пользователи должны дать согласие на доступ клиента. В API Keycloak это 'consentRequired'.

Псевдонимы: consentRequired
default_roles
Список ролей по умолчанию для этого клиента. Если указанные клиентские роли еще не существуют, они будут созданы. В API Keycloak это 'defaultRoles'.

Псевдонимы: defaultRoles
description
Описание клиента в Keycloak
direct_access_grants_enabled
Включены ли прямые разрешения доступа для данного клиента (OpenID connect). В API Keycloak это 'directAccessGrantsEnabled'.

Псевдонимы: directAccessGrantsEnabled
enabled
Включен ли данный клиент?
frontchannel_logout
Включена ли функция frontchannel logout для данного клиента. Это соответствует параметру 'frontchannelLogout' в API Keycloak REST.

Псевдонимы: frontchannelLogout
full_scope_allowed
Включена ли функция "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
Тип клиента (либо openid-connect либо saml).
protocol_mappers
Список словарей, определяющих мапперы протоколов для данного клиента. Соответствует параметру 'protocolMappers' в API Keycloak REST.

Псевдонимы: protocolMappers
consentRequired
Указывает, требуется ли пользовательское согласие на клиента для активации данного маппера.
consentText
Человекопонятное название согласия, которое пользователь должен принять.
id
Обычно UUID, определяющий внутренний ID этого экземпляра маппера протокола.
name
Имя этого маппера протокола.
protocol
    Варианты:
  • openid-connect
  • saml
Это либо openid-connect либо saml, это определяет, для какого протокола активен этот маппер протокола.
protocolMapper
Внутреннее имя Keycloak типа этого маппера протокола. Полный список невозможно предоставить, так как он может быть расширен с помощью SPIs пользователем Keycloak. По умолчанию, Keycloak версии 3.4 поставляется по крайней мере с
docker-v2-allow-all-mapper
oidc-address-mapper
oidc-full-name-mapper
oidc-group-membership-mapper
oidc-hardcoded-claim-mapper
oidc-hardcoded-role-mapper
oidc-role-name-mapper
oidc-script-based-protocol-mapper
oidc-sha256-pairwise-sub-mapper
oidc-usermodel-attribute-mapper
oidc-usermodel-client-role-mapper
oidc-usermodel-property-mapper
oidc-usermodel-realm-role-mapper
oidc-usersessionmodel-note-mapper
saml-group-membership-mapper
saml-hardcode-attribute-mapper
saml-hardcode-role-mapper
saml-role-list-mapper
saml-role-name-mapper
saml-user-attribute-mapper
saml-user-property-mapper
saml-user-session-note-mapper
Полный список доступных мапперов на вашей установке можно получить на консоли администрирования, перейдя в раздел Сведения о сервере -> Поставщики и посмотрев раздел 'protocol-mapper'.
config
Словарь, определяющий параметры конфигурации маппера протокола; содержимое отличается в зависимости от значения protocolMapper и не документировано, кроме как источником мапперов и его родительских классов. Пример приведён ниже. Самый простой способ получить допустимые значения конфигурации — вывести уже существующую конфигурацию маппера протокола в режиме проверки в поле existing.
public_client
Тип доступа для данного клиента — публичный или нет. Соответствует параметру 'publicClient' в API Keycloak REST.

Псевдонимы: publicClient
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
secret
При использовании 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
state
    Варианты:
  • present ←
  • absent
Состояние клиента
При present, клиент будет создан (или обновлён, если он уже существует).
При absent, клиент будет удалён, если он существует
surrogate_auth_required
Требуется ли суррогатная авторизация. Это соответствует параметру 'surrogateAuthRequired' в API Keycloak REST.

Псевдонимы: surrogateAuthRequired
use_template_config
Использовать ли конфигурацию из client_template. Это соответствует параметру 'useTemplateConfig' в API Keycloak REST.

Псевдонимы: useTemplateConfig
use_template_mappers
Использовать ли конфигурацию маппера из client_template. Это соответствует параметру 'useTemplateMappers' в API Keycloak REST.

Псевдонимы: useTemplateMappers
use_template_scope
Использовать ли конфигурацию области из client_template. Это соответствует параметру 'useTemplateScope' в API Keycloak REST.

Псевдонимы: useTemplateScope
validate_certs По умолчанию:
"да"
Проверять 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. См. Поддержка и техническое обслуживание модулей для получения дополнительной информации.

Список других модулей, также поддерживаемых сообществом 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.6/modules/keycloak_client_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API