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
-
Переходим в раздел
Безопасность
→ подразделKeystores
и нажимаем кнопкуAdd Keystore
; -
Выбираем фабрику jwk-keystore и нажимаем кнопку
Next
-
Заполняем обязательное поле
Object Id
; -
В
Keystore File
загружаем подготовленный .jwk файл;Пример 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" } ] }
-
Нажимаем кнопку
Add
для создания JWK keystore; -
В keystore создается alias, название которого равно значению уникального идентификатора ключа
kid
из загруженного файла .jwk: -
В реестре ресурсов формируются следующие конфигурационные файлы:
-
Файл
jwk-examples.properties
- конфигурационный файл, содержащий параметры для настройки JWK keystore (тип keystore, путь к файлу keystore и пароль); -
Файл
jwk-examples.jwk
- файл, содержащий ключи в формате JSON Web Key (JWK); -
Папка
jwk-examples.jwk.data
- содержащая дополнительные файлы данных и метаданные.
-
Создание JKS keystore
-
Переходим в раздел
Безопасность
→ подразделKeystores
и нажимаем кнопкуAdd Keystore
; -
Выбираем фабрику jks-keystore и нажимаем кнопку
Next
-
Заполняем обязательное поле
Object Id
; -
В обязательном поле
Keystore Type
выбираем тип загружаемого keystore.jks
или.p12
; -
В обязательное поле
Keystore Password
вводим пароль для .jks файла дважды; -
В
Keystore File
загружаем подготовленный .jks файл; -
Нажимаем кнопку
Add
для создания JKS keystore; -
В keystore создается alias c названием указанным в .jks файле;
-
В реестре ресурсов формируются следующие конфигурационные файлы:
-
Файл
jks-examples.properties
- конфигурационный файл, содержащий параметры для настройки JKS keystore (тип keystore, путь к файлу keystore и пароль). -
Файл
jks-examples.jks
- содержащий ключи и сертификаты в формате Java KeyStore (JKS). -
Файл
jks-examples.jks.pwd
- содержащий пароль для JKS keystore, используемый для доступа к ключам и сертификатам.
-
Создание REST-сервиса
-
Переходим в раздел
Сервисы
в дереве меню и создаем публичный REST-сервис: -
В разделе параметров
General
заполняем обязательное поле Object Id; -
В разделе параметров
Main
в обязательном поле для загрузки файлаOpenApi schema
выбираем предварительно загруженную в реестр схемуOpenApi
; -
В разделе параметров
Security
заполняем обязательные поля:-
Authorization Type: выбираем
OAUTH STAND ALONE
(авторизация с использованием автономного OAuth); -
Keystore: выбираем из реестра ресурсов
.jwk
или.jks
файл; -
Jwt Alias: указываем alias keystore.
-
-
Нажимаем кнопку
Add
для добавления сервиса.
Пример настройки и валидации OAuth Introspect с использованием REST API
Для этого примера вам понадобятся:
-
client_id
иclient_secret
: для аутентификации и проверки токена через introspection endpoint. -
Схема OpenAPI: для настройки REST API, защищенного OAuth Introspect.
Настройка Vaults
-
Переходим в раздел
Безопасность
→ подразделVaults
и нажимаем кнопкуAdd Vault
; -
Заполняем обязательное поле
Object Id
; -
Нажимаем кнопку
Add
для добавления Vaults; -
Выбираем созданный Vaults и переходим на вкладку
Aliases
; -
Нажимаем кнопку
Add Alias
для добавления alias; -
Указываем название alias как
password
и заполняем Value даннымиclient_secret
; -
Нажимаем кнопку
Save
для сохранения Alias;
Создание REST-сервиса
-
Переходим в раздел
Сервисы
в дереве меню и создаем публичный REST-сервис: -
В разделе параметров
General
заполняем обязательное поле Object Id; -
В разделе параметров
Main
в поле для загрузки файлаOpenAPI schema
выбираем предварительно загруженную в реестр схему OpenAPI. -
В разделе параметров
Security
заполняем обязательные поля:-
Authorization Type: выбираем
OAUTH INTROSPECT
(авторизация с использованием механизма проверки токенов через introspection endpoint); -
Introspect Authorization Login: Логин для авторизации (в примере используется client_id);
-
Introspect Authorization Password: Пароль для аутентификации при запросе проверки токена (в примере используется client_secret). По умолчанию задан параметр $ENTAXY_SECRETS{password@for-service}, где for-service — это название хранилища секретов в системе Vaults, а password — это alias в указанном хранилище, содержащий client_secret.
-
Introspect URL: URL-адрес для запроса информации о токене, который позволяет проверить его валидность и получить данные о нем.
-
Http receive timeout: Максимальное время ожидания для получения ответа от сервера при запросе информации о токене. Значение по умолчанию - 60 секунд.
-
-
Нажимаем кнопку
Add
для добавления сервиса.