2012-04-09 11 views
1

Gibt es eine Möglichkeit, REST-API-Aufrufe an einen nicht autorisierten Client zu blockieren? gibt es eine Möglichkeit, die API für einige wenige gut definierte Clients "beschränkt" zu machen?Blockieren von REST-API-Aufrufen

Dank :-)

+0

Sie müssen sicherstellen, wer sich mit dem Server verbinden kann. – paulsm4

+1

REST stellt keine APIs zur Verfügung. Sie sind mit RPC verwirrt. 'http: // en.wikipedia.org/wiki/REST' –

+0

Angenommen, Sie meinen etwas anderes als REST, welche Serverplattform/Sprache/Framework verwenden Sie? –

Antwort

2

Sie SSL bereitstellen können zwischen den Clients und dem Server gegenseitig authentifiziert. Sie können hier selbstsignierte Zertifikate verwenden, sodass Sie keine Zertifikate von einer Zertifizierungsstelle kaufen müssen. Dadurch wird sichergestellt, dass Ihr Server nur Anfragen von Clients annimmt, die über das clientseitige Zertifikat verfügen (konfigurieren Sie Ihren Server so, dass er nur die selbstsignierten Clientzertifikate akzeptiert, die auf Ihren Clients für die Clientauthentifizierung bereitgestellt werden).

1

Wenn Sie RESTful HTTP

verwenden können Sie eine HttpServletFilter zu Ihrem web.xml hinzuzufügen, die den Zugriff auf Ihre Methoden REST nicht autorisierte Clients verhindert.

Siehe Securing JAX-RS and RESTeasy

Wenn Sie das Spring-Framework Sie verwenden, und Sie wollen nicht Ihre eigene implementieren HttServletFilter Sie Spring Security

1

verwenden können, benötigen Sie nur Sicherheitsmechanismen in Ihrem RESTful-Service zu implementieren, so Es verweigert den Zugriff auf nicht autorisierte Clients (mit einem 404 oder 401 Response-Code). Es gibt mehrere Möglichkeiten, dies zu erreichen:

  • Relay auf HTTP-Authentifizierungsmechanismen, wie Basic Authentication
  • Implementieren eines benutzerdefinierten Authentifizierungs-Framework, die HTTP-Standardauthentifizierung Einschränkungen überwindet. Amazon hat einen interessanten Ansatz, der benutzerdefinierte HTTP-Header enthält und Hashing unterstützt.
  • Verwenden Sie ein vorhandenes Sicherheitsframework und fügen Sie dem Service Funktionen hinzu. Spring Security klingt wie eine gute Option.