О чём раздел В данном разделе описывается Единый Сервис Авторизации HRlink
Получение сертификата открытого ключа ЕСА
Метод
GET https://esa.hr-link.ru/certificate возвращает сертификат ЕСА в формате PEM.
-----BEGIN CERTIFICATE-----
MIIFmDCCA4CgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwgYExCzAJBgNVBAYTAkdC
...
...
...
i3mabA2lEfMRvBS6P0DIJAtehulZMbchk0UJoLm4jNWip0aGC8mTtxJ9n/Y=
-----END CERTIFICATE-----
Тип содержимого ответа - text/html.
Создание мастер-токена
Используется для получения мастер-токена Интегратором (см. процесс 2. Использование мастер-токена для интеграции с HR-Link).
Метод
POST https://esa.hr-link.ru/api/v1/masterTokens
Content-Type: application/json
{
"tenantHost": "<host>"
}
Где <host>
- хост тенанта Интегратора в HR-Link, для которого нужно выпустить мастер-токен. Обязательное поле.
Заголовки:
Authorization: Bearer <token> |
Где <token>
- это Bearer-токен типа JWT, созданный Интегратором на основании данных, полученных при регистрации.
Подробнее см. Получение мастер-токена.
Валидации:
- В HTTP-запросе есть заголовок для аутентификации запроса.
- В заголовке для аутентификации запроса содержится Bearer-токен типа JWT.
- JWT-токен содержит все обязательные данные (см. Получение мастер-токена).
- Существует интегратор с ID, равным Subject токена.
- У интегратора существует сертификат открытого ключа.
- JWT-токен подписан алгоритмом RSA с использованием закрытого ключа, соответствующего сертификату открытого ключа интегратора.
- Токен можно использовать в данный момент времени.
- Поля токена сформированы корректно согласно требованиям (см. Получение мастер-токена).
Ответ:
{
"result": true,
"masterToken": "<token>"
}
Где <token>
- это мастер-токен типа JWT, созданный ЕСА для тенанта Интегратора.
Подробнее см. Получение мастер-токена и Использование мастер-токена.
Редирект со сквозной аутентификацией
Метод принимает на вход jwt-токен аутентификации пользователя, сгенерированный интегратором. Производит аутентификацию данного запроса, и в случае успешной аутентификации, делает редирект пользователя в систему HR-Link.
Метод
GET https://esa.hr-link.ru/redirect?code={{jwt-token}}&path={{url-encoded-path-value}}&type=PASS_THROUGH_AUTH
Параметры запроса
- code - в данном параметре должен быть передан сформированный по правилам описанным в пункте 2 jwt-токен
- path - в данном параметре должны быть передан путь в системе HR-Link, куда должен попасть пользователь.
- Например, это может быть страница реестра документов, реестра заявлений, страница какого-то конкретного документа, страница какого-то конкретного заявления и т.д.
- Значение должно быть в кодировке URL encoding, чтобы символы пути можно было безопасно использовать в качестве значения query-параметра. В значение пути не должен входить хост!
- Пример значения для перехода на страницу документа сотрудника (не в URL encoding):
/employee/documents/1df91be9-cbda-459a-948b-e2b8884e5347
- type - имеет константное значение PASS_THROUGH_AUTH. Данный тип редиректа указывает на то, что выполняется сквозная аутентификация пользователя, которая позволяет пользователю переходить из внешних систем без необходимости вводить логин/пароль для работы в HR-Link.
Формирование токена для сквозной аутентификации
Для использования метода сквозной аутентификации интегратору необходимо сформировать специальный jwt-токен который будет передан в параметре code
Тип токена: JWT.
Поля заголовка (header) токена:
- alg - Алгоритм подписи токена: RS256 или RS384 или RS512. Токен подписан ключом, соответствующим сертификату Интегратора, который был предоставлен Интегратором при регистрации.
Поля тела (payload) токена:
- iss - Issuer - Издатель jwt-токена. Значение должно быть предоставлено Интегратором при регистрации.
- Тип: string.
- Формат: строка.
- Обязательное: Да
- sub - Subject - ID Интегратора в ЕСА, который был получен Интегратором после регистрации.
- Тип: string.
- Формат: UUID.
- Обязательное: Да
- aud - Audience - Хост ЕСА, равный esa.hr-link.ru.
- Тип: string.
- Формат: строка.
- Обязательное: Да
- thn - Tenant Host Name - Хост тенанта, на который необходимо направить пользователя. Необязательный параметр, если ЕСА сам в состоянии определить в какой тенант нужно направить пользователя.
- Тип: string.
- Формат: строка.
- Обязательное: Нет
- exp - Expiration Time - Момент времени, когда истекает время действия токена.
- Тип: number.
- Формат: Unix Time, количество секунд.
- Обязательное: Да
- nbf - Not Before - Момент времени, когда начинается время действия токена.
- Тип: number.
- Формат: Unix Time, количество секунд.
- Обязательное: Да
- iat - Issued at - Момент времени, когда токен был выдан.
- Тип: number.
- Формат: Unix Time, количество секунд.
- Обязательное: Да
- uid - User Id - значение идентификатора пользователя.
- Тип: string
- Формат: строка или UUID
- Обязательное: Да
- uit - User Id Type - тип идентификатора пользователя: должно принимать одно из следующих значений:
- Тип: string.
- Формат: строка.
- Обязательное: Да
- Возможные значения:
- HR_LINK_ID - значение в uid - User Id воспринимается как ID пользователя внутри HR-Link.
- SNILS - значение в uid - User Id воспринимается как СНИЛС физлица пользователя.
- EXTERNAL_ID - значение в uid - User Id воспринимается как значение ID пользователя во внешней системе. Поиск пользователя по ID из внешней системы может происходить по-разному, в зависимости от наличия и значения поля est - External System Type.
- Если est - External System Type не задан или пустой, то выполняется поиск по ID пользователя клиента во внешней системе, указанному при создании физлица в поле externalId (см. Метод создания физлица).
- Если est - External System Type задан, то выполняется поиск по ID пользователя во внешней системе с заданным типом, указанных при создании физлица в массиве userExternalIds в одном из объектов в полях systemType и value соответственно (см. Метод создания физлица).
- Если тип не задан, то значение по умолчанию считается HR_LINK_ID.
- est - External System Type - тип внешней системы, для которой предоставлен идентификатор пользователя.
- Тип: string.
- Формат: строка.
- Обязательное: нет
- Учитывается, если тип ID пользователя uit - User Id Type, из-под которого выполняется запрос, указан как EXTERNAL_ID.
- При задании поиск пользователя будет осуществляться по парам значений ID пользователя во внешней системе и типа системы, переданных в массиве userExternalIds при создании физлица.
Поля uid, uit и est необходимы для идентификации пользователя в системе HR-Link.
Время жизни Bearer-токена (exp - nbf) не должно превышать 10 минут. Если требуется изменить это ограничение, обратитесь в службу заботы о клиентах HR-Link.
Пример полей заголовка (header) токена:
{
"alg": "RS256" | "RS384" | "RS512"
}
Пример полей тела (payload) токена:
{
"iss": "Apple",
"sub": "0e7a2d3d-db57-4392-84eb-15083790187d",
"aud": "esa.hr-link.ru",
"tnh": "some.tenant.com",
"uid": "041eded5-e08e-49d9-8161-e77005322ac3",
"uit": "HR_LINK_ID",
"exp": 1650000600,
"nbf": 1650000000,
"iat": 1650000000
}
Пример сформированного jwt-токена:
eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJBcHBsZSIsInN1YiI6IjBlN2EyZDNkLWRiNTctNDM5Mi04NGViLTE1MDgzNzkwMTg3ZCIsImF1ZCI6ImVzYS5oci1saW5rLnJ1IiwidG5oIjoic29tZS50ZW5hbnQuY29tIiwidWlkIjoiMDQxZWRlZDUtZTA4ZS00OWQ5LTgxNjEtZTc3MDA1MzIyYWMzIiwidWl0IjoiSFJfTElOS19JRCIsImV4cCI6MTY1MDAwMDYwMCwibmJmIjoxNjUwMDAwMDAwLCJpYXQiOjE2NTAwMDAwMDB9.rqiGJbX_R0e7DeoLGFwNaxmdoOgAp0h6ot3wXAmrVlBUwAT0WqceLSSVC0p3McCjNqIuxGuRCUsUvsS-7c0hjhlFYRU-6ywm8uh3qMpUhIJqFXbdpjz3G2IMzdTj3UGLz4xFrn-1lhUNNXiEM5xlpkA188Bb6qoTDp-TL1R-A0Qs5Ma-ZawjB3jq_TOXud2LT_-0iH5E4i405DgtkB56VodVkFfPSUNVbN9azfDngymiWbB4-fi57gVVLS6t2wwYOQums8I1MfbdXlkTIQID-XrVvd3MEU-7o5dJNKPIb3M4E_w29qLReNe9MZjHPl5V-675u16X3GCzIAdH6DQ9Fw
При обращении к API будут произведены проверки аутентификации и валидации. Если какая-либо из проверок не была пройдена, будет возвращена формализованная ошибка (см. Ошибочные ответы от API).
Аутентификации метода:
- Параметр code задан (51.215)
- Параметр code является JWT-токеном (51.202)
- Алгоритм подписи токена поддерживается системой (51.214)
- Заданы обязательные поля токена (51.206)
- Интегратор был зарегистрирован и для него существуют все необходимые настройки (51.250, 51.251)
- Токен должен был подписан сертификатом, привязанным к интегратору (51.207)
Валидации метода:
- Параметр path задан 51.215
- Параметр type задан и является PASS_THROUGH_AUTH (51.154)
- Поле uit задано (51.206)
- Поле uit имеет одно из допустимых значений HR_LINK_ID, EXTERNAL_ID, SNILS (51.211)
- Поле uid соответствует формату UUID или строке (51.206)
- Поля uid, uit и est (если указано) заданы корректно, в соответствии с возможными принимаемыми значениями (см описание возможных значениий ссылка)
- Если указано значение thn, тенант с таким хостом существует (51.300)
- Интегратор имеет право работать с заданным тенантом (51.253)
Результаты работы метода:
При успешном прохождении проверок аутентификации и валидаций, пользователь будет аутентифицирован в системе HR-Link и направлен на страницу, путь которой был указан в параметре path.
Поиск документации