Spec-Zone.ru › Ansible 2.10

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

Примечание

Этот плагин входит в коллекцию community.general (версия 1.3.2).

Для его установки используйте: ansible-galaxy collection install community.general.

Для использования в книге задач укажите: community.general.keycloak_client.

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

Описание

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

Параметры

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

псевдонимы: 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 binding для службы единого выхода клиента.
saml_single_logout_service_url_redirect
строка
URL SAML redirect binding для службы единого выхода клиента.
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)? В API Keycloak это 'authorizationServicesEnabled'.

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

псевдонимы: authorizationSettings
base_url
строка
URL по умолчанию, используемый при необходимости перенаправления или связи обратно с клиентом сервером аутентификации. В API Keycloak это 'baseUrl'.

псевдонимы: baseUrl
bearer_only
логическое значение
    Варианты:
  • нет
  • да
Тип доступа для данного клиента - только с токеном Bearer. В API Keycloak это 'bearerOnly'.

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

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

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

псевдонимы: clientTemplate
consent_required
логическое значение
    Варианты:
  • нет
  • да
Если включено, пользователи должны дать согласие на доступ к клиенту. В API Keycloak это 'consentRequired'.

псевдонимы: consentRequired
END_OF_DOCUMENT_MARKER
default_roles
список / элементы=строка
список стандартных ролей для этого клиента. Если ссылаемые роли клиента ещё не существуют, они будут созданы. Это "defaultRoles" в Keycloak REST API.

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

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

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

псевдонимы: fullScopeAllowed
id
строка
Идентификатор клиента для обработки. Обычно это UUID. Требуется либо этот, либо client_id. Если указаны оба, приоритет отдаётся этому.
implicit_flow_enabled
логический
    Варианты:
  • нет
  • да
Включить неявный поток для этого клиента (OpenID Connect)? Это "implicitFlowEnabled" в Keycloak REST API.

псевдонимы: implicitFlowEnabled
name
строка
Имя клиента (не то же самое, что client_id)
node_re_registration_timeout
целое число
Таймаут повторной регистрации узла кластера для этого клиента. Это "nodeReRegistrationTimeout" в Keycloak REST API.

псевдонимы: nodeReRegistrationTimeout
not_before
целое число
Отменить все токены, выпущенные до этой даты для этого клиента (это временная метка Unix). Это "notBefore" в Keycloak REST API.

псевдонимы: notBefore
protocol
строка
    Варианты:
  • openid-connect
  • saml
Тип клиента (либо openid-connect , либо saml.
protocol_mappers
список / элементы=словарь
список словарей, определяющих протокольные мапперы для этого клиента. Это "protocolMappers" в Keycloak REST API.

псевдонимы: protocolMappers
config
словарь
Словарь, определяющий параметры конфигурации для протокольного маппера; содержимое отличается в зависимости от значения protocolMapper и не документировано, за исключением источника мапперов и его родительских классов. Пример приведён ниже. Получить допустимые значения конфигурации проще всего, выведя существующую конфигурацию протокольного маппера в режиме проверки в поле existing.
consentRequired
логический
    Варианты:
  • нет
  • да
Указывает, требуется ли пользователю предоставить согласие клиенту, чтобы этот маппер был активен.
consentText
строка
Имя согласия на понятном для человека языке, которое предоставляется пользователю для принятия.
id
строка
Обычно UUID, указывающий внутренний идентификатор экземпляра этого протокольного маппера.
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
логический
    Варианты:
  • нет
  • да
Тип доступа для этого клиента общедоступный или нет? Это "publicClient" в Keycloak REST API.

псевдонимы: publicClient
realm
строка
По умолчанию:
"master"
Домен для создания клиента.
redirect_uris
список / элементы=строка
Допустимые URI перенаправления для этого клиента. Это "redirectUris" в Keycloak REST API.

псевдонимы: redirectUris
registered_nodes
словарь
словарь зарегистрированных узлов кластера (с nodename в качестве ключа и времени последней регистрации в качестве значения). Это "registeredNodes" в Keycloak REST API.

псевдонимы: registeredNodes
registration_access_token
строка
Токен доступа к регистрации предоставляет клиентам доступ к службе регистрации клиентов. Это "registrationAccessToken" в Keycloak REST API.

псевдонимы: registrationAccessToken
root_url
строка
Корневой URL-адрес, добавляемый к относительным URL-адресам для этого клиента. Это "rootUrl" в Keycloak REST API.

псевдонимы: rootUrl
secret
строка
При использовании client_authenticator_type client-secret (по умолчанию), вы можете указать секрет здесь (в противном случае он будет сгенерирован, если не существует). При изменении этого секрета модуль пока не зарегистрирует изменение (но изменённый секрет будет сохранён).
service_accounts_enabled
логический
    Варианты:
  • нет
  • да
Включены ли сервисные учётные записи для этого клиента (OpenID connect)? Это "serviceAccountsEnabled" в Keycloak REST API.

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

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

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

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

псевдонимы: useTemplateMappers
use_template_scope
логический
    Варианты:
  • нет
  • да
Использовать конфигурацию области из client_template? Это "useTemplateScope" в Keycloak REST API.

псевдонимы: useTemplateScope
validate_certs
логический
    Варианты:
  • нет
  • да ←
Проверять сертификаты TLS (не отключайте это в рабочей среде).
web_origins
list / elements=string
Список разрешенных источников 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'}


Авторы

  • 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.10/collections/community/general/keycloak_client_module.html

Spec-Zone.ru

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