Отправим материал вам на:
Сегодня мы расскажем как сделать двухфакторную авторизацию (2FA) на Java
Пользователь находится на сайте / мобильном приложении и вы хотите, чтобы он подтвердил свой номер телефона при регистрации/авторизации, подтверждение операции оплаты и прочее.
После нажатия на “получить смс” пользователь получит сообщение вида CODE20.
Где CODE20 — это строка от 1 до 16 символов, состоящая из букв, цифр или букв и цифр одновременно.
Итак, пользователь нажал “получить смс”.
Вы отправляете запрос на SMS.BY — sendSmsWithCode()
Данный вызов API вернет вам код сообщения “CODE20” и этот же код будет отправлен пользователю.
Пользователь вводит код и вы проверяете, что код совпадает, и если все ОК — то пропускаете пользователя дальше.
Теперь подробнее с примерами кода
Для начала давайте распишем алгоритм:
- Создать объект класса SMS_BY
- Указать токен
- Настроить PasswordObject
- Получить ID PasswordObject
- Вызвать метод sendSmsWithCode
- Сравнить вводимый код от пользователя с тем, который вернут метод sendSmsWithCode
Качаем исходники отсюда
Двухфакторная авторизация работает следующим образом.
Вы настраиваете длину и конфигурацию пароля, после этого у вас будет ID.
Далее по этому ID вы отправляете смс и в ответ вам приходит код, который отправляется пользователю.
В нашей системе такая настройка реализуется через PasswordObject.
PasswordObject — это настройки, которые вы можете использовать в двухфактороной верификации.
Например вам надо, чтобы пароль состоял только из только букв или только цифр или и то и другое, с длиной пароля в 5 символов.
Создание таких настроек выглядит следующим образом:
1 | // настройка длины пароля при двухфакторной авторизации с длиной пароля в 5 символов. createPasswordObject(SMS_BY.PASS_TYPE_LETTERS, 5) ; // только буквы латиницы createPasswordObject(SMS_BY.PASS_TYPE_NUMBERS, 5) ; // только цифры createPasswordObject(SMS_BY.PASS_TYPE_BOTH, 5) ; // и буквы и цифры |
Чтобы отправить смс с кодом нужно сделать вызов:
1 | oStart.sendSmsMessageWithCode("Ваш пароль: %CODE%", "245", phone,alphaname_id ); "Ваш пароль: %CODE%" - текст сообщения, <b>%CODE%</b> - обязательный параметр, вместо %CODE% будет подставлен< сгененированный пароль для получателя. "245" - это ID PasswordObject созданный ранее phone - номер телефона alphaname_id - ID Альфа-имени, если Альфа-имени пока нет, нужно передавать 0 sendSmsMessageWithCode вернет: {"status":"ok","parts":1,"len":21,"sms_id":2208471,"code":"GAYXILYZOX"} |
Из этого сообщения вам надо получить код, который будет вводить пользователь на форме двухфакторной авторизации:
1 | code = GAYXILYZOX |
Пример кода:
1 |