Агенты пользователя браузера RESTful и аутентификация - PullRequest
1 голос
/ 14 апреля 2011

Я видел много вопросов о restful-аутентификации, но мне интересно, какие стратегии используются, чтобы пользовательские агенты браузера не сохраняли состояния при аутентификации в веб-сервисе RESTful.

Делать это с пользовательским REST-клиентом «просто»: мы можем использовать Basic Auth, Digest, OAuth или свернуть свои собственные (пользовательские заголовки, токены, подписи и т. Д.). Таким образом, от машины к машине мы в значительной степени покрыты, но меня интересует только аутентификация с обычными пользовательскими агентами браузера (IE, Firefox и т. Д.). Например, отсутствует JSON, поскольку браузер не может его отобразить / использовать;)

Вот некоторые из моих мыслей относительно ограничений браузера :

  • AFAICS, нет ли способа для браузера отправлять пользовательские заголовки, такие как используемые OAuth? (Верно?)
  • У меня такое чувство, что должна быть возможность иметь страницу входа (например, html + ssl), где пользователь выполняет вход в систему. (Нет базовой аутентификации). Затем браузер захватывает токены и передает их обратно на сервер при каждом запросе. Проблема, с которой я сталкиваюсь при базовой аутентификации, заключается в том, что у меня нет «красивой настраиваемой страницы входа». Является ли текущий механизм аутентификации расширяемым, чтобы мы могли сохранять его спокойным?
  • Я осторожен в преодолении / ослаблении ограничений REST из-за риска потери преимуществ масштабируемости.

A аналогичный ответ здесь , но у меня есть особый случай против файлов cookie : (не вдаваясь в подробности): то, как браузеры в настоящее время работают с использованием файлов cookie, исключено, поскольку сервер контролирует куки. (Заголовок «Set-Cookie» из состояния сервера). Клиент не понимает и не интерпретирует содержимое файлов cookie, которые он получает, и просто возвращает их. Проблема в том, что клиент не контролирует куки. Таким образом, да, мы можем использовать куки «спокойно / по-клиентски», но это не так, как это делают браузеры.

Какие стратегии и лучшие практики вы использовали, и каков ваш опыт? Есть дополнительные комментарии?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Если вы используете веб-сервер Apache, вы можете взглянуть на этот документ .

1 голос
/ 14 апреля 2011

Я думаю, что ограничения браузера, о которых вы упомянули, по существу непреодолимы для большинства случаев использования.Наше личное решение - предоставить пользователю легкий, не относящийся к RESTful слой, содержащий пользовательский клиент REST;например, для приложений JavaScript мы предоставляем клиентский REST-клиент через JSON-RPC.

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