Beruhigende API-Authentifizierungsempfehlung?

8

Ich entwickle mehrere RESTful-API für den Aufruf von Drittanbietern, und diese API benötigt Authentifizierung (apikey & amp; geheim) und Autorisierung (HTTP-Methode & amp; URI basiert).

Gibt es eine vorhandene Software, die wir wiederverwenden können, die mich daran hindert, unsere eigene Implementierung für die Sicherheitsebene einzuführen?

    
Howard 20.08.2010, 13:56
quelle

3 Antworten

7

HTTP gibt Ihnen Unterstützung dafür, damit Sie das Rad nicht neu erfinden müssen

Verwenden Sie entweder:

  • HTTP Auth Basic (mit SSL zur Umgehung von Problemen beim Senden von Nur-Text-Passwörtern)
  • HTTP Auth Digest

Auth Digest hat den Vorteil, dass es den Passowrd nicht in Klartext überträgt und Replay-Attacken (mit Nonces) behandelt.

Wir verwenden HTTP Auth Digest (Tomcat Servlet Container hat direkte Unterstützung dafür) und wir sind damit zufrieden.

EDIT: Einige Clients haben Probleme mit Digest (nicht so trivial), also würde ich mich heute für Basic und SSL entscheiden. Vorteil für Basic ist auch, dass Sie preemptive Authentifizierung (sendender Benutzer: pwd in der ersten Anfrage) können.

    
manuel aldana 20.08.2010, 15:38
quelle
2

Wenn Sie Ihre API mit Ruby on Rails (3.2.0 oder höher) erstellen, sehen Sie sich das Attribut restful_api_authentication an - Ссылка

    
Dave 08.06.2012 16:24
quelle
0

Unabhängig von Ihrer Technologie können Sie einige Systeme wie AWS verwenden.

  • Jeder registrierte Benutzer muss eine Benutzer-ID und einen geheimen Zugriffsschlüssel haben.
  • Jede Anfrage muss mit dem SAK signiert sein und die Benutzer-ID enthalten. (Berücksichtigen Sie auch den Zeitstempel.)
  • Der Server, gegeben die Benutzer-ID, ruft von der Datenbank den SAK ab und signiert erneut die Anfrage, wenn die Unterschrift viel fortfährt, andernfalls wird ein Fehler zurückgegeben.

Die Implementierung ist nicht zu schwierig, aber Sie müssen jede Anfrage an den Server berücksichtigen, um den Speicher abzufragen, um den SAK abzurufen. Eine Möglichkeit besteht darin, eine NoSQL DB oder ähnliches (wie Redis oder Memcache) zu verwenden, um die Benutzer-ID / sak zu speichern.

    
EricSonaron 13.12.2013 16:32
quelle