RESTful схема аутентификации - PullRequest
2 голосов
/ 16 ноября 2011

Мне нужно реализовать схему аутентификации для архитектуры RESTful. Из нескольких статей, которые я прочитал, можно найти основную аутентификацию с использованием HTTP и управление сеансами с использованием Cookie.

Однако я плохо понимаю использование cookie. Что я понимаю, так это то, что пользователь сначала отправляет учетные данные. Сервер проверяет правильность учетных данных. Если да, сервер генерирует токен авторизации и помещает его в файл cookie. Далее, при каждом запросе сервер проверяет действительность токена в куки.

Но как сервер узнает, что содержимое файла cookie является действительным. Хранит ли он это где-то, а потом сравнивает ??

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

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

Тем не менее, обратите внимание, что файлы cookie настроек делают ваш веб-сервис вызовом с состоянием и игнорируют цель REST.

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

1 голос
/ 16 ноября 2011

Я не эксперт, но хорошая отправная точка, чтобы понять, что это раздел о сессиях в книге Хартла.

Если я не ошибаюсь, он работает следующим образом:Когда токен создается, он использует формулу, например, имя пользователя и уникальный ключ пользователя (соль), зашифрованные вместе.И имя пользователя, и соль хранятся в базе данных, и соль уникальна для этого пользователя.Таким образом, как и в случае сравнения паролей, чтобы проверить правильность cookie, вы воссоздаете токен и сравниваете его с данным в cookie.Если он совпадает, значит, в систему вошел правильный пользователь и, следовательно, авторизован.

Надеюсь, это поможет или, по крайней мере, укажет вам правильное направление:)

...