Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagebash
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
languagebash
openssl x509 -pubkey -noout -in integrator_private.crt > integrator_pubkey.pem

...

  1. Тенант, для которого необходимо зарегистрировать интегратора
  2. Имя интегратора в английской транслитерации. Например, Company.
  3. Значение поля издателя (issuer) Bearer-токена. Может совпадать с именем интегратора. Это поле будет использоваться интегратором для генерации Bearer-токена.
  4. Сертификат Интегратора - сертификат публичного ключа Интегратора стандарта X.509 в текстовом формате PEM. Это файл integrator_pubkey.pemcrt, который был сгенерирован выше по тексту.
  5. Контактный email.

...

Bearer-токен - это JWT-токен, подписанный приватным ключом интегратора - файлом integrator_private.key, который мы выпустили в п. 1.1. выше по тексту.

Note

Bearer-токен должен генерироваться программными средствами (автоматически), но далее, для наглядности, мы рассмотрим ручной выпуск.

  1. Для создания JWT-токена и его подписания воспользуемся сайтом https://jwt.io/
    Image Removed, раздел JWT Encoder

  2. Если использовались скрпты из данной инструкции, то поле HEADERраздел Header: ALGORITHM & TOKEN TYPE должно Algorithm & Token Type должен содержать следующие поля:
    UI Text Box

    {
      "alg": "RS256",
      "typ": "JWT"
    }


    alg - алгоритм шифрования RS256
    typ - тип токена JWT
  3. Поле 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/

  4. В поля VERIFY SIGNATURE разделе Sign JWT: Private Key заполнить содержимое из файлов файла integrator_private.key и integrator_pubkey.pem.
  5. В поле 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 час. 
Важно понимать, что увеличение сроков жизни токенов увеличивает риски уязвимости приложения.

Конфигурация сроков жизни производится через техподдержку.