Мобильное приложение + аутентификация REST API - PullRequest
0 голосов
/ 03 июня 2018

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

Для простого веб-сайта, после проверки имени пользователя и пароля, можно установить переменную SESSION и сделать так, чтобы пользователь входил в систему..

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

Является ли приведенное выше жизнеспособным решением или каков отраслевой стандарт для чего-то подобного?

(я обнаружил, что OAuth 2.0 является излишним, но я могу ошибаться)

1 Ответ

0 голосов
/ 03 июня 2018

Существует несколько схем аутентификации токена, но если вы ищете отраслевой стандарт, то JWT (JSON Web Token) - это путь.Вот как обычно происходит процесс:

  1. Клиент отправляет свои учетные данные (например, имя пользователя и пароль) на сервер.
  2. Сервер проверяет правильность учетных данных, генерирует JWT и возвращаетэто клиенту.Клиент сохраняет токен, например, в localStorage.
  3. Для каждого последующего запроса клиент присоединяет JWT как часть запроса (обычно в заголовке «Авторизация»).
  4. Сервер будетвозможность декодировать JWT и решить, должен ли клиент иметь доступ к запрошенному ресурсу.

Теперь некоторые интересные особенности JWT связаны с тем, что в нем закодированы данные.Некоторые из них могут декодировать все, а некоторые - только сервер.

Так, например, вы можете кодировать идентификатор пользователя и изображение профиля в JWT, чтобы клиент мог использовать данные с него, а ненеобходимость сделать еще один запрос к серверу, чтобы получить его профиль.

JWT имеет встроенную информацию об истечении срока действия.Сервер может установить время истечения.

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

...