Как защитить веб-службы RESTful (PROVIDER)

Мне нужны безопасные услуги Restfull у провайдера. Я хочу, чтобы пользователь имел разрешение на использование службы REST, и я могу генерировать статистику использования или просто не разрешать вызывать службы REST, если он не зарегистрирован разработчиком.

Я думал о том, что пользователь отправляет адрес электронной почты и пароль в URL-адресе (http://autor.derf.com/api/search/[email protected]&passwd=dasffsdf;), но это не очень безопасно.

Также я читал об oauth 2.0, но документация для Java очень и очень плохая.

Есть ли другой способ получить RESTful API с авторизацией?

Мне нужен доступ к Restfull API для Iphone, Android, Windows Phone и Интернета.

Заранее спасибо ;)


person Rom    schedule 11.12.2011    source источник


Ответы (1)


Если вы планируете написать всех клиентов для службы самостоятельно (iPhone, Android и т. д.), то отправка электронной почты и пароля является достойной альтернативой, если провайдер взаимодействует через безопасный транспортный уровень (например, SSL/HTTPS).

Вы всегда можете добавить поддержку OAuth 1 или 2 позже, если захотите сделать свои API общедоступными. (Вся идея OAUth состоит в том, чтобы защитить пароли пользователей, а также получить более детальный контроль над тем, какие API-интерфейсы клиент может использовать и как долго).

Но в вашем случае я бы по крайней мере рассмотрел возможность использования базовой аутентификации, при которой типичный HTTP-запрос выглядит примерно так:

GET /path/to/api HTTP/1.1
Host: www.example.com
Authorization: Basic aHR0cHdhdGNoOmY=

Хэш после «Basic» — это просто кодировка base64 "username:password" или, в вашем случае, "email:password". Если кто-то перехватит его, его легко будет просто декодировать, чтобы получить учетные данные пользователя в виде простого текста. Так что HTTPS обязателен.

Дополнительную информацию о базовой аутентификации можно найти в Википедии.

person Jon Nylander    schedule 11.12.2011
comment
Большое спасибо, а что касается общедоступного API, знаете ли вы какую-либо реализацию для Java поставщика oauth 2.0? - person Rom; 11.12.2011
comment
Тогда это дубликат этого вопроса: /2150801/ - person Jon Nylander; 11.12.2011