...
| Code Block | ||
|---|---|---|
| ||
openssl req -newkey rsa:2048 -nodes -keyout integrator_private.key -x509 -days 365 -out integrator_private.crt |
Скрипт запросит данные для сертификата. Заполнение данных опционально, они не участвуют в проверке подлинности.
...
В результате будет создан файл с сертификатом интегратора integrator_private.crt
| Warningtip |
|---|
Файл integrator_private.crt и его содержимое никому не передавать и хранить в секрете! необходимо будет далее передать в службу поддержки HRlink |
1.3. Создать публичный ключ сертификата
| Code Block | ||
|---|---|---|
| ||
openssl x509 -pubkey -noout -in integrator_private.crt > integrator_pubkey.pem |
...
- Тенант, для которого необходимо зарегистрировать интегратора
- Имя интегратора в английской транслитерации. Например, Company.
- Значение поля издателя (
issuer) Bearer-токена. Может совпадать с именем интегратора. Это поле будет использоваться интегратором для генерации Bearer-токена. - Сертификат Интегратора - сертификат публичного ключа Интегратора стандарта X.509 в текстовом формате PEM. Это файл integrator_pubkey.pemcrt, который был сгенерирован выше по тексту.
- Контактный email.
...
Bearer-токен - это JWT-токен, подписанный приватным ключом интегратора - файлом integrator_private.key, который мы выпустили в п. 1.1. выше по тексту.
| Note |
|---|
Bearer-токен должен генерироваться программными средствами (автоматически), но далее, для наглядности, мы рассмотрим ручной выпуск. |
- Для создания JWT-токена и его подписания воспользуемся сайтом https://jwt.io/
, раздел JWT Encoder - Если использовались скрпты из данной инструкции, то поле HEADERраздел Header: ALGORITHM & TOKEN TYPE должно Algorithm & Token Type должен содержать следующие поля:
UI Text Box {
"alg": "RS256",
"typ": "JWT"
}
alg - алгоритм шифрования RS256
typ - тип токена JWT - Поле PAYLOAD:DATA должно Раздел Payload: Data должен содержать следующие поля:
UI Text Box {
"iss": "Company",
"sub": "9eacedbf-48e3-4bf3-a00c-78b58b2721d7",
"aud": "esa.hr-link.ru",
"iat": 1735111111,
"nbf": 1735111111,
"exp": 1735679400
}
iss - Значение поля издателя (issuer) Bearer-токена, которое мы зарегистрировали через Службу заботы в п. 2.1.3. данной инструкции.
sub - ID интегратора, который мы получили в ответе от Службы заботы в п. 2.2. данной инструкции.
aud - всегда равно esa.hr-link.ru
iat - момент выпуска токена в формате unixtimestamp.
nbf - момент начала действия токена в формате unixtimestamp.
exp - момент истечения срока действия токена в формате unixtimestamp. Не может быть больше 10 минут от момента начала действия (есть возможность изменить ограничение через Службу заботы)Tip Для удобной генерацииunixtimestamp можно воспользоваться сайтом https://www.unixtimestamp.com/
- В поля VERIFY SIGNATURE разделе Sign JWT: Private Key заполнить содержимое из файлов файла integrator_private.key и
integrator_pubkey.pem. - В поле Encoded разделе JSON Web Token (справа) сгенерируется подписанный вашим приватным ключом Bearer-токен, который мы ниже будем обменивать на мастер-токен.
...
| Note |
|---|
Если Impersonated-User-Id-Type = HR_LINK_ID, то Impersonated-User-Id- это идентификатор, который возвращается в поле id метода currentUser (не путать с clientUserId) |
5. Перевыпуск и использование токенов
Bearer-токен должен генерироваться на стороне интегратора (клиента) программными средствами до момента истечения ранее выпущенногог токена (пока выпущенный токен не истек его можно переиспользовать), а затем обмениваться на новый мастер-токен перед моментом истечения текущего мастер-токена (поле exp в payload-e JWT). Другими словами: нужно использовать в запросах bearer-токен и мастер-токен до истечения их срока жизни. Выпускать новый мастер-токен крайне желательно только когда предыдущий истек, но ограничений на стороне HRlink в этом плане нет (можно выпускать мастер-токены без ограничений).
10 минут жизни мастер-токена - это конфигурируемое значение, как и максимальный срок жизни Bearer-токена, который генерируется на стороне интегратора (клиента).
То есть можно настроить HRlink так, что ваш Bearer-токен будет действовать, например, один год, а мастер-токен HRlink-ом будет выпускаться, например, на 1 час.
Важно понимать, что увеличение сроков жизни токенов увеличивает риски уязвимости приложения.
Конфигурация сроков жизни производится через техподдержку.