Способ сохранить сеанс в приложении REST - PullRequest
5 голосов
/ 23 марта 2010

У нас есть REST-приложение, которое используется в основном приложениями, которым не нужно поддерживать свое состояние, поэтому до сих пор мы молчаливо «RESTFUL» без поддержания состояния. Мы используем Private / Public (аналогично Amazon) для аутентификации. В настоящее время клиент передает учетные данные для каждого запроса

Теперь у нас есть новое требование, в котором мы должны поддерживать состояние (или разговор). Клиент может быть Rich-приложением или портативным устройством. Я пытаюсь найти наилучший способ реализации состояния. Должны ли мы передать идентификатор сеанса и поддерживать этот идентификатор .. это лучшее и единственное решение?

1 Ответ

3 голосов
/ 15 июля 2010

Передача идентификатора сеанса - не единственный и не лучший способ поддерживать разговорное состояние. Лучший способ, если у вас есть RIA, - это поддерживать состояние самого клиента , где он принадлежит, как предлагают некоторые комментарии. Это означает, что по-прежнему отправлять учетные данные каждый запрос.

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

Если этого недостаточно, вы можете использовать что-то похожее на Google ClientLogin и предоставить клиенту зашифрованный токен, который можно проверить, не запрашивая авторизацию и не передавая реальные учетные данные пользователя через провод. Сами по себе Google, выполнив вход в систему через https, а затем используя сгенерированные токены через http. Он открыт для повторных атак на весь срок действия токена.

...