RESTful Специфичная для устройства аутентификация телефонного номера - PullRequest
0 голосов
/ 21 мая 2018

У нас есть API, который отправляет код подтверждения на номер мобильного телефона пользователя.API:

POST /api/users/verification/start/
{
  "mobile": "9849735434"
}

Приведенный выше API возвращает следующий ответ:

{
  "isVerified": false
}

Если ответ «isVerified»: true, мы не отправляем код подтверждения на мобильный телефон пользователя.,Если оно ложно, мы отправляем код.

В настоящее время все это работает только на номер мобильного телефона.Мы хотим сделать это на основе (мобильное устройство + устройство), чтобы сделать его более безопасным.

Для достижения этой цели мы сохраняем идентификационный файл cookie на клиентском компьютере и планируем идентифицировать устройство на основе этого.Как следует изменить API для этого нового требования?Несколько подходов:

  1. Создание другого API, который работает на основе (mobile + cookie) и отправляет isVerified: true, только если оба соответствуют значению, хранящемуся в нашей базе данных.
  2. Изменить существующийAPI для достижения этой цели - поскольку такая поддержка OTP для конкретного устройства не требуется всегда, нам нужно будет передать некоторый флаг, чтобы сделать его мобильным ИЛИ (mobile и cookie).

Как следуетмы разрабатываем такой API для проверки пользователей на основе мобильных устройств и устройств?

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Надеюсь, это поможет вам, вы можете изменить код и выполнить некоторые шаги клиента и сервера.

СТОРОНА КЛИЕНТА

Шаг 1.

СТОРОНА СЕРВЕРА

Шаг 2.

  • Получить Подтвердить, является ли этот мобильный номер действительным https://github.com/googlei18n/libphonenumber (мы можем сделать это и со стороны Клиента)

Шаг 3.

  • Создать OTP между 0001 - 9999 или более
  • Отправка вызова OTP api для отправки на мобильный номер согласно API поставщика услуг OTP.
  • Сохранение номера OTP в базе данных вместе с номером мобильного телефона и UUID.

СТОРОНА КЛИЕНТА

Шаг 4.

  • получить номер мобильного телефона и OTP и нажать api
  • проверить OTP из БД, тот же OTP, а затем успешно ответитьеще Неправильное OTP-сообщение, которое вы можете отправить.
0 голосов
/ 21 мая 2018

Существуют разные варианты.

  1. Если вы хотите использовать куки, зачем вам вообще нужен отдельный API?Если у клиента есть файл cookie, пусть клиент отправляет этот файл cookie как файл cookie.Ваша служба может анализировать файлы cookie при необходимости и принимать решения о дальнейших действиях.

  2. Если вы не можете отправлять файлы cookie, и для вас не подходит вариант 1: устройство не должно знать, какой типэто с точки зрения вашего сервиса.Вот почему я бы предложил использовать два сервиса - один без файлов cookie и один с файлами cookie.

  3. Вы говорите «RESTful».В текущей форме ваш сервис не является RESTful.

A) Использование глаголов делает сервис НЕ RESTful.Переименуйте его, например, в

"POST /api/users/verification/"

B) Две операции смешаны в одной: проверьте, аутентифицирован ли клиент, и запустите процесс аутентификации.Разделите его на две части: чтобы проверить, аутентифицирован ли клиент:

"GET /api/users/verification/mobile/9849735434"

Чтобы запустить аутентификацию:

"POST /api/users/verification/mobile/9849735434"

Для процедуры POST в этом случае тело не требуется.

0 голосов
/ 21 мая 2018

Я бы изменил существующий API, чтобы он соответствовал новому требованию, и вот важная вещь, которую я бы сделал при изменении.

1) Каждый раз, когда вы создаете любой API, всегда передается «версия» от клиента, этоТаким образом, вы будете знать, какой раздел кода для выполнения.Например, предположим, что у ваших мобильных пользователей есть две разные версии приложения, одна до этого выпуска, другая после.Для обоих пользователей полезно использовать управление версиями.

2) Передача «Тип устройства» от клиента, чтобы проверить, является ли клиент мобильным / вкладным или другим, это будет иметь несколько преимуществ, во-первых, вы будете знать, сколько пользовательской базыв телефоне / Интернете, другое преимущество заключается в том, что вы можете соответствующим образом настроить размер вывода, так как в Интернете будет больше информации по сравнению с мобильным приложением.

Теперь, когда у вас есть информация об устройстве и версии, вам просто нужно записать условие в своемсуществующий API.Как только вы почувствуете, что старая версия не используется, мы можем удалить эту часть API.

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...