OAuth 2.0

Ниже рассматриваются способы настройки и валидации механизмов авторизации OAuth 2.0 на платформе Entaxy ION, а также приводятся примеры конфигурации двух ключевых типов авторизации:

  • OAUTH STAND ALONE: Режим, обеспечивающий автономную авторизацию с использованием локально управляемых ключей и настроек, без зависимости от внешних сервисов;

  • OAUTH INTROSPECT: Механизм, позволяющий проверку и валидацию токенов доступа через вызов introspection endpoint для получения информации о токене и его состоянии.

Пример настройки и валидации JWK/JKS keystore с OAuth Stand Alone с использованием REST API

Для этого примера вам понадобятся:

  • Файл .jwk или .jks для хранения ключей и сертификатов.

  • Схема OpenAPI: для настройки REST-сервиса, защищенного OAuth Stand Alone.

Создание JWK keystore

  1. Переходим в раздел Безопасность → подраздел Keystores и нажимаем кнопку Add Keystore;

    button addkeystores
  2. Выбираем фабрику jwk-keystore и нажимаем кнопку Next

    examples jwk 01
  3. Заполняем обязательное поле Object Id;

  4. В Keystore File загружаем подготовленный .jwk файл;

    examples jwk 02

    Пример JWK:

    {
        "keys": [
            {
                "kid": "jwk_examples",
                "kty": "RSA",
                "alg": "RS256",
                "use": "sig",
                "n": "ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_МОДУЛЬ_RSA_КЛЮЧА_В_BASE64_URL",
                "e": "AQAB",
                "x5c": [
                    "ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_СЕРТИФИКАТ_X509_В_BASE64"
                ],
                "x5t": "ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_SHA1_ОТПЕЧАТОК_СЕРТИФИКАТА_В_BASE64_URL",
                "x5t#S256": "ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_SHA256_ОТПЕЧАТОК_СЕРТИФИКАТА_В_BASE64_URL"
            }
        ]
    }
  5. Нажимаем кнопку Add для создания JWK keystore;

  6. В keystore создается alias, название которого равно значению уникального идентификатора ключа kid из загруженного файла .jwk:

    examples jwk 03
  7. В реестре ресурсов формируются следующие конфигурационные файлы:

    examples jwk 04
    • Файл jwk-examples.properties - конфигурационный файл, содержащий параметры для настройки JWK keystore (тип keystore, путь к файлу keystore и пароль);

    • Файл jwk-examples.jwk - файл, содержащий ключи в формате JSON Web Key (JWK);

    • Папка jwk-examples.jwk.data - содержащая дополнительные файлы данных и метаданные.

Создание JKS keystore

  1. Переходим в раздел Безопасность → подраздел Keystores и нажимаем кнопку Add Keystore;

    button addkeystores
  2. Выбираем фабрику jks-keystore и нажимаем кнопку Next

    examples jks 01
  3. Заполняем обязательное поле Object Id;

  4. В обязательном поле Keystore Type выбираем тип загружаемого keystore .jks или .p12;

  5. В обязательное поле Keystore Password вводим пароль для .jks файла дважды;

  6. В Keystore File загружаем подготовленный .jks файл;

    examples jks 02
  7. Нажимаем кнопку Add для создания JKS keystore;

  8. В keystore создается alias c названием указанным в .jks файле;

    examples jks 03
  9. В реестре ресурсов формируются следующие конфигурационные файлы:

    examples jks 04
    • Файл jks-examples.properties - конфигурационный файл, содержащий параметры для настройки JKS keystore (тип keystore, путь к файлу keystore и пароль).

    • Файл jks-examples.jks - содержащий ключи и сертификаты в формате Java KeyStore (JKS).

    • Файл jks-examples.jks.pwd - содержащий пароль для JKS keystore, используемый для доступа к ключам и сертификатам.

Создание REST-сервиса

  1. Переходим в раздел Сервисы в дереве меню и создаем публичный REST-сервис:

    service navigation
    examples jwk 06
  2. В разделе параметров General заполняем обязательное поле Object Id;

    examples jwk 05
  3. В разделе параметров Main в обязательном поле для загрузки файла OpenApi schema выбираем предварительно загруженную в реестр схему OpenApi;

    examples jwk 07
  4. В разделе параметров Security заполняем обязательные поля:

    1. Authorization Type: выбираем OAUTH STAND ALONE (авторизация с использованием автономного OAuth);

    2. Keystore: выбираем из реестра ресурсов .jwk или .jks файл;

    3. Jwt Alias: указываем alias keystore.

      examples jwk 08
  5. Нажимаем кнопку Add для добавления сервиса.

Проверяем доступ к сервису через Postman

  1. Выбираем тип авторизации OAuth 2.0 и заполняем поля для токена.

    examples jwk 10
  2. Выполняем запрос и проверяем, что механизм OAuth Stand Alone корректно функционирует с указанными JWK или JKS.

    examples jwk 09

Пример настройки и валидации OAuth Introspect с использованием REST API

Для этого примера вам понадобятся:

  • client_id и client_secret: для аутентификации и проверки токена через introspection endpoint.

  • Схема OpenAPI: для настройки REST API, защищенного OAuth Introspect.

Настройка Vaults

  1. Переходим в раздел Безопасность → подраздел Vaults и нажимаем кнопку Add Vault;

    oauth introspect01
  2. Заполняем обязательное поле Object Id;

    oauth introspect02
  3. Нажимаем кнопку Add для добавления Vaults;

  4. Выбираем созданный Vaults и переходим на вкладку Aliases;

    oauth introspect03
  5. Нажимаем кнопку Add Alias для добавления alias;

    oauth introspect04
  6. Указываем название alias как password и заполняем Value данными client_secret;

  7. Нажимаем кнопку Save для сохранения Alias;

Создание REST-сервиса

  1. Переходим в раздел Сервисы в дереве меню и создаем публичный REST-сервис:

    service navigation
    examples jwk 06
  2. В разделе параметров General заполняем обязательное поле Object Id;

    examples jwk 05
  3. В разделе параметров Main в поле для загрузки файла OpenAPI schema выбираем предварительно загруженную в реестр схему OpenAPI.

    examples jwk 07
  4. В разделе параметров Security заполняем обязательные поля:

    1. Authorization Type: выбираем OAUTH INTROSPECT (авторизация с использованием механизма проверки токенов через introspection endpoint);

    2. Introspect Authorization Login: Логин для авторизации (в примере используется client_id);

    3. Introspect Authorization Password: Пароль для аутентификации при запросе проверки токена (в примере используется client_secret). По умолчанию задан параметр $ENTAXY_SECRETS{password@for-service}, где for-service — это название хранилища секретов в системе Vaults, а password — это alias в указанном хранилище, содержащий client_secret.

    4. Introspect URL: URL-адрес для запроса информации о токене, который позволяет проверить его валидность и получить данные о нем.

    5. Http receive timeout: Максимальное время ожидания для получения ответа от сервера при запросе информации о токене. Значение по умолчанию - 60 секунд.

      oauth introspect05
  5. Нажимаем кнопку Add для добавления сервиса.

Проверяем доступ к сервису через Postman

  1. Выбираем тип авторизации Bearer Token и заполняем поля для токена.

    oauth introspect07
  2. Выполняем запрос и проверяем, что механизм OAuth Introspect функционирует корректно.

    oauth introspect07