Предлагаем простой API метод для авторизации номеров телефонным звонком.
Зачем нужно?
Телефонный номер остается одним из самых простых и надежных идентификаторов клиента.
Авторизация по номеру телефона используют сервисы с целью:
- Двухфакторной аутентификации
- Регистрации
- Восстановления пароля
Как выше писали, авторизация по СМС часто не совершенна и слишком дорога. Регистрация или двухфакторная авторизация по звонку на телефонный номер сегодня — оптимальный способ подтверждения личности.
Как работает?
- Ваш клиент вводит номер телефона в форме на сайте
- Вы генерируете числовой код и отправляете API запрос
- Робот звонит клиенту и произносит цифры
- Клиент вводит цифры в форме на сайте, тем самым подтверждая номер
Как видим все предельно просто, все что вам нужно это сгеренировать случайный код и отправить вызов через API.
Как реализовать
В открытом API Zadarma есть метод request_checknumber.
Его параметры:
- caller_id — номер, с которого совершается звонок, должен быть номером, подключенным в Zadarma;
- to — номер телефона клиента, которому звонит робот;
- code — код, который будет воспроизводиться. Набор цифр задаете вы, а воспроизводит голосовой робот, максимальная длина кода — 20 символов;
- lang — язык начитки кода. Доступные языки — русский, английский, испанский, польский, немецкий, французский, украинский.
Вы просто генерируете код, отправляете API запрос и ждете пока клиент введет этот код у вас на сайте.
Что требуется, чтобы начать?
Несколько простых шагов для того, чтобы использовать авторизацию по номеру телефона в своём сервисе:
- Регистрируетесь
- Подключаете виртуальный номер в сервисе (обязательное условие, звонки вашим клиентам должны проходить с телефонного номера, подключенного в Zadarma)
- В личном кабинете создаете ключ авторизации API, начинаете работать с методом
Для удобства работы с API Zadarma, рекомендуем использовать официальную библиотеку (php, python и C#). После установки задаете ваши ключи API в подключаемых файлах.
Вот пример запроса с использованием клиента на языке PHP:
<?php
use Zadarma_API\Api;
require_once __DIR__.DIRECTORY_SEPARATOR.'include.php';
define('USE_SANDBOX', false);
$api = new Api(KEY, SECRET, USE_SANDBOX);
$api->call('/v1/request/checknumber/', [
"caller_id" => "74990000000",
"to" => "79170000000",
"code" => "12345",
"lang" => "ru"
]);
А вот успешный ответ на данный запрос:
{
"status":"success",
"from":74990000000,
"to":79170000000,
"lang":"ru",
"time":1612779278
}
Стоимость
Интерфейс API Zadarma бесплатный. Для подтверждения номеров оплачивается исходящий звонок (посекундно) и аренда номера для совершения вызовов (1 раз в месяц). Для примера, исходящий звонок с произнесением кода на российский мобильный будет стоить около 30 копеек (примерно 15 секунд). А аренда номера в Москве обойдется в 120 рублей (код 499). В пакетных тарифах звонки еще дешевле, а виртуальный номер уже включен в пакет.
Aquahawk
В этот момент аутентификация из двухфакторной превратилась в однофакторную
IgorDimitrov
Можно email и телефон проверить при восстановлении пароля.
keydon2
Даже еще раньше — с тех пор как атаки на ss7 (или подкуп работника оператора для перевыпуска симки) стали доступными.
В современном мире априори нужно считать что любые ваши смс и звонки могут быть приняты (и совершены) любым заинтересованным лицом и полагаться на них не стоит и даже вредно (тк создает иллюзию защищенности и вынуждает пользоваться телефоном).
Aquahawk
А какие альтернативы? Пуши? Они не имеют никаких логов и доказательно базы, в отличие от смс, как минимум факты передачи которых хранятся у оператора, и доказать неуведомление возможно.
ebragim
Программы генерации кодов, например. В случае паранойи — установка такой программы на устройство без выхода в интернет.
Aquahawk
Да, но есть одна проблема. В РФ я нашёл только один банк который так умеет, и тот на Дальнем Востоке. Почему-то все крупные банки резко и массово убрали услугу «криптокалькулятор» или хардварные токены для входа в онлайн банк.
IgorDimitrov
Думаю просто потому что это сложно (хранение/дистрибуция, обучение клиентов, поддержка так как чаще тупят/теряют и т.д.).
Никто не предлагает авторизацию по номеру как панацею от всех бед, но часто она подходит по за счет сочетания простоты, массовости и результата.
ebragim
Скорее всего, это из-за требований законодательства "однозначно идентифицировать пользователя". При отправке смс считается, что получает его конкретное лицо с конкретными паспортными данными, а при генерации кода приложение могло быть у кого угодно.
И нет, генераторы кодов не пропали, например у меня в Авангарде прямо в карточку встроен "калькулятор", куда ввожу код запроса, пароль, он генерит на основании этого код ответа для ввода на сайт.
От другого банка был отдельный калькулятор, куда вставлялась карта, и её чип использовался для генерации пароля. Де-юре он "китайский банк", но счёт в российском офисе открыли без проблем. Но тут уже я сам отказался, эта штука габаритная, не удобно.
Самых хреновый токен был у мастербанка. Просто брелок без защиты с одной кнопкой. Нажимаешь — генерируется код. Эта хрень не работала больше пары месяцев, потом почему-то коды переставали приниматься банком, приходилось к ним ехать и получать новый.