Spec-Zone.ru › Ansible 2.9

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

Параметры

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

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

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

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

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

Псевдонимы: 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
boolean
    Варианты:
  • no
  • yes
Если включено, пользователи должны дать согласие на доступ клиента. Это 'consentRequired' в API Keycloak REST.

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

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

Псевдонимы: directAccessGrantsEnabled
enabled
boolean
    Варианты:
  • no
  • yes
Включен ли этот клиент?
frontchannel_logout
boolean
    Варианты:
  • no
  • yes
Включен ли frontchannel logout для этого клиента? Это 'frontchannelLogout' в API Keycloak REST.

Псевдонимы: frontchannelLogout
full_scope_allowed
boolean
    Варианты:
  • no
  • yes
Включена ли функция "Разрешено полное охватом" для этого клиента? Это 'fullScopeAllowed' в API Keycloak REST.

Псевдонимы: fullScopeAllowed
id
-
Идентификатор клиента, с которым нужно работать. Обычно это UUID. Требуется либо это, либо client_id. Если вы укажете оба, приоритет отдаётся этому.
implicit_flow_enabled
boolean
    Варианты:
  • no
  • yes
Включить неявный поток для этого клиента (OpenID connect). Это 'implicitFlowEnabled' в 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, указывающий внутренний ID этой инстанции маппера протокола.
name
-
Имя этого маппера протокола.
protocol
-
    Варианты:
  • openid-connect
  • saml
Это либо openid-connect, либо saml, это указывает, для какого протокола активен этот маппер протокола.
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
Полный список доступных мапперов на вашей установке можно получить на консоли администратора, перейдя в Server Info -> Providers и посмотрев раздел 'protocol-mapper'.
public_client
boolean
    Варианты:
  • no
  • yes
Является ли тип доступа для этого клиента общедоступным? Это 'publicClient' в API Keycloak REST.

Псевдонимы: publicClient
realm
-
Домен, в котором нужно создать клиента.
redirect_uris
-
Допустимые URIs перенаправления для этого клиента. Это '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
boolean
    Варианты:
  • нет
  • да
Включены ли учетные записи служб для этого клиента (OpenID connect)? Это «serviceAccountsEnabled» в API Keycloak REST.

Псевдонимы: serviceAccountsEnabled
standard_flow_enabled
boolean
    Варианты:
  • нет
  • да
Включить стандартный поток для этого клиента или нет (OpenID connect)? Это «standardFlowEnabled» в API Keycloak REST.

Псевдонимы: standardFlowEnabled
state
-
    Варианты:
  • присутствует ←
  • отсутствует
Состояние клиента
В present, клиент будет создан (или обновлен, если он уже существует).
В absent, клиент будет удалён, если он существует.
surrogate_auth_required
boolean
    Варианты:
  • нет
  • да
Требуется ли суррогатная авторизация. Это «surrogateAuthRequired» в API Keycloak REST.

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

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

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

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

Spec-Zone.ru

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