Аутентификация
Общая информация
Для обновления информации в профиле Пользователя ЭСП МОНЕТА.РУ сервисом MonetaId маркетплейс должен сформировать специальный одноразовый токен.
Формирование токена и подписи
Предварительные условия:
Необходимо пройти процедуру регистрации маркетплейса и получить
ApiKey
иApiSecret
.Необходимо установить доверительные отношения с сервисом MonetaId.
Для реализации алгоритма формирования единовременного токена использованы следующие стандарты:
RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.
RFC 2104 HMAC: Keyed-Hashing for Message Authentication.
RFC 4648 The Base16, Base32, and Base64 Data Encodings.
Токен состоит из 2-х частей:
Информационное сообщение, содержащее ключевую информацию о маркетплейсе и Пользователе ЭСП МОНЕТА.РУ, служебную информацию.
Подпись/Хеш от информационного сообщения из п.1., и использование заранее полученного общего секрета -
ApiSecret
.
Формирование информационного сообщения
Информационное сообщение состоит из набора ключ-значение, которые закодированы в соответствии с правилами URL-кодирования строк по RFC 3986. Пример:
Ниже приведен набор обязательных параметров, которые необходимо указать при формировании информационного сообщения (ключи должны следовать в отсортированном порядке, как в таблице ниже):
Ключ | Описание | Тип | Пример |
callbackUrlOverride | Опциональный параметр для дев окружения: Возможность задать тестовый callback урл, отличный от того, что задан партнеру при регистрации. | Url Encoded String | http%3A%2F%2Fya.ru |
key | ApiKey полученный при регистрации в MonetaId | Url Encoded String | site-x |
mode | Требуемый тип идентификации (any, simple, full): any - можно проводить уприд и мобильное id full - только мобильное id simple - только уприд | Url Encoded String | any |
nonce | Число, использующееся для невозможности повторного использования одного и того же токена (см. ниже) | Число | 10201010 |
unitId | Идентификатор профиля/юнита в НКО "Монета", для которого необходимо провести идентификацию. | Число | 100500 |
userEmail | E-mail Пользователя в системе маркетплейса для оповещения о статусе идентификации | Url Encoded Email | john%40acme.com |
При формировании nonce
удобно использовать текущее время в секундах на момент формирования токена. Каждый новый nonce
в новом токене, формирующийся для данного unitId
должен быть строго больше предыдущего для данного юнита (т.е. nonce должен строго монотонно возрастать), иначе он будет отброшен как некорректный.
Пример итогового информационного сообщения:
Формирование подписи
После того, как информационное сообщение сформировано, необходимо вычислить подпись/хеш с использованием общего секрета - ApiSecret
.
Алгоритм формирования:
Вычислить HMAC-SHA512 хеш используя пару (информационное сообщение, секрет).
Полученный массив байт перевести в строку в шестнадцатеричном представлении.
После того, как подпись в виде hex-строки сформирована, необходимо добавить ее к информационному сообщению с ключом signature:
key=partner123&nonce=1601375468244&unitId=544&userEmail=pertov@acme.com&signature=7d7b968768f664bcdbd67bbd4e3f59347b300226734ade68bed660ab7794522fe0e3e66ecdb211f746dae1c44681a306ee221f8706c63195607e525e979360
Финальным шагом необходимо полученную строку (информационное сообщение + подпись) закодировать при помощи base64, использовать при перенаправлении на виджет идентификации.
Last updated