Отправим материал вам на:

Сегодня мы расскажем как сделать двухфакторную авторизацию (2FA) на Java

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


После нажатия на “получить смс” пользователь получит сообщение вида CODE20.
Где CODE20 — это строка от 1 до 16 символов, состоящая из букв, цифр или букв и цифр одновременно. 

Итак, пользователь нажал “получить смс”.
Вы отправляете запрос на SMS.BY — sendSmsWithCode()
Данный вызов API вернет вам код сообщения “CODE20” и этот же код будет отправлен пользователю.
Пользователь вводит код и вы проверяете, кто код совпадает, и если все ОК — то пропускаете пользователя дальше.

Теперь подробнее с примерами кода. 

Для начала давайте распишем алгоритм: 

  1. Создать объект класса SMS_BY 
  2. Указать токен 
  3. Настроить PasswordObject 
  4. Получить ID PasswordObject
  5. Вызвать метод sendSmsWithCode
  6. Сравнить вводимый код от пользователя с тем, который вернут метод sendSmsWithCode

Качаем исходники отсюда

Двухфакторная авторизация работает следующим образом.

Вы настраиваете длину и конфигурацию пароля, после этого у вас будет ID.
Далее по этому ID вы отправляете смс и в ответ вам приходит код, который отправляется пользователю.
В нашей системе такая настройка реализуется через PasswordObject.
PasswordObject — это настройки, которые вы можете использовать в двухфактороной верификации.
Например вам надо, чтобы пароль состоял только из только букв или только цифр или и то и другое, с длиной пароля в 5 символов.

Создание таких настроек выглядит следующим образом:

1
2
3
4
5
6
7
// настройка длины пароля при двухфакторной авторизации с длиной пароля в 5 символов.

createPasswordObject(SMS_BY.PASS_TYPE_LETTERS, 5) ; // только буквы латиницы

createPasswordObject(SMS_BY.PASS_TYPE_NUMBERS, 5) ; // только цифры

createPasswordObject(SMS_BY.PASS_TYPE_BOTH, 5) ;    // и буквы и цифры

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
2
3
4
5
6
7
String password_object_id  = oStart.createPasswordObject("both",4);

Integer alphaname_id       = new Integer(0);

str = oStart.sendSmsMessageWithCode ("Ваш пароль: %CODE%", password_object_id,SMS_BY_Sample.phone,alphaname_id  );

SMS_BY_Sample.print(str);
186
(Оценить статью)
Загрузка...

Comments are closed.