JWT для мастер-токена
Чтобы получить мастер-токенMaster-Api-Token Мастер-токен для M2M-интеграций. Позволяет выполнять запросы от имени любого пользователя системы через заголовки Impersonated-User-Id. Получается через ESA с помощью сертификата интегратора., интегратор формирует Bearer-токен JWT, подписывает его приватным RSA-ключом и передаёт в метод Создать мастер-токен.
Что получится в конце
Интеграция получит подписанный JWT, который можно передать в заголовке Authorization: Bearer {integratorToken} при выпуске masterToken.
Что нужно заранее
| Что нужно | Где получить |
|---|---|
integrator_private.key | Регистрация интегратора |
iss | Подтверждает Служба заботы при регистрации интегратора |
sub | Возвращает Служба заботы после регистрации интегратора |
Header
{
"alg": "RS256",
"typ": "JWT"
}
Payload
{
"iss": "MyCompany",
"sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"aud": "esa.hr-link.ru",
"iat": 1680000000,
"nbf": 1680000000,
"exp": 1680000600
}
| Поле | Описание |
|---|---|
iss | Значение издателя, подтверждённое при регистрации |
sub | IDid Внутренний идентификатор сущности в формате UUID, генерируемый HRlink при создании. Неизменяемый, используется во всех внутренних операциях. интегратора из ответа Службы заботы |
aud | Всегда esa.hr-link.ru |
iat | Время выпуска токена, Unix timestamp в секундах |
nbf | Начало действия токена, Unix timestamp в секундах |
exp | Время истечения токена, Unix timestamp в секундах |
Подпись
Подпишите JWT приватным ключом integrator_private.key. HRlink принимает только RSA-алгоритмы RS256, RS384 и RS512. Рекомендуемый вариант — RS256.
Не используйте HS256, HS384 и HS512. При симметричном алгоритме подписи API вернёт ошибку 51.214.
Проверить JWT через jwt.io
Через jwt.io можно проверить тестовый JWT: алгоритм подписи, payload, формат приватного ключа и итоговый Bearer-токен.
jwt.io — публичный сайт. Не вставляйте туда боевой приватный ключ, боевой JWT и персональные данные. В рабочей интеграции подписывайте и проверяйте JWT локально или в корпоративном инструменте.
1. Откройте JWT Encoder
Откройте jwt.io и переключитесь на вкладку JWT Encoder.
2. Выберите алгоритм RS256
В списке Select signing algorithm выберите RS256. После выбора jwt.io обновит Header до нужного значения:
{
"alg": "RS256",
"typ": "JWT"
}
3. Заполните Payload
В блоке Payload → Data замените пример на значения интегратора:
{
"iss": "MyCompany",
"sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"aud": "esa.hr-link.ru",
"iat": 1680000000,
"nbf": 1680000000,
"exp": 1680000600
}
iat, nbf и exp указывайте как Unix timestamp в секундах. Текущее значение можно получить командой date +%s в Linux/macOS или [int](Get-Date -UFormat %s) в PowerShell.
4. Вставьте приватный ключ
В блоке Sign JWT: Private Key вставьте тестовый приватный ключ из файла integrator_private.key: весь текст, включая строки -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----. Формат PEM выбран по умолчанию, менять его не нужно.
Статус Valid private key означает, что jwt.io распознал ключ. Если статус не появился, проверьте, что ключ вставлен целиком и без лишних символов.
5. Скопируйте готовый JWT
В блоке Encoded JWT jwt.io покажет подписанный токен. Нажмите Copy и передайте значение в заголовке Authorization: Bearer {integratorToken} при вызове метода Создать мастер-токен.
Следующий шаг — получить мастер-токен.