2012-04-09 5 views
1

Есть ли способ заблокировать вызовы API REST для неавторизованного клиента? Есть ли способ сделать API «ограниченным» (общедоступным) только небольшим количеством четко определенных клиентов?Блокировка вызовов API REST

спасибо :-)

+0

Вам необходимо установить, кто может подключиться к серверу. – paulsm4

+1

REST не предоставляет API. Вы смущены RPC. 'http: // en.wikipedia.org/wiki/REST' –

+0

Предполагая, что вы имеете в виду что-то иное, чем REST, какую серверную платформу/язык/фрейм вы используете? –

ответ

2

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

1

Если вы используете RESTful HTTP

можно добавить HttpServletFilter вашего web.xml, который предотвращает несанкционированный доступ клиентов к вашей методе REST.

См Securing JAX-RS and RESTeasy

Если вы используете Spring Framework, и вы не хотите, чтобы реализовать свой собственный HttServletFilter вы можете использовать Spring Security

1

Вам просто необходимо реализовать механизмы безопасности в вашей RESTful службы, так он запрещает доступ к неавторизованным клиентам (с кодом ответа 404 или 401). Есть несколько способов для достижения этой цели:

  • реле на механизмах аутентификации HTTP, как Basic Authentication
  • Реализовать структуру пользовательской проверки подлинности, который преодолевает ограничения HTTP Basic Authentication. Amazon имеет интересный подход, который включает пользовательские заголовки HTTP и поддерживает хеширование.
  • Используйте существующую инфраструктуру безопасности и добавьте ее возможности в свою службу. Spring Security звучит как отличный вариант.
Смежные вопросы