Spec-Zone.ru › Ansible 2.11

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

Примечание

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

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

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

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

Описание

  • Этот модуль позволяет администрировать клиентов Keycloak через REST API Keycloak. Он требует доступа к REST API через OpenID Connect; пользователь, подключающийся, и используемый клиент должны иметь соответствующие права доступа. В стандартной установке Keycloak admin-cli и административный пользователь будут работать, как и отдельное определение клиента со scope, настроенным под ваши потребности, и пользователь с необходимыми ролями.
  • Имена опций модуля являются snake_case вариантами camelCase вариантов, найденных в API Keycloak и его документации по адресу https://www.keycloak.org/docs-api/8.0/rest-api/index.html. Предоставляются алиасы, чтобы можно было использовать camelCased версии.
  • 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, логическое значение, указывающее, следует ли игнорировать запрошенный формат имени субъекта 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, логическое значение, указывающее, следует ли использовать URL JWKS для получения открытых ключей клиента.
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). Это 'authorizationServicesEnabled' в API Keycloak REST.

псевдонимы: authorizationServicesEnabled
authorization_settings
словарь
Структура данных, определяющая параметры авторизации для этого клиента. Для справки, см. документацию API Keycloak по адресу https://www.keycloak.org/docs-api/8.0/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
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
логическое значение
    Варианты:
  • нет
  • да
Если включено, пользователи должны дать согласие на доступ клиента. Это 'consentRequired' в API Keycloak REST.

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

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

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

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

псевдонимы: fullScopeAllowed
id
строка
Идентификатор клиента для обработки. Обычно это UUID. Требуется либо этот, либо client_id. Если указаны оба, используется этот.
implicit_flow_enabled
логическое
    Варианты:
  • нет
  • да
Включен ли неявный поток для этого клиента (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 типа этого маппера протокола. Полный список невозможно предоставить, так как он может быть расширен через SPIs пользователем 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'.
public_client
логическое
    Варианты:
  • нет
  • да
Тип доступа для данного клиента — общедоступный или нет? Это соответствует полю 'publicClient' в API Keycloak REST.

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

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

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

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

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

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

псевдонимы: 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
dictionary
всегда
Представление клиента после выполнения модуля (пример усечён).

Пример:
{'adminUrl': 'http://www.example.com/admin_url', 'attributes': {'request.object.signature.alg': 'RS256'}}
existing
dictionary
всегда
Представление существующего клиента (пример усечён).

Пример:
{'adminUrl': 'http://www.example.com/admin_url', 'attributes': {'request.object.signature.alg': 'RS256'}}
msg
string
всегда
Сообщение о том, какое действие было выполнено.

Пример:
Клиент testclient был обновлён
proposed
dictionary
всегда
Представление предложенных изменений для клиента.

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


Авторы

  • Ейке Фрост (@eikef)

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

Spec-Zone.ru

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