Как работает Mobile ID (Мобильный ID)?
- Ввод абонентом его номера телефона; формирование и отправка запроса провайдеру.
- Если номер абонента позволяет принять пуш-запрос, то он его подтверждает или отклоняет. Если пуш-запрос невозможно выполнить, то отправляется SMS с цифровым кодом.
- В случае пуш-запроса на колбэк партнера поступает http-запрос с результатом (подтверждено/отклонено)
- В случае SMS абонент должен ввести полученный код. После ввода кода, как и в случае пуш-запроса, отправляется результат на колбэк партнера.
- В соответствии с полученным результатом система партнера совершает какие-либо действия.
Авторизация Mobile ID через готовый виджет с формой
Как правило, первое (1) действие совершается на сайте партнера.
Чтобы облегчить внедрение на этом этапе мы предлагаем использовать нашу форму ввода номера.
- Для этого надо получить у нас уникальный токен, зависящий от данных:
- логин в нашей системе
- идентификатор партнера
- домен, на котором будет работать форма
- адрес callback url
- И далее разместить в структуре сайта тэг загрузки js-файла по адресу
https://auth.terasms.ru/style/js/mobilid/main.js - Прописать настройки запуска 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"}
