2013-10-12 20 views
38

Ich bin neu im Konzept der Restful-APIs.HTTP-Standardauthentifizierung über SSL für REST-API

ich eine erholsame api für einen Online-Shop bin der Gestaltung.

Ich habe verstanden, nicht richtig, das Konzept der grundlegenden HTTP-Authentifizierung über SSL.

Bedeutet dies, dass für jede Anforderung, muss der Benutzer wieder ihren/seinen Benutzernamen und ein Passwort eingeben?

Kann jemand bitte ausführlich erklären, wie es funktioniert und wie es gemeint verwendet werden?

Vielen Dank im Voraus.

Antwort

60

Grund Authentifizierung ist nur ein Standard-HTTP-Header mit dem Benutzer und in Base64 codiert Pass:

Authorization: Grund QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

(http://en.wikipedia.org/wiki/Basic_access_authentication) .Wenn Sie Ihre Rest-API-Aufrufe authentifizieren Durch diesen Header über eine Nicht-SSL-Verbindung ist das Problem, dass jeder Mann in der Mitte Ihren Benutzernamen und Ihr Passwort von Ihrem Auth-Header entschlüsseln kann.

Um sicher zu gehen, dass Ihr Kennwort sicher gesendet wird, anstelle einer normalen HTTP-Verbindung Sie HTTPS verwenden müssen. Der einzige Unterschied zwischen HTTP und HTTPS besteht darin, dass HTTPS das SSL/TSL-Sicherheitsprotokoll anstelle von TCP/IP über TCP/IP verwendet.

Nun hat dies den Nachteil, dass eine HTTPS-Verbindung hergestellt wird auf der CPU als normale HTTP-Verbindung teurer ist. Es ist sehr klar, dass wenn Sie Ihre Ruhe-Anrufe bei jeder Anfrage mit diesem Header authentifizieren möchten, sollten Sie Ihre Rest-API nur für HTTPS-Verbindungen verfügbar machen.

+1

Muss der Berechtigungsheader mit jeder Anfrage an den Server gesendet werden? –

+3

Ja. Weil die Rest api keinen Status hat (zB: angemeldeter Benutzerstatus). Ich denke, dass Sie für große Anwendungen ein Authentifizierungsmodul oder einen Filter haben müssen, der den Status .Oder OAuth hat. Ich würde sicherlich auch versuchen, OAuth 2 zum Beispiel zu verstehen, das eine vollständigere und allgemeinere Lösung für jeden ist, der Ihre API verwendet. –

+0

Und wird der Header automatisch immer wieder von meinem Browser zwischengespeichert und gesendet? Oder muss ich die Kopfzeile mit dem API-Code senden? –