Spec-Zone.ru › Ansible 2.5

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

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

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

Обзор

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
admin_url
URL интерфейса администрирования клиента. Это 'adminUrl' в API Keycloak REST.
attributes
Словарь дополнительных атрибутов для этого клиента. Он может содержать различные параметры конфигурации; пример приведен в разделе примеров. Хотя полный список допустимых параметров недоступен, возможные параметры на момент Keycloak 3.4 перечислены ниже. API Keycloak не проверяет, подходит ли данный параметр для используемого протокола; если он указан, Keycloak просто не будет его использовать.
saml.signing.certificate
Сертификат ключа подписи SAML, закодированный в base64.
saml.server.signature.keyinfo.ext
Для клиентов SAML, логическое значение, определяющее, следует ли оптимизировать поиск ключа подписи REDIRECT путём включения идентификатора ключа подписи в элемент SAML Extensions.
saml.authnstatement
Для клиентов SAML, логическое значение, определяющее, следует ли включать в ответ на вход заявление, содержащее метод и отметку времени.
saml_force_name_id_format
Для клиентов SAML, логическое значение, определяющее, следует ли игнорировать запрашиваемый формат имени субъекта NameID и использовать вместо него конфигурированный.
jwks.url
Для клиентов OpenID-Connect, URL, где хранятся ключи клиента в JWK.
saml_single_logout_service_url_redirect
URL для перенаправления SAML для службы единого выхода клиента.
saml.signing.private.key
Приватный ключ подписи SAML, закодированный в base64.
saml.force.post.binding
Для клиентов SAML, логическое значение, определяющее, следует ли всегда использовать привязку POST для ответов.
saml.client.signature
Для клиентов SAML, логическое значение, определяющее, требуется ли и проверяется ли подпись клиента.
saml.server.signature
Логическое значение, определяющее, следует ли подписывать документы SAML областью.
jwt.credential.certificate
Для клиентов OpenID-Connect, сертификат клиента для проверки JWT, выпущенного клиентом и подписанного его ключом, закодированный в base64.
saml_name_id_format
Для клиентов SAML, формат NameID для использования (один из username, email, transient, или persistent).
user.info.response.signature.alg
Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов с UserInfo-точкой конечного доступа. Один из RS256 или unsigned.
request.object.signature.alg
Для клиентов OpenID-Connect, алгоритм JWA, который клиент должен использовать при отправке объекта запроса OIDC. Один из any, none, RS256.
saml_assertion_consumer_url_post
URL привязки SAML POST для службы потребления утверждений клиента (ответы на вход).
saml.encrypt
Логическое значение, определяющее, следует ли шифровать утверждения SAML с помощью открытого ключа клиента.
saml.signature.algorithm
Алгоритм подписи, используемый для подписи документов SAML. Один из RSA_SHA256, RSA_SHA1, RSA_SHA512, или DSA_SHA1.
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.onetimeuse.condition
Для клиентов SAML, логическое значение, определяющее, следует ли включать условие OneTimeUse в ответы на вход.
saml_single_logout_service_url_post
URL привязки SAML POST для службы единого выхода клиента.
saml_assertion_consumer_url_redirect
URL привязки перенаправления SAML для службы потребления утверждений клиента (ответы на вход).
use.jwks.url
Для клиентов OpenID-Connect, логическое значение, определяющее, следует ли использовать JWKS URL для получения открытых ключей клиента.
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). Это 'authorizationServicesEnabled' в API Keycloak REST.
authorization_settings
Структура данных, определяющая параметры авторизации для этого клиента. Для справки, см. документацию API Keycloak по адресу http://www.keycloak.org/docs-api/3.3/rest-api/index.html#_resourceserverrepresentation. Это 'authorizationSettings' в API Keycloak REST.
base_url
URL по умолчанию для использования, когда сервер авторизации должен перенаправить или связать клиента. Это 'baseUrl' в API Keycloak REST.
bearer_only
Тип доступа этого клиента — только bearer. Это 'bearerOnly' в API Keycloak REST.
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.
client_id
Идентификатор клиента, над которым выполняется работа. Обычно это буквенно-цифровое имя, выбранное вами. Требуется либо это, либо id. Если вы укажете оба, id имеет приоритет. Это 'clientId' в API Keycloak REST.
client_template
Шаблон клиента, используемый для этого клиента. Если он не существует, этот параметр будет молча пропущен. Это 'clientTemplate' в API Keycloak REST.
consent_required
Если включено, пользователи должны дать согласие на доступ клиента. Это 'consentRequired' в API Keycloak REST.
default_roles
Список ролей по умолчанию для этого клиента. Если ссылающиеся на них роли клиента ещё не существуют, они будут созданы. Это 'defaultRoles' в API Keycloak REST.
description
Описание клиента в Keycloak.
direct_access_grants_enabled
Включены ли прямые предоставления доступа для этого клиента (OpenID connect)? Это 'directAccessGrantsEnabled' в API Keycloak REST.
enabled
Включён ли этот клиент?
frontchannel_logout
Включен ли выход через frontchannel для этого клиента? Это 'frontchannelLogout' в API Keycloak REST.
full_scope_allowed
Включено ли свойство "Разрешение полного доступа" для этого клиента? Это 'fullScopeAllowed' в API Keycloak REST.
id
Идентификатор клиента, над которым выполняется работа. Обычно это UUID. Требуется либо это, либо client_id. Если вы укажете оба, этот параметр имеет приоритет.
implicit_flow_enabled
Включен ли неявный поток для этого клиента (OpenID connect)? Это 'implictFlowEnabled' в API Keycloak REST.
name
Название клиента (это не то же самое, что client_id)
node_re_registration_timeout
Тайм-аут повторной регистрации узла кластера для этого клиента. Это 'nodeReRegistrationTimeout' в API Keycloak REST.
not_before
Отменить все токены, выпущенные до этой даты для этого клиента (это метка времени Unix). Это 'notBefore' в API Keycloak REST.
protocol
    Варианты:
  • openid-connect
  • saml
Тип клиента (либо openid-connect либо saml.
protocol_mappers
Список словарей, определяющих мапперы протокола для этого клиента. Это 'protocolMappers' в API Keycloak REST.
consentText
Наименование согласия, представленное пользователю для принятия.
protocol
    Варианты:
  • openid-connect
  • saml
Это либо openid-connect либо saml, это определяет, для какого протокола активен данный маппер протокола.
name
Имя этого маппера протокола.
config
Словарь, определяющий параметры конфигурации для маппера протокола; содержимое отличается в зависимости от значения protocolMapper и не документируется, кроме как источником мапперов и его родительскими классами. Ниже приведён пример. Самый простой способ получить допустимые значения конфигурации — вывести существующую конфигурацию маппера протокола через режим проверки в поле existing.
protocolMapper
Внутреннее имя Keycloak типа этого маппера протокола. Поскольку предоставление исчерпывающего списка невозможно, так как это может быть расширено через SPI пользователем 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'.
consentRequired
Указывает, требуется ли пользователю предоставить согласие клиенту, чтобы данный маппер был активен.
id
Обычно UUID, определяющий внутренний идентификатор экземпляра этого маппера протокола.
public_client
Является ли тип доступа для этого клиента общедоступным или нет. Это 'publicClient' в API Keycloak REST.
redirect_uris
Допустимые URI перенаправления для этого клиента. Это 'redirectUris' в API Keycloak REST.
registered_nodes
Словарь зарегистрированных узлов кластера (с nodename в качестве ключа и времени последней регистрации в качестве значения). Это 'registeredNodes' в API Keycloak REST.
registration_access_token
Токен доступа к регистрации предоставляет клиентам доступ к службе регистрации клиента. Это 'registrationAccessToken' в API Keycloak REST.
root_url
Корневой URL, добавляемый к относительным URL-адресам для этого клиента. Это 'rootUrl' в API Keycloak REST.
secret
При использовании client_authenticator_type client-secret (по умолчанию), вы можете указать секрет здесь (в противном случае он будет сгенерирован, если не существует). Если вы измените этот секрет, модуль не зарегистрирует изменение в настоящее время (но изменённый секрет будет сохранён).
service_accounts_enabled
Включены ли для этого клиента сервисные учётные записи (OpenID connect)? Это 'serviceAccountsEnabled' в API Keycloak REST.
standard_flow_enabled
Включить стандартный поток для этого клиента или нет (OpenID connect). Это 'standardFlowEnabled' в API Keycloak REST.
state
    Варианты:
  • present ←
  • absent
Состояние клиента
При present, клиент будет создан (или обновлён, если он уже существует).
При absent, клиент будет удалён, если он существует.
surrogate_auth_required
Требуется ли суррогатное аутентификация. Это 'surrogateAuthRequired' в API Keycloak REST.
use_template_config
Использовать ли конфигурацию из client_template. Это 'useTemplateConfig' в API Keycloak REST.
use_template_mappers
Использовать ли конфигурацию маппера из client_template. Это 'useTemplateMappers' в API Keycloak REST.
use_template_scope
Использовать ли конфигурацию области из client_template. Это 'useTemplateScope' в API Keycloak REST.
validate_certs По умолчанию:
да
Проверять сертификаты TLS (не отключайте это в рабочей среде).
web_origins
Список разрешенных источников CORS. Это 'webOrigins' в API Keycloak REST.

Примеры

- 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'}


Статус

Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость интерфейса.

Автор

  • 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.5/modules/keycloak_client_module.html

Spec-Zone.ru

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