Spec-Zone.ru › Ansible 2.8

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
    Варианты:
  • нет
  • да
Использовать ли конфигурацию областей из 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.8/modules/keycloak_client_module.html

Spec-Zone.ru

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