Модель аутентификации для приложения Android - PullRequest
7 голосов
/ 09 сентября 2011

Я собираюсь построить систему, которая состоит из 2 частей: 1. Веб-сайт PHP (CakePHP).2. Мобильное приложение (Android и iPhone).

Пользователь должен войти в систему с помощью usr & pwd, чтобы использовать мою систему (веб-приложение и мобильное приложение).Но у меня нет большого опыта с аутентификацией пользователей.Что я должен хранить: usr & pwd, строка токена.Я хочу найти «модель аутентификации пользователя» для моей системы (веб-приложение и приложение для мобильных устройств).

Есть ли у кого-нибудь опыт аутентификации пользователей.Кто-нибудь знает, как это реализовать?

1 Ответ

14 голосов
/ 09 сентября 2011

Это то, что мы делаем для наших приложений,

  1. Сначала мы отправляем имя пользователя и пароль на сервер из нашего приложения.

  2. На сервере они аутентифицируют учетные данные и возвращают ответ, который является комбинацией токена запроса и флага успеха.

  3. В нашем приложении мы проверяем флаг успеха. Если для него установлено значение true, мы сохраняем токен запроса и используем его для всех последующих исходящих запросов на сервер.

  4. Теперь, когда сервер получает запрос, он проверяет базу данных, чтобы узнать, есть ли у пользователя этот токен. Если это так, он проверяет время, в которое был сделан последний запрос (для обработки случаев, когда время входа пользователя истекло). Если разница между текущим временем и временем последнего запроса превышает установленный лимит, вы ответили приложению, что для создания нового токена требуется новый запрос входа в систему. В противном случае вы продолжите запрос и ответите результатами.

    Вот как это делают серверные ребята на моем рабочем месте. Я работаю на стороне клиента. Но это в основном то, что сделано.

Редактировать: О токене. В основном это строка из 32 символов, которая генерируется методом случайного генератора. Поэтому, когда пользователь отправляет запрос на вход в систему, и вход в систему успешен, мы создаем токен с использованием метода генератора и сохраняем его в нашей базе данных сервера в качестве токена запроса пользователя вместе с текущими временем и датой.

Поэтому, когда пользователь отправляет другой запрос на сервер, мы сначала берем токен и проверяем, существует ли пользователь с этим токеном. Если есть, то следующая проверка состоит в том, чтобы увидеть, является ли это каким-то старым маркером запроса. Таким образом, мы проверяем текущее время с временем, сохраненным в базе данных. Если запрос был отправлен до лимита (например, 5 минут), мы обновляем текущее время последнего запроса в базе данных и возвращаем результат клиенту.

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

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

Существует множество функций для генерации случайных токенов.

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