Spec-Zone.ru › Ansible

community.general.keycloak_client модуль – Разрешает администрирование клиентов Keycloak через API Keycloak

Примечание

Этот модуль является частью коллекции community.general (версия 9.5.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить ее, используйте: ansible-galaxy collection install community.general.

Чтобы использовать ее в книге задач, укажите: community.general.keycloak_client.

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

Описание

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

Параметры

Параметр

Комментарии

admin_url

aliases: adminUrl

string

URL для доступа к административному интерфейсу клиента. Это ‘adminUrl’ в Keycloak REST API.

always_display_in_console

aliases: alwaysDisplayInConsole

boolean

добавлено в community.general 4.7.0

Отображать ли этого клиента в консоли учетных записей, даже если у пользователя нет активной сессии.

Варианты:

  • false
  • true

attributes

dictionary

Словарь дополнительных атрибутов для этого клиента. Он может содержать различные параметры конфигурации; пример приведен в разделе примеров. Хотя исчерпывающий список допустимых параметров недоступен, возможные параметры по состоянию на Keycloak 3.4 перечислены ниже. Keycloak API не проверяет, подходит ли данный параметр для используемого протокола; если он указан, Keycloak просто не будет его использовать.

jwks.url

string

Для клиентов OpenID-Connect, URL, где хранятся ключи клиента в JWK.

jwt.credential.certificate

string

Для клиентов OpenID-Connect, сертификат клиента для проверки JWT, выпущенного клиентом и подписанного его ключом, кодированный в base64.

request.object.signature.alg

string

Для клиентов OpenID-Connect, алгоритм JWA, который клиент должен использовать при отправке объекта запроса OIDC. Один из any, none, RS256.

saml.authnstatement

string

Для клиентов SAML, логическое значение, указывающее, следует ли включать в ответ на вход утверждение, содержащее метод и временную метку.

saml.client.signature

string

Для клиентов SAML, логическое значение, указывающее, требуется ли подпись клиента и ее проверка.

saml.encrypt

string

Логическое значение, указывающее, следует ли шифровать утверждения SAML с помощью открытого ключа клиента.

saml.force.post.binding

string

Для клиентов SAML, логическое значение, указывающее, следует ли всегда использовать привязку POST для ответов.

saml.onetimeuse.condition

string

Для клиентов SAML, логическое значение, указывающее, следует ли включать условие OneTimeUse в ответы на вход.

saml.server.signature

string

Логическое значение, указывающее, следует ли подписывать документы SAML областью.

saml.server.signature.keyinfo.ext

string

Для клиентов SAML, логическое значение, указывающее, следует ли оптимизировать поиск ключа подписи REDIRECT путем включения идентификатора ключа подписи в элемент SAML Extensions.

saml.signature.algorithm

string

Алгоритм подписи, используемый для подписи документов SAML. Один из RSA_SHA256, RSA_SHA1, RSA_SHA512, или DSA_SHA1.

saml.signing.certificate

string

Сертификат ключа подписи SAML, кодированный в base64.

saml.signing.private.key

string

Закрытый ключ подписи SAML, кодированный в base64.

saml_assertion_consumer_url_post

string

URL привязки SAML POST для службы обработки утверждений клиента (ответы на вход).

saml_assertion_consumer_url_redirect

string

URL привязки SAML Redirect для службы обработки утверждений клиента (ответы на вход).

saml_force_name_id_format

string

Для клиентов SAML, логическое значение, указывающее, следует ли игнорировать запрашиваемый формат субъекта NameID и использовать настроенный вместо него.

saml_name_id_format

string

Для клиентов SAML, формат NameID для использования (один из username, email, transient, или persistent)

saml_signature_canonicalization_method

string

Метод канонизации подписи 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

string

URL SAML POST-связи для службы однократного выхода клиента.

saml_single_logout_service_url_redirect

string

URL SAML-перенаправления для службы однократного выхода клиента.

use.jwks.url

string

Для клиентов OpenID-Connect, булево значение, указывающее, использовать ли URL JWKS для получения открытых ключей клиента.

user.info.response.signature.alg

string

Для клиентов OpenID-Connect, алгоритм JWA для подписанных ответов с UserInfo-точки входа. Одно из RS256 или unsigned.

x509.allow.regex.pattern.comparison

boolean

added in community.general 9.5.0

Для клиентов OpenID-Connect, булево значение, указывающее, разрешить ли x509.subjectdn в качестве регулярного выражения.

Варианты:

  • false
  • true

x509.subjectdn

string

added in community.general 9.5.0

Для клиентов OpenID-Connect, субъект, который будет использоваться для аутентификации клиента.

auth_client_id

string

OpenID Connect client_id для аутентификации в API.

По умолчанию: "admin-cli"

auth_client_secret

string

Секрет клиента для использования совместно с auth_client_id (если требуется).

auth_keycloak_url

aliases: url

string / обязательно

URL экземпляра Keycloak.

auth_password

aliases: password

string

Пароль для аутентификации доступа к API.

auth_realm

string

Имя области Keycloak для аутентификации доступа к API.

auth_username

aliases: username

string

Имя пользователя для аутентификации доступа к API.

authentication_flow_binding_overrides

aliases: authenticationFlowBindingOverrides

dictionary

added in community.general 3.4.0

Переопределение привязок потоков аутентификации области.

browser

string

Идентификатор потока браузерного потока аутентификации.

authentication_flow_binding_overrides.browser и authentication_flow_binding_overrides.browser_name взаимоисключают друг друга.

browser_name

aliases: browserName

string

added in community.general 9.1.0

Имя потока браузерного потока аутентификации.

authentication_flow_binding_overrides.browser и authentication_flow_binding_overrides.browser_name взаимоисключают друг друга.

direct_grant

aliases: directGrant

string

Идентификатор потока аутентификации прямого предоставления.

authentication_flow_binding_overrides.direct_grant и authentication_flow_binding_overrides.direct_grant_name взаимоисключают друг друга.

direct_grant_name

aliases: directGrantName

string

added in community.general 9.1.0

Имя потока аутентификации прямого предоставления.

authentication_flow_binding_overrides.direct_grant и authentication_flow_binding_overrides.direct_grant_name взаимоисключают друг друга.

END_OF_DOCUMENT_MARKER

authorization_services_enabled

aliases: authorizationServicesEnabled

boolean

Включены ли для этого клиента службы авторизации (OpenID connect)? Это ‘authorizationServicesEnabled’ в API Keycloak.

Варианты:

  • false
  • true

authorization_settings

aliases: authorizationSettings

dictionary

Структура данных, определяющая параметры авторизации для этого клиента. Для справки, пожалуйста, обратитесь к документации API Keycloak по адресу https://www.keycloak.org/docs-api/8.0/rest-api/index.html#_resourceserverrepresentation. Это ‘authorizationSettings’ в API Keycloak.

base_url

aliases: baseUrl

string

Основной URL для использования при необходимости перенаправления или связи с клиентом сервером аутентификации. Это ‘baseUrl’ в API Keycloak.

bearer_only

aliases: bearerOnly

boolean

Тип доступа для этого клиента — только токен bearer. Это ‘bearerOnly’ в API Keycloak.

Варианты:

  • false
  • true

client_authenticator_type

aliases: clientAuthenticatorType

string

Как клиенты аутентифицируются на сервере авторизации? Можно выбрать client-secret, client-jwt, или client-x509. При использовании client-secret, параметр модуля secret может его установить, для client-jwt, вы можете использовать ключи use.jwks.url, jwks.url, и jwt.credential.certificate в параметре модуля attributes для настройки его поведения. Для client-x509 вы можете использовать ключи x509.allow.regex.pattern.comparison и x509.subjectdn в параметре модуля attributes для настройки сертификатов для проверки.

Это ‘clientAuthenticatorType’ в API Keycloak.

Варианты:

  • "client-secret"
  • "client-jwt"
  • "client-x509"

client_id

aliases: clientId

string

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

client_template

aliases: clientTemplate

string

Шаблон клиента, используемый для этого клиента. Если шаблон не существует, это поле будет проигнорировано. Это ‘clientTemplate’ в API Keycloak.

connection_timeout

integer

added in community.general 4.5.0

Управляет временем ожидания HTTP-соединений (в секундах) с API Keycloak.

По умолчанию: 10

consent_required

aliases: consentRequired

boolean

Если включено, пользователи должны дать согласие на доступ к клиенту. Это ‘consentRequired’ в API Keycloak.

Варианты:

  • false
  • true

default_client_scopes

aliases: defaultClientScopes

list / elements=string

added in community.general 4.7.0

Список стандартных областей действия клиента.

default_roles

aliases: defaultRoles

list / elements=string

Список стандартных ролей для этого клиента. Если ссылаемые роли клиента еще не существуют, они будут созданы. Это ‘defaultRoles’ в API Keycloak.

description

string

Описание клиента в Keycloak.

direct_access_grants_enabled

aliases: directAccessGrantsEnabled

boolean

Включены ли прямые гранты доступа для этого клиента (OpenID connect)? Это ‘directAccessGrantsEnabled’ в API Keycloak.

Варианты:

  • false
  • true

enabled

boolean

Включен ли этот клиент?

Варианты:

  • false
  • true
END_OF_DOCUMENT_MARKER

frontchannel_logout

aliases: frontchannelLogout

boolean

Включен ли frontchannel logout для этого клиента? Это «frontchannelLogout» в API Keycloak.

Варианты:

  • false
  • true

full_scope_allowed

aliases: fullScopeAllowed

boolean

Включена ли функция «Разрешить полный объем доступа» для этого клиента? Это ‘fullScopeAllowed’ в API Keycloak.

Варианты:

  • false
  • true

http_agent

string

добавлено в community.general 5.4.0

Настраивает заголовок HTTP User-Agent.

По умолчанию: "Ansible"

id

string

Идентификатор клиента, с которым будет выполняться работа. Обычно это UUID. Требуется либо это, либо client_id. Если указаны оба значения, приоритет имеет это значение.

implicit_flow_enabled

aliases: implicitFlowEnabled

boolean

Включить неявный поток для данного клиента (OpenID connect). Это ‘implicitFlowEnabled’ в API Keycloak.

Варианты:

  • false
  • true

name

string

Имя клиента (это не то же самое, что client_id).

node_re_registration_timeout

aliases: nodeReRegistrationTimeout

integer

Таймаут повторной регистрации узла кластера для этого клиента. Это ‘nodeReRegistrationTimeout’ в API Keycloak.

not_before

aliases: notBefore

integer

Отменить все токен, выпущенные до этой даты для этого клиента (это метка времени Unix). Это ‘notBefore’ в API Keycloak.

optional_client_scopes

aliases: optionalClientScopes

list / elements=string

добавлено в community.general 4.7.0

Список дополнительных областей действия клиента.

protocol

string

Тип клиента.

Только при создании, значение по умолчанию будет openid-connect, если protocol опущено.

Значение docker-v2 было добавлено в community.general 8.6.0.

Варианты:

  • "openid-connect"
  • "saml"
  • "docker-v2"

protocol_mappers

aliases: protocolMappers

list / elements=dictionary

Список словарей, определяющих мапперы протокола для данного клиента. Это ‘protocolMappers’ в API Keycloak.

config

dictionary

Словарь, определяющий параметры конфигурации маппера протокола; содержимое отличается в зависимости от значения protocol_mappers[].protocolMapper, и не документировано, кроме как в источнике мапперов и его родительских классов. Пример приведен ниже. Легче всего получить допустимые значения конфигурации, выведя конфигурацию уже существующего маппера протокола с помощью режима проверки в поле existing.

consentRequired

boolean

Указывает, требуется ли пользователю предоставить согласие клиенту, чтобы этот маппер был активен.

Варианты:

  • false
  • true

consentText

string

Человекопонятное имя согласия, которое пользователю необходимо принять.

id

string

Обычно UUID, указывающий внутренний идентификатор экземпляра этого маппера протокола.

name

string

Имя этого маппера протокола.

END_OF_DOCUMENT_MARKER

protocol

string

Это указывает, для какого протокола активен данный протокол-маппер.

Варианты:

  • "openid-connect"
  • "saml"
  • "docker-v2"

protocolMapper

string

Внутреннее имя типа Keycloak для этого протокол-маппера. Полный список невозможно предоставить, так как он может быть расширен пользователями Keycloak с помощью SPI. По умолчанию, в 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

aliases: publicClient

boolean

Тип доступа для данного клиента – публичный или нет. В API Keycloak это 'publicClient'.

Варианты:

  • false
  • true

realm

string

Домен, в котором будет создан клиент.

По умолчанию: "master"

redirect_uris

aliases: redirectUris

list / elements=string

Допустимые URI перенаправления для этого клиента. В Keycloak REST API это 'redirectUris'.

registered_nodes

aliases: registeredNodes

dictionary

Словарь зарегистрированных узлов кластера (с nodename в качестве ключа и временем последней регистрации в качестве значения). В Keycloak REST API это 'registeredNodes'.

registration_access_token

aliases: registrationAccessToken

string

Токен доступа для регистрации предоставляет доступ к службе регистрации клиентов. В Keycloak REST API это 'registrationAccessToken'.

root_url

aliases: rootUrl

string

Основной URL, добавляемый к относительным URL-адресам для данного клиента. В Keycloak REST API это 'rootUrl'.

secret

string

При использовании client_authenticator_type=client-secret (по умолчанию), вы можете указать секрет здесь (в противном случае он будет сгенерирован, если не существует). Если вы измените этот секрет, модуль пока не зарегистрирует изменения (но изменённый секрет будет сохранён).

service_accounts_enabled

aliases: serviceAccountsEnabled

boolean

Включены ли учетные записи служб для этого клиента (OpenID connect)? В Keycloak REST API это 'serviceAccountsEnabled'.

Варианты:

  • false
  • true

standard_flow_enabled

aliases: standardFlowEnabled

boolean

Включить стандартный поток для этого клиента или нет (OpenID connect)? В Keycloak REST API это 'standardFlowEnabled'.

Варианты:

  • false
  • true

state

string

Состояние клиента.

При present, клиент будет создан (или обновлён, если уже существует).

При absent, клиент будет удалён, если он существует.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

surrogate_auth_required

aliases: surrogateAuthRequired

boolean

Требуется ли суррогат аутентификация. В Keycloak REST API это 'surrogateAuthRequired'.

Варианты:

  • false
  • true

token

string

добавлено в community.general 3.0.0

Токен аутентификации для API Keycloak.

использовать_шаблон_настройки

псевдонимы: useTemplateConfig

логическое

Использовать ли настройки из client_template. Это ‘useTemplateConfig’ в API Keycloak.

Варианты:

  • false
  • true

использовать_шаблон_мапперов

псевдонимы: useTemplateMappers

логическое

Использовать ли настройки мапперов из client_template. Это ‘useTemplateMappers’ в API Keycloak.

Варианты:

  • false
  • true

использовать_шаблон_области

псевдонимы: useTemplateScope

логическое

Использовать ли настройки области из client_template. Это ‘useTemplateScope’ в API Keycloak.

Варианты:

  • false
  • true

проверять_сертификаты

логическое

Проверять TLS-сертификаты (не отключайте это в рабочей среде).

Варианты:

  • false
  • true ← (по умолчанию)

домены_сайтов

псевдонимы: webOrigins

список / элементы=строка

Список разрешённых источников CORS. Это ‘webOrigins’ в API Keycloak.

Атрибуты

Атрибут

Поддержка

Описание

режим_проверки

Поддержка: полная

Может работать в check_mode и возвращать прогноз о статусе изменений без модификации целевого объекта.

режим_сравнения

Поддержка: полная

Возвращает подробности о том, что изменилось (или, возможно, должно быть изменено в check_mode), при режиме сравнения.

Примеры

- name: Create or update Keycloak client (minimal example), authentication with credentials
  community.general.keycloak_client:
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    auth_username: USERNAME
    auth_password: PASSWORD
    client_id: test
    state: present
  delegate_to: localhost


- name: Create or update Keycloak client (minimal example), authentication with token
  community.general.keycloak_client:
    auth_client_id: admin-cli
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    token: TOKEN
    client_id: test
    state: present
  delegate_to: localhost


- name: Delete a Keycloak client
  community.general.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
  delegate_to: localhost


- name: Create or update a Keycloak client (minimal example), with x509 authentication
  community.general.keycloak_client:
    auth_client_id: admin-cli
    auth_keycloak_url: https://auth.example.com/auth
    auth_realm: master
    auth_username: USERNAME
    auth_password: PASSWORD
    realm: master
    state: present
    client_id: test
    client_authenticator_type: client-x509
    attributes:
      x509.subjectdn: "CN=client"
      x509.allow.regex.pattern.comparison: false


- name: Create or update a Keycloak client (with all the bells and whistles)
  community.general.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: false
    always_display_in_console: true
    registered_nodes:
      node01.example.com: 1507828202
    registration_access_token: eyJWT_TOKEN
    surrogate_auth_required: false
    default_roles:
      - test01
      - test02
    authentication_flow_binding_overrides:
        browser: 4c90336b-bf1d-4b87-916d-3677ba4e5fbb
    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
  delegate_to: localhost

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:

Ключ

Описание

конечное_состояние

словарь

Представление клиента после выполнения модуля (образец усечён).

Возвращается: при успехе

Пример: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}}

существующий

словарь

Представление существующего клиента (образец усечён).

Возвращается: всегда

Пример: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}}

сообщение

строка

Сообщение о том, какое действие было выполнено.

Возвращается: всегда

Пример: "Client testclient has been updated"

предложенный

словарь

Представление предлагаемого клиента.

Возвращается: всегда

Пример: {"clientId": "test"}

Авторы

  • Eike Frost (@eikef)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (источники)
  • Задать вопрос
  • Отправить отчет об ошибке
  • Запросить новую функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/keycloak_client_module.html

Spec-Zone.ru

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