Аутентификация собственного мобильного приложения с использованием REST API

16

Вскоре я начинаю новый проект, ориентированный на мобильные приложения для всех основных мобильных платформ (iOS, Android, Windows). Это будет архитектура клиент-сервер.

Приложение является информационным и транзакционным. Для транзакционной части они должны иметь учетную запись и войти в систему, прежде чем транзакция может быть выполнена. Я новичок в разработке мобильных приложений, поэтому не знаю, как выполняется аутентификация на этих платформах. Клиенты будут взаимодействовать с сервером через REST API. Будет использовать HTTPS конечно.

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

Я получил следующие вопросы:

1) Как и в приложении Facebook, вы вводите свои учетные данные только при первом запуске приложения. После этого вы автоматически входите в систему каждый раз, когда открываете приложение. Как это сделать? Просто зашифровывая и сохраняя учетные данные на устройстве и отправляя их при каждом запуске приложения?

2) Нужно ли аутентифицировать пользователя для каждого (транзакционного) запроса к API REST или использовать подход, основанный на токене?

Пожалуйста, не стесняйтесь предлагать другие способы аутентификации.

Благодарность!

Supercell
источник

Ответы:

14

Вы передаете имя пользователя / пароль методу входа в RESTful API, и он возвращает токен доступа. Этот токен доступа является просто некоторой уникальной (для системы) строкой.

Устройство хранит (сохраняется) этот токен доступа. Каждый раз, когда вы отправляете RESTful-запрос на сервер, вы помещаете этот токен доступа в заголовок HTTP-запроса. Сервер находит пользователя по токену доступа и при успешном выполнении выполняет запрос.

имя пользователя / пароль не должны храниться на устройстве.

с-улыбка
источник
Могут ли третьи лица (хакеры и т. Д.) Получить токен доступа?
Supercell
Это возможно, конечно. Особенно, если вы не используете HTTPS. Большинство онлайн-клиентов электронной почты просят вас повторно регистрироваться время от времени. Например, токен имеет срок действия, равный двум неделям. Так что раз в две недели вам нужно будет заново регистрироваться.
c-smile
Как будет сгенерирован токен доступа и сохранится ли токен доступа на сервере.
Гиаф Серхал
@ c-smile Facebook никогда не просил меня войти заново. Поэтому я не вижу разницы между паролем и токеном доступа.
Микаэль Маррач
я знаю, что уже поздно но Facebook и другие провайдеры выдают токен обновления, токен доступа и время истечения (для токена доступа) во время входа в систему. токен доступа является недолгим, и новый токен доступа может быть сгенерирован с помощью токена обновления. При следующем входе в систему можно создать новый токен обновления, сделав старый недействительным
Cerlin