Как работает Mobile ID (Мобильный ID)?

  1. Ввод абонентом его номера телефона; формирование и отправка запроса провайдеру.
  2. Если номер абонента позволяет принять пуш-запрос, то он его подтверждает или отклоняет. Если пуш-запрос невозможно выполнить, то отправляется SMS с цифровым кодом.
    • В случае пуш-запроса на колбэк партнера поступает http-запрос с результатом (подтверждено/отклонено)
    • В случае SMS абонент должен ввести полученный код. После ввода кода, как и в случае пуш-запроса, отправляется результат на колбэк партнера.
  3. В соответствии с полученным результатом система партнера совершает какие-либо действия.

Авторизация Mobile ID через готовый виджет с формой

Как правило, первое (1) действие совершается на сайте партнера.

Чтобы облегчить внедрение на этом этапе мы предлагаем использовать нашу форму ввода номера.


  1. Для этого надо получить у нас уникальный токен, зависящий от данных:
    • логин в нашей системе
    • идентификатор партнера
    • домен, на котором будет работать форма
    • адрес callback url
  2. И далее разместить в структуре сайта тэг загрузки js-файла по адресу https://auth.terasms.ru/style/js/mobilid/main.js
  3. Прописать настройки запуска js с указанием ранее полученного токена. При необходимости можно сразу указать номер абонента, который будет вписан в форму.

Пример внедрения через js скрипт

Пример

<script type="text/javascript" src="https://auth.terasms.ru/style/js/mobilid/main.js"></script> <script> document.addEventListener('TeraSMSReady', () => { TeraSMS.user.token = 'j7brA1ggnubKdh-HWJ23bp1H8jGr7d63nnLC_FOwlzxxPV1IL10rXZuNPVRYQsaQm36Gl_zkO3uQ6YHmlkl3021DIcgkUD1hEdNogXyF8AfiAtCQ1V-Lwo7C1L- OtVVnSiiUcF5AThVNWF_TqyQWjvTWgwE-VDyThYcIe9_jUfA3f8TOLHtYE_Q0p4i1I9sG33P4yqBRt77wiHCiKXR6nGUmfE-JWmny8NwcPcn4k'; TeraSMS.objMobileID.initAuth("79998887766"); }); </script>

Если наш готовый вариант формы по каким-то причинам не подходит, то можно изменить ее внешний вид
Для этого можно отредактировать и вставить в html файл шаблона https://terasms.ru/files/mobileIdTemplates.js (с сохранением идентификаторов тегов)

Реализация обмен данными своими силами.

«Общение» с нашим сервером происходит через вебсокет по адресу wss://ws.terasms.ru:10435?sessionId=…

В каждом запросе есть обязательные параметры:

class = mobID; Значение всегда mobID.

method = checkPhone | checkSMSCode; Более подробно о методах ниже.

deviceID = Уникальный идентификатор устройства/браузера в формате UUID; Идентификатор генерируется 1 раз для каждого устройства/браузера и сохраняется на устройстве/в браузере, например, в хранилище localStorage (используется в JavaScript).

sessionID = Уникальный идентификатор сессии в формате UUID; Идентификатор генерируется для каждой сессии проверки номера. Срок жизни сессии — 5 минут с момента отправки последнего запроса на сервер. Если между запросами прошло более 5-ти минут, то на последний запрос будет выдана ошибка «Время сессии истекло». В этом случае необходимо начать сессию заново, с новым идентификатором.

token = Токен, выданный нами (см. выше)

остальные параметры в зависимости от значения параметра method.

Значения параметра method

checkPhone

Метод инициирует проверку номера.

Номер телефона указывается в параметре msisdn, в международном формате.

При успешном завершении метода будет отправлен ответ вида:

Пример запроса

{ "method":"checkPhone", "result":"success", "notice":"На телефон отправлен push-запрос. Подтвердите его. | На телефон отправлено SMS с кодом. Введите полученный код в нижнее поле.", "showCodeField":true | false, }

При этом, если на телефон был отправлен push-запрос, то значение showCodeField будет равно false. В случае отправки SMS-кода — true. Также, в случае использования push-запроса, будет инициирована отправка данных на колбэк.  

сheckSMSCode

Метод сравнивает код, введенный абонентом с кодом, который был отправлен через SMS.

Код указывается в параметре smsCode.

При успешном завершении метода будет инициирована отправка данных на колбэк.

Формирование Mobile ID запроса через HTTP API

API используется как альтернатива HTML-форме. Например, если надо внедрить проверку номера в приложение. Инициировать проверку номера можно HTTP-запросом по адресу https://auth.terasms.ru/mobileid/checkPhone/json

Данные отправляются методом POST в формате JSON с параметрами:

  • login = логин в системе terasms.ru.
  • password = пароль; необязательный параметр. Для повышения безопасности рекомендуется вместо пароля использовать подпись (параметр sign).
  • target = номер абонента.
  • sessionId = идентификатор сессии в формате UUID, генерируется клиентом для каждого нового запроса.
  • callbackURL = адрес приемника результата проверки номера.
  • sign = строка, подпись запроса; необязательный параметр, используется вместо значения пароля. Более подробно про авторизацию и формирование подписи можно прочитать в документации по адресу https://terasms.ru/api-http-authorization.html

    Ответ сервера

  • При неудачной авторизации (некорректный логин/пароль/подпись) будет возвращена строка «-1».
  • В случае успешной инициации проверки номера ответом будет JSON-структура {"result":"success","id":"123"}
  • , где параметр id имеет значение уникального идентификатора запроса.
  • В случае ошибки при инициации ответом будет JSON-структура {"result":"error","description":"error description"}