Я видел много вопросов о restful-аутентификации, но мне интересно, какие стратегии используются, чтобы пользовательские агенты браузера не сохраняли состояния при аутентификации в веб-сервисе RESTful.
Делать это с пользовательским REST-клиентом «просто»: мы можем использовать Basic Auth, Digest, OAuth или свернуть свои собственные (пользовательские заголовки, токены, подписи и т. Д.). Таким образом, от машины к машине мы в значительной степени покрыты, но меня интересует только аутентификация с обычными пользовательскими агентами браузера (IE, Firefox и т. Д.). Например, отсутствует JSON, поскольку браузер не может его отобразить / использовать;)
Вот некоторые из моих мыслей относительно ограничений браузера :
- AFAICS, нет ли способа для браузера отправлять пользовательские заголовки, такие как используемые OAuth? (Верно?)
- У меня такое чувство, что должна быть возможность иметь страницу входа (например, html + ssl), где пользователь выполняет вход в систему. (Нет базовой аутентификации). Затем браузер захватывает токены и передает их обратно на сервер при каждом запросе. Проблема, с которой я сталкиваюсь при базовой аутентификации, заключается в том, что у меня нет «красивой настраиваемой страницы входа». Является ли текущий механизм аутентификации расширяемым, чтобы мы могли сохранять его спокойным?
- Я осторожен в преодолении / ослаблении ограничений REST из-за риска потери преимуществ масштабируемости.
A аналогичный ответ здесь , но у меня есть особый случай против файлов cookie : (не вдаваясь в подробности): то, как браузеры в настоящее время работают с использованием файлов cookie, исключено, поскольку сервер контролирует куки. (Заголовок «Set-Cookie» из состояния сервера). Клиент не понимает и не интерпретирует содержимое файлов cookie, которые он получает, и просто возвращает их. Проблема в том, что клиент не контролирует куки. Таким образом, да, мы можем использовать куки «спокойно / по-клиентски», но это не так, как это делают браузеры.
Какие стратегии и лучшие практики вы использовали, и каков ваш опыт? Есть дополнительные комментарии?