Spec-Zone.ru › Ansible 2.7

keycloak_client – Позволяет администрировать клиентов Keycloak через API Keycloak

Новое в версии 2.5.

  • Обзор
  • Параметры
  • Примеры
  • Возвращаемые значения
  • Статус

Обзор

  • Этот модуль позволяет администрировать клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak admin-cli и администраторский пользователь будут работать, так же как и отдельное определение клиента со scope, настроенным под ваши нужды, и пользователем с соответствующими ролями.
  • Имена параметров модуля — snake_case версии camelCase параметров в API Keycloak и его документации по адресу http://www.keycloak.org/docs-api/3.3/rest-api/. Предоставляются псевдонимы, чтобы можно было использовать и camelCased версии.
  • API Keycloak не всегда гарантирует, что используются только разумные настройки — вы можете настроить SAML-специфические настройки для клиента OpenID Connect, например, и наоборот. Будьте внимательны. Если вы не укажете настройку, обычно выбирается разумное значение по умолчанию.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
admin_url
-
URL администрирования клиента. Это 'adminUrl' в REST API Keycloak.

псевдонимы: 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, булево значение, указывающее, следует ли оптимизировать поиск ключа подписи через включение идентификатора ключа подписи в элемент 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, булево значение, указывающее, следует ли игнорировать запрашиваемый формат имени субъекта 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
-
URL SAML POST привязки для службы однократного выхода клиента.
saml_single_logout_service_url_redirect
-
URL SAML Redirect привязки для службы однократного выхода клиента.
use.jwks.url
-
Для клиентов OpenID-Connect, булево значение, указывающее, следует ли использовать JWKS URL для получения открытых ключей клиента.
user.info.response.signature.alg
-
Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов с UserInfo-endpoint. Один из RS256 или unsigned.
auth_client_id
- / обязательно
По умолчанию:
"admin-cli"
client_id OpenID Connect для аутентификации с 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' в REST API Keycloak.

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

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

псевдонимы: bearerOnly
END_OF_DOCUMENT_MARKER
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 для настройки его поведения. Это 'clientAuthenticatorType' в API Keycloak REST.

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

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

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

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

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

Псевдонимы: directAccessGrantsEnabled
enabled
-
Включен ли этот клиент?
frontchannel_logout
-
Включен ли фронтальный выход для этого клиента? Это 'frontchannelLogout' в API Keycloak REST.

Псевдонимы: frontchannelLogout
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
config
-
Словарь, определяющий параметры конфигурации для маппера протокола; содержимое зависит от значения protocolMapper и не документировано, кроме источника мапперов и его родительских классов(ов). Пример приведен ниже. Легче всего получить допустимые значения конфигурации, выведя конфигурацию уже существующего маппера протокола с помощью режима проверки в поле existing.
consentRequired
-
Указывает, требуется ли пользователю предоставить согласие клиенту для активации этого маппера.
consentText
-
Человекопонятное имя согласия, которое предлагается принять пользователю.
id
-
Обычно UUID, определяющий внутренний идентификатор экземпляра этого маппера протокола.
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
Полный список доступных мапперов на вашей установке можно получить на панели администратора, перейдя в Server Info -> Providers и найдя «protocol-mapper».
public_client
-
Является ли тип доступа для этого клиента публичным или нет? Это 'publicClient' в API Keycloak REST.

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

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

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

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

псевдонимы: useTemplateScope
проверять_сертификаты
boolean
    Варианты:
  • no
  • yes ←
Проверять 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.7/modules/keycloak_client_module.html

Spec-Zone.ru

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