REST HTTP-аутентификация - как? - PullRequest
26 голосов
/ 09 января 2012

Итак, я разрабатываю веб-сервис REST с использованием RESTeasy и Google App Engine. Мой вопрос не имеет отношения к GAE, но я упомянул его на всякий случай. Бывает, что, естественно, мне нужно защищать свои ресурсы и своих собственных пользователей (а не Google).

Обеспечение безопасности веб-сервиса REST кажется очень спорным вопросом или, по крайней мере, очень «либеральным». REST не устанавливает никаких стандартов в этом вопросе. Из того, что я исследовал в Интернете и литературе, я думаю, что есть по крайней мере 3 подхода, которые, я думаю, могут вписаться в мое приложение:

  • HTTP Basic (с SSL)
  • Дайджест HTTP (с SSL)
  • OAuth

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

HTTP Basic и HTTP Digest выглядят как самые простые в Интернете, но факт в том, что я никогда не находил конкретную реализацию их, например, с помощью RESTeasy , Я нашел эту страницу и эту в документации RESTeasy. Они действительно очень интересны, но они мало или ничего не говорят по этому вопросу (HTTP Basic или Digest).

Итак, здесь я спрашиваю:

Как защитить мой WebService с помощью HTTP Basic или дайджеста в RESTeasy?

Возможно, это так просто, что не стоит упоминать в документации или где-либо еще? Кроме того, если кто-то может дать мне некоторое представление о безопасности веб-сервисов RESTful, это может быть полезно.

Я правильно выбираю подходы?

Ответы [ 4 ]

6 голосов
/ 16 января 2012

Мне удалось сделать это с помощью перехватчиков RESTeasy. В основном запросы перехватываются с использованием класса слушателя. В этом классе я проверяю заголовки HTTP запроса, а затем продолжается обычный процесс Basic-Auth.

Полезные ссылки:

http://en.wikipedia.org/wiki/Basic_access_authentication
Передача параметров в заголовок сообщения с помощью REST API
http://www.alemoi.com/dev/httpaccess/ (часть сервлета)

Надеюсь, это кому-нибудь поможет.

Спасибо.

6 голосов
/ 10 января 2012

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

1 голос
/ 12 января 2012

вы определенно столкнетесь с угрозой безопасности при использовании любого метода аутентификации без SSL.

, но если вы использовали SSL, вы, как правило, будете страдать от низкой производительности.

Oauth на самом делерешение, позволяющее третьей стороне получать доступ к вашим веб-сервисам.

из-за ограниченного выбора, мое решение для текущих веб-сервисов, требующих аутентификации, использовало комбинацию SSL + basic

0 голосов
/ 09 января 2012

Вы можете использовать OAuth 2 . Это значительно проще, чем OAuth 1, и активно используется в больших REST API Facebook и Google.

...