Если под аутентификацией по телефону вы подразумеваете одноразовый пароль, моим предлагаемым решением будет запрос пользователя OTP, и мы отправим ему подтверждение его запроса.
Затем сгенерируйте код и сохраните его в некоторой серверной базе данных.
Далее отправьте пользователю тот же точный код. Мы сохраняем код в серверной базе данных, чтобы сравнить его с тем, что отправил нам пользователь.
Пользователь, предположительно, получает текстовое сообщение, отправляет нам правильный код и приходит на наш сервер, мы сравниваем два кода, и если пользователь ввел правильный код, мы отправим ему дополнительный идентификационный токен, такой как Json Веб-токен для идентификации пользователя для будущих запросов.
Размещение токена на нашем внутреннем сервере делает его более удобным для пользователя и избавляет нас от необходимости кэшировать что-либо с setTimeout
или с истечением срока действия.
Таким образом, если пользователь закрывает приложение и не возвращается к нему, пока через день или два он все еще может аутентифицироваться, и нам не нужно беспокоиться о том, что токен находится в кеше.
В основном я работал с Json Web Token и файлами cookie, и я не являюсь разработчиком ASP.NET, чтобы было ясно.
Технология одноразового пароля - это всегда амбициозный проект для ИМО.
Таким образом, нам нужно сохранить код, который пользователь должен вводить в устройство, чтобы мы могли сравнить его в какой-то момент в будущем. Когда вы генерируете код, сохраните его в Firebase, чтобы в будущем вы могли обратиться к Firebase и сказать, что пользователь с номером телефона 212-555-1212 только что отправил вам код 1234, это правильный код?
Итак, Firebase работает с OTP, если вы можете хранить код в Firebase. Однако на самом деле проблема заключается в том, чтобы написать пользователю код. Это актуальное SMS-сообщение. Чтобы справиться с этим, вы не можете использовать только Firebase, вы можете интегрировать чрезвычайно популярный Twilio. Twilio - это общение с пользователями с помощью телефонных SMS-сообщений, поэтому мы можем использовать Twilio для отправки пользователю кода.
Другая часть создает Web-токен Json, опять же, я не являюсь разработчиком ASP.NET, но он поддерживает веб-токены JSON из того, что я посмотрел здесь:
JWT-аутентификация для ASP.NET Web API
Вы также можете позаботиться об аутентификации или пользовательской системе внутри Firebase. Как только пользователь вводит OTP, мы генерируем JSON Web Token через Firebase.
Таким образом, все хранилище JSON и вся информация, которая отражает, кто пользователь, все, что можно сохранить в Firebase.
В заключение я сказал, что нам нужно сравнить наш код на сервере. Ну, а какой сервер?
Firebase - это просто хранилище данных, это место для хранения данных JSON, оно не дает нам возможности запускать пользовательский код.
Так ты пишешь сервер для сравнения кодов? Мы НЕ хотим делать это сравнение на устройстве пользователя.
Так что же нам делать? Кроме того, как мы генерируем код? Для этого также не используйте устройство пользователя.
Так, где мы генерируем код? Мы знаем, как использовать хранилище данных Firebase для хранения кода, но как мы его сгенерируем?
Опять же, я не являюсь разработчиком ASP.NET, возможно, вы можете использовать Node или Express, Python или Rails, но, возможно, вы можете найти способ с низким напряжением и низким трением.
Хорошо, вот как я это вижу:
ASP.NET - Показать пользователю форму для регистрации и входа через OTP
Twilio - отправлять текстовые сообщения пользователю
Firebase - Хранить данные пользователя, включая учетные записи пользователей и правильные коды OTP
Google Cloud Functions - Святая корова, откуда это взялось?
Вы можете прочитать об этом здесь:
https://medium.com/google-cloud/running-net-on-google-cloud-functions-977e1a1c489
Итак, Облачные функции Google - это фрагменты кода, которые запускаются один раз по требованию на серверах Google. GCF тесно взаимодействует и интегрируется с хранилищами данных Firebase.
Мы можем добавить некоторую логику или обработку к данным, находящимся внутри Firebase.GCF позволит вам использовать некоторую настраиваемую логику для генерации ваших кодов и сохранения их в Firebase, а GCF также может сравнивать код после его отправки пользователем.
AWS Lambda и GCF практически идентичны по функциональности, что может бытьвариант также.Независимо от того, какое решение вы используете, они являются передаваемыми навыками.
Я только что предложил много сложностей, надеюсь, это поможет.