Использование программного компонента Клиентский Модуль сервиса Аутентификации KMAH#
Аутентификация запроса по заголовку с JWT-токеном#
При использовании локального режима верификации токенов (authPublicKeyLocations не заполнен), публичный ключ для проверки токена должен быть в формате PEM. Выгрузка ключа KeyCloak должна быть выполнена по инструкции (секция для версии провайдера 7.3.1).
При использовании онлайн получения публичного ключа (в authPublicKeyLocations указан mapping на онлайн получение публичного ключа), дополнительных действий с публичным ключом не требуется.
В фильтр аутентификации приходит запрос требующий аутентификации. В заголовке запроса Authorization: передается
JWT-токен с набором полей для аутентификации запроса. Клиентский Модуль производит проверку и валидацию необходимых
для аутентификации полей из JWT-токена и в зависимости от сценария аутентифицирует запрос, либо возвращает ошибку
аутентификации.
Ниже приводится пример входящего JWT-токена и описание его полей.
{
"alg" : "RS256",
"typ" : "JWT",
"kid" : "QQQGMpFRIhaR1HDeJNIVRrEmUK14AgR_sz_rg-5kjvU"
}{
"exp": 1623917687,
"iat": 1623917387,
"jti": "b986ddb6-d96e-400d-8b09-64f217ea98a6",
"iss": "https://auth.my.company.ru/auth/realms/CustomerA",
"aud": [
"CustomerA:Project1",
"CustomerA:Project2"
],
"sub": "6608179f-9f7f-4154-922f-f541c7448e6e",
"typ": "Bearer",
"azp": "CustomerA:KMAH",
"session_state": "aed58344-610d-4d09-b241-5db0193e2ad5",
"acr": "1",
"resource_access": {
"CustomerA:Project1": {
"roles": [
"JustUser"
]
},
"CustomerA:Project2": {
"roles": [
"AppRoleC",
"AppRoleB"
]
}
},
"scope": "email profile",
"email_verified": false,
"preferred_username": "ivanov-ii"
}
Cодержимое токена приведено в качестве примера, и может не соответствовать по наполнению с реальными токенами.
Блок |
Параметр |
Описание |
Пример |
|---|---|---|---|
|
|
Алгоритм, который использовался для подписания токена |
RS256 |
|
Тип формата токена |
JWT |
|
|
ID открытого ключа для проверки подписи |
QQQGMpFRIhaR1HDeJNIVRrEmUK14AgR_sz_rg-5kjvU |
|
|
|
JWT ID Claim - уникальный идентификатор токена |
9d4cd7be-320a-4ee7-b8b8-15623c0ba4dd |
|
Тип токена |
Bearer |
|
|
Срок действия токена |
1586514237 |
|
|
Срок, ДО которого токен НЕ может быть использован |
0 |
|
|
Время выдачи токена |
1586513637 |
|
|
Идентификатор издателя токена |
https://mycompany-auth.mycompany.ru/auth/realms/PlatformAuth |
|
|
Получатель, сторона которая запросила токен (содержит |
PlatformAuth-Proxy |
|
|
Идентификатор назначения токена, содержит ID УЗ пользователя |
739edb6e-b9b5-4ec5-9731-2e37de8d6327 |
|
|
Определяет получателей, для которых предназначен токен |
|
|
|
Строковое значение, используемое для связывания сеанса клиента с TokenID |
64ac9d64d2b2b31167ab02015ae75d4e |
|
|
Время когда была произведена аутентификация |
1586513637 |
|
|
Идентификатор сессии пользователя |
e281c489-b28b-4213-95a5-e6985071b69c |
|
|
Уровень, достаточный для идентификации |
1 |
|
|
Набор разрешений для работы с консолью |
|
|
|
Логин пользователя |
test_admin |
Перезагрузка секретов провайдера#
Механизм перезагрузки настроек (секретов) провайдера в режиме рантайм реализован начиная с версии 7.4.17.
С детальной настройкой перезагрузки секретов провайдера можно ознакомиться в разделе Настройка перезагрузки секретов провайдеров.