Результаты поиска
    Ничего не найдено
    Оглавление
    Moneta ID

    Moneta ID

    Идентификация с помощью Moneta ID
    Настройка идентификации через внешних провайдеров

    Подразделы Moneta ID

    Идентификация с помощью Moneta ID

    Сервис Moneta ID предназначен для выполнения упрощенной или полной идентификации клиентов через внешних провайдеров, например сотовых операторов (МТС, Beeline, Тинькофф). До начала работы с сервисом Moneta ID должны быть выполнены условия:

    Схема взаимодействия

    Процесс взаимодействия между партнером и Moneta ID определяется следующими шагами:

    1. Приложение партнера формирует и подписывает запрос, для которого нужно провести идентификацию.
    2. Приложение партнера перенаправляет браузер клиента (пользователя ЭСП МОНЕТА.РУ) на специальный адрес, передав токен безопасности.
    3. Moneta ID запрашивает у клиента партнера (пользователя ЭСП МОНЕТА.РУ) информацию, необходимую для проведения идентификации.
    4. Moneta ID проводит процедуру идентификации.
    5. Moneta ID уведомляет приложение партнера о ходе идентификации.
    6. 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

    Для отладки прохождения упрощенной идентификации в демонстрационном режиме, можно использовать любые персональные данные клиента. Чтобы протестировать изменение статуса необходимо задать одну из “тестовых” фамилий:

    1. “Иванов” - УПРИД будет пройден успешно.
    2. “Петров” - УПРИД будет всегда отдавать статус “В процессе”.
    3. “Попов” - УПРИД всегда будет завершаться неудачно.
    4. “Медведев” - при использовании этой фамилии будет осуществлен переход на окно ввода ИНН\СНИЛС При указании ИНН
    5. “399474507659” - УПРИД будет пройден успешно.
    6. “526317984689” - УПРИД всегда будет завершаться неудачно.

    Регистрация партнера

    Партнеру необходимо предоставить следующие данные на адрес mp@payanyway.ru:

    Обязательная информация:

    1. Полное и короткое наименование проекта.
    2. URL для отправки уведомлений о статусе прохождения идентификации (statusURL).
    3. URL для отправки уведомлений о проблемах в работе виджета (notifyURL).

    Со стороны Moneta ID будет предоставлена следующая информация:

    • apiSecret - Код проверки целостности данных. Код, обеспечивающий идентификацию отправителя и возможность проверки целостности данных, известный только системе MonetaID и партнеру. Код будет направлен на адрес электронной почты от Личного кабинета партнера, указанного в Договоре.
    • subscribeURL - Специальная ссылка для установления доверия.

    Установление доверия

    Для проведения идентификации Пользователей ЭСП МОНЕТА.РУ с помощью сервиса Moneta ID необходимо пройти процедуру установления доверия с сервисом. Партнеру необходимо:

    1. Войти в Личный кабинет партнера с Пользователями ЭСП МОНЕТА.РУ на www.moneta.ru (или demo.moneta.ru для демо контура).
    2. Перейти по ссылке, которую предоставил сервис Moneta ID.
      Форма предоставления доступа Форма предоставления доступа
    3. В появившемся диалоговом окне ознакомиться с информацией о том, какие разрешения партнер предоставит сервису Moneta ID.
    4. Подтвердить предоставление разрешений:
      Форма предоставления доступа Форма предоставления доступа

    Перечень действий с юнитами/профилями Пользователей ЭСП МОНЕТА.РУ, которые партнер может предоставить сервису Moneta ID:

    • GetProfileInfo
    • FindProfileDocumentFiles
    • FindProfileDocuments
    • EditProfileDocument
    • EditProfile
    • ApprovePhoneSendConfirmation
    • ApprovePhoneApplyCode
    • SimplifiedIdentification

    Аутентификация

    Предварительные условия

    1. Необходимо пройти процедуру регистрации партнера и получить ApiSecret.
    2. Необходимо установить доверительные отношения с сервисом Moneta ID.

    Формирование токена и подписи

    Для обновления информации в профиле Пользователя ЭСП МОНЕТА.РУ сервисом Moneta ID партнер должен сформировать специальный одноразовый токен.

    Для реализации алгоритма формирования единовременного токена использованы следующие стандарты:

    1. RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.
    2. RFC 2104 HMAC: Keyed-Hashing for Message Authentication.

    Токен состоит из 2-х частей:

    1. Информационное сообщение, содержащее ключевую информацию о партнере и Пользователе ЭСП МОНЕТА.РУ, служебную информацию.
    2. Подпись/Хеш от информационного сообщения из п.1., и использование заранее полученного общего секрета - ApiSecret.

    Формирование информационного сообщения (стартовый URL)

    Информационное сообщение состоит из набора ключ-значение, которые закодированы в соответствии с правилами URL-кодирования строк по RFC 3986. Ниже приведен набор обязательных параметров, которые необходимо указать при формировании информационного сообщения (ключи должны следовать в отсортированном порядке, как в таблице ниже):

    КлючОбязательноеполеОписаниеТипПример
    subscriberIdДаИдентификатор партнера в системе Moneta IDСтрокаsite.ru
    unitIdДаИдентификатор пользователя ЭСП МОНЕТА.РУ, для которого необходимо провести идентификацию.Число11111
    phoneДаСотовый телефон. Сотовый телефон в личном кабинете пользователя должен быть “подтвержден”.Число9001234567
    cnonceДаОдноразовый код, выбранный случайным или псевдослучайным образом, использующееся для невозможности повторного использования одного и того же токенаСтрокаdlt5Tvv3TPHcT
    successURLURL страницы партнера, куда должен попасть пользователь, если идентификация проведена успешноURL
    returnURLURL страницы партнера, куда должен вернуться пользователь при закрытии виджетаURL
    failURLURL страницы партнера, куда должен попасть покупатель, если идентификация не была проведенаURL
    inprogressURLURL страницы партнера, куда должен попасть пользователь после успешного запроса на идентификацию, до получения ответа о статусе запроса на идентификациюURL
    signatureДаКод для идентификации отправителя и проверки целостности данных. Кодирование ключа производится путем конкатенации в одну строку значений параметров запроса и кода проверки целостности данных, кодированием по алгоритму HMAC-SHA512 и представлением массива байт в виде строки шестнадцатеричных чисел

    Формирование подписи

    После того, как информационное сообщение сформировано, необходимо вычислить подпись/хеш с использованием общего секрета - ApiSecret.

    Кодирование ключа производится путем конкатенации в одну строку значений параметров запроса и кода проверки целостности данных, кодированием по алгоритму HMAC-SHA512 и представлением массива байт в виде строки шестнадцатеричных чисел:

    Алгоритм формирования:

    1. Вычислить HMAC-SHA512 хеш используя пару (информационное сообщение, секрет).
    2. Полученный массив байт перевести в строку в шестнадцатеричном представлении.
    // 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 параметрами.

    Список передаваемых партнеру параметров:

    КлючТипОписаниеПример
    typestringтип уведомления: IDENTIFICATIONtype=IDENTIFICATION
    unitIdnumberидентификатор юзера в монете, который проходил проверку.unitId=10050
    statusstringстатус прохождения УПРИД: SUCCEEDEDstatus=SUCCEEDED
    signaturestringподпись всех переданных параметров.signature=1d9…db6

    Проверка signature

    Подпись всех переданных параметров реализован через механизм аналогичный механизму формирования подписи от партнера.

    Таким образом партнер может убедиться в достоверности вызова, сделав проверку:

    hmac_sha512(params, secret) == signature

    Где params - это значения параметров запроса.

    Код ответа на запрос с уведомлением о статусе идентификации

    Для того чтобы сообщить сервису Moneta ID, что партнер получил информацию о статусе идентификации, скрипт партнера (statusURL) должен дать ответ с http-кодом 200.

    Попытки отправки уведомления будут повторены:

    • Если сервис Moneta ID не смог получить ответ от обработчика.
    • Если сервер партнера был недоступен.