Подразделы Moneta ID
Идентификация с помощью Moneta ID
Сервис Moneta ID предназначен для выполнения упрощенной или полной идентификации клиентов через внешних провайдеров, например сотовых операторов (МТС, Beeline, Тинькофф). До начала работы с сервисом Moneta ID должны быть выполнены условия:
- заключен договор ИТВ с НКО МОНЕТА
- созданы личные кабинеты в системе
Схема взаимодействия
Процесс взаимодействия между партнером и Moneta ID определяется следующими шагами:
- Приложение партнера формирует и подписывает запрос, для которого нужно провести идентификацию.
- Приложение партнера перенаправляет браузер клиента (пользователя ЭСП МОНЕТА.РУ) на специальный адрес, передав токен безопасности.
- Moneta ID запрашивает у клиента партнера (пользователя ЭСП МОНЕТА.РУ) информацию, необходимую для проведения идентификации.
- Moneta ID проводит процедуру идентификации.
- Moneta ID уведомляет приложение партнера о ходе идентификации.
- Moneta ID возвращает клиента (пользователя ЭСП МОНЕТА.РУ) в приложение партнера.
Стенды
Тестовый контур
Для отладки взаимодействия и тестирования в настоящее время доступны следующие окружения:
API | Тег | Описание |
---|---|---|
https://mid.demo.moneta.ru/ | Demo | Демо тестовый стенд |
Под кнопкой “Пройти идентификацию” партнер передает стартовый URL для перенаправления клиентов.
Параметры unitid, phone, cnonce, signature должны вычисляться автоматически на стороне партнера.
cnonce - ограничения на диапазон min = 6, max = 32 знака.
Пример стартового URL:
https://<API-root>/identification?subscriberId=<subscriberId>&unitId=<unitId>&phone=<phone>&cnonce=<cnonce>&signature=<signature>
DEMO-режим
Данный режим предполагает подключение и работу с сервисом через https://demo.moneta.ru/login.htm Для получения доступов в личные кабинеты demo.moneta.ru необходимо обратиться на адрес mp@payanyway.ru
Для отладки прохождения упрощенной идентификации в демонстрационном режиме, можно использовать любые персональные данные клиента. Чтобы протестировать изменение статуса необходимо задать одну из “тестовых” фамилий:
- “Иванов” - УПРИД будет пройден успешно.
- “Петров” - УПРИД будет всегда отдавать статус “В процессе”.
- “Попов” - УПРИД всегда будет завершаться неудачно.
- “Медведев” - при использовании этой фамилии будет осуществлен переход на окно ввода ИНН\СНИЛС При указании ИНН
- “399474507659” - УПРИД будет пройден успешно.
- “526317984689” - УПРИД всегда будет завершаться неудачно.
Регистрация партнера
Партнеру необходимо предоставить следующие данные на адрес mp@payanyway.ru:
Обязательная информация:
- Полное и короткое наименование проекта.
- URL для отправки уведомлений о статусе прохождения идентификации (statusURL).
- URL для отправки уведомлений о проблемах в работе виджета (notifyURL).
Со стороны Moneta ID будет предоставлена следующая информация:
- apiSecret - Код проверки целостности данных. Код, обеспечивающий идентификацию отправителя и возможность проверки целостности данных, известный только системе MonetaID и партнеру. Код будет направлен на адрес электронной почты от Личного кабинета партнера, указанного в Договоре.
- subscribeURL - Специальная ссылка для установления доверия.
Установление доверия
Для проведения идентификации Пользователей ЭСП МОНЕТА.РУ с помощью сервиса Moneta ID необходимо пройти процедуру установления доверия с сервисом. Партнеру необходимо:
- Войти в Личный кабинет партнера с Пользователями ЭСП МОНЕТА.РУ на www.moneta.ru (или demo.moneta.ru для демо контура).
- Перейти по ссылке, которую предоставил сервис Moneta ID.
- В появившемся диалоговом окне ознакомиться с информацией о том, какие разрешения партнер предоставит сервису Moneta ID.
- Подтвердить предоставление разрешений:
Перечень действий с юнитами/профилями Пользователей ЭСП МОНЕТА.РУ, которые партнер может предоставить сервису Moneta ID:
GetProfileInfo
FindProfileDocumentFiles
FindProfileDocuments
EditProfileDocument
EditProfile
ApprovePhoneSendConfirmation
ApprovePhoneApplyCode
SimplifiedIdentification
Аутентификация
Предварительные условия
- Необходимо пройти процедуру регистрации партнера и получить ApiSecret.
- Необходимо установить доверительные отношения с сервисом Moneta ID.
Формирование токена и подписи
Для обновления информации в профиле Пользователя ЭСП МОНЕТА.РУ сервисом Moneta ID партнер должен сформировать специальный одноразовый токен.
Для реализации алгоритма формирования единовременного токена использованы следующие стандарты:
- RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.
- RFC 2104 HMAC: Keyed-Hashing for Message Authentication.
Токен состоит из 2-х частей:
- Информационное сообщение, содержащее ключевую информацию о партнере и Пользователе ЭСП МОНЕТА.РУ, служебную информацию.
- Подпись/Хеш от информационного сообщения из п.1., и использование заранее полученного общего секрета - ApiSecret.
Формирование информационного сообщения (стартовый URL)
Информационное сообщение состоит из набора ключ-значение, которые закодированы в соответствии с правилами URL-кодирования строк по RFC 3986. Ниже приведен набор обязательных параметров, которые необходимо указать при формировании информационного сообщения (ключи должны следовать в отсортированном порядке, как в таблице ниже):
Ключ | Обязательноеполе | Описание | Тип | Пример |
---|---|---|---|---|
subscriberId | Да | Идентификатор партнера в системе Moneta ID | Строка | site.ru |
unitId | Да | Идентификатор пользователя ЭСП МОНЕТА.РУ, для которого необходимо провести идентификацию. | Число | 11111 |
phone | Да | Сотовый телефон. Сотовый телефон в личном кабинете пользователя должен быть “подтвержден”. | Число | 9001234567 |
cnonce | Да | Одноразовый код, выбранный случайным или псевдослучайным образом, использующееся для невозможности повторного использования одного и того же токена | Строка | dlt5Tvv3TPHcT |
successURL | URL страницы партнера, куда должен попасть пользователь, если идентификация проведена успешно | URL | ||
returnURL | URL страницы партнера, куда должен вернуться пользователь при закрытии виджета | URL | ||
failURL | URL страницы партнера, куда должен попасть покупатель, если идентификация не была проведена | URL | ||
inprogressURL | URL страницы партнера, куда должен попасть пользователь после успешного запроса на идентификацию, до получения ответа о статусе запроса на идентификацию | URL | ||
signature | Да | Код для идентификации отправителя и проверки целостности данных. Кодирование ключа производится путем конкатенации в одну строку значений параметров запроса и кода проверки целостности данных, кодированием по алгоритму HMAC-SHA512 и представлением массива байт в виде строки шестнадцатеричных чисел |
Формирование подписи
После того, как информационное сообщение сформировано, необходимо вычислить подпись/хеш с использованием общего секрета - ApiSecret.
Кодирование ключа производится путем конкатенации в одну строку значений параметров запроса и кода проверки целостности данных, кодированием по алгоритму HMAC-SHA512 и представлением массива байт в виде строки шестнадцатеричных чисел:
Алгоритм формирования:
- Вычислить HMAC-SHA512 хеш используя пару (информационное сообщение, секрет).
- Полученный массив байт перевести в строку в шестнадцатеричном представлении.
// message - значениия параметров запроса
// secret - секрет/apiSecret
message = subscriberId + unitId + phone + cnonce + successURL + returnURL + failURL + inprogressURL
signatureBytes = hmac_sha512(message, secret)
signatureString = bytesToHex(signatureBytes)
После того, как подпись в виде hex-строки сформирована, необходимо добавить ее к параметрам запроса с ключом signature. Пример итогового информационного сообщения (стартовый URL) :
subscriberId=testSubscriber&unitId=1000&phone=9001234567&cnonce=ygfhkJIBiT3kxjq5P74Tc00Ry6nkC5kK&signature=cf1299778ba5b9310bd2cd42747a43fb79ce72aad16a22704e633900c6dbc9e9a4b61afe53c3fec27c600ef5625a0423b75cc4d96ecaf2890b1dff8db36d4d03
subscriberId=testSubscriber&unitId=1000&phone=9001234567&cnonce=ygfhkJIBiT3kxjq5P74Tc00Ry6nkC5kK&signature=cf1299778ba5b9310bd2cd42747a43fb79ce72aad16a22704e633900c6dbc9e9a4b61afe53c3fec27c600ef5625a0423b75cc4d96ecaf2890b1dff8db36d4d03
Финальным шагом необходимо использовать полученные параметры при перенаправлении на виджет идентификации.
// БРАУЗЕР КЛИЕНТА
// делаем редирект в браузере клиента на указанный адрес
// DEV окружение
https://mid.demo.moneta.ru/identification?{параметры запроса}
// PROD окружение
https://mid.moneta.ru/identification?{параметры запроса}
Уведомление о статусе идентификации
Результат идентификации будет передан на указанный партнером при регистрации URL в виде GET запроса с query параметрами.
Список передаваемых партнеру параметров:
Ключ | Тип | Описание | Пример |
---|---|---|---|
type | string | тип уведомления: IDENTIFICATION | type=IDENTIFICATION |
unitId | number | идентификатор юзера в монете, который проходил проверку. | unitId=10050 |
status | string | статус прохождения УПРИД: SUCCEEDED | status=SUCCEEDED |
signature | string | подпись всех переданных параметров. | signature=1d9…db6 |
Проверка signature
Подпись всех переданных параметров реализован через механизм аналогичный механизму формирования подписи от партнера.
Таким образом партнер может убедиться в достоверности вызова, сделав проверку:
hmac_sha512(params, secret) == signature
Где params - это значения параметров запроса.
Код ответа на запрос с уведомлением о статусе идентификации
Для того чтобы сообщить сервису Moneta ID, что партнер получил информацию о статусе идентификации, скрипт партнера (statusURL) должен дать ответ с http-кодом 200.
Попытки отправки уведомления будут повторены:
- Если сервис Moneta ID не смог получить ответ от обработчика.
- Если сервер партнера был недоступен.