Подтвердить что ты не робот

REST HTTP Authentication - Как?

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

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

  • HTTP Basic (с SSL)
  • HTTP Digest (с SSL)
  • OAuth

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Спасибо.

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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