2016-03-20 16 views
1

Ich möchte eine Webanwendung entwerfen, die eine sichere Authentifizierung garantiert und API-Zugriff nur für autorisierte Benutzer gewährt. Die Grundidee besteht darin, einfach den Benutzernamen und das Passwort zu senden, um den Benutzer authentifizieren zu lassen. Und der Benutzer kann eine Anfrage an den Server mit der Sitzungs-ID stellen, ohne sich selbst erneut zu authentifizieren.Sichere Webauthentifizierung und API-Zugriff

Definitiv ist es sehr unsicher. Aber soweit ich das jetzt verstehen kann, können wir TLS (https) anwenden, um die Anmeldeinformationen des Benutzers nicht verfügbar zu machen, um es verschlüsselt zu bekommen.

Wie ich jedoch forsche, lerne ich viele Konzepte kennen, wie Base64, HMAC_SHA1, API-Schlüssel, OAuth1.0. Aber ich konnte nicht verstehen, warum wir diese Mechanismen außer TLS brauchen. Kann jemand erklären, warum TSL nicht ausreicht, um Authentifizierung und API-Zugriff zu gewährleisten, um sicher zu sein?

Antwort

0

Sichere Sitzungen funktionieren einwandfrei, wenn Ihre Webanwendung den Benutzer authentifiziert, die Sitzungs-ID ausgibt und die ID bei jedem Anruf überprüft. Sie können die Sitzungs-ID in einem sicheren Cookie speichern, das bei jeder Anfrage zurückgesendet wird.

Die Dinge werden komplizierter, wenn Sie Ihre API in einer anderen Domäne haben. Jetzt werden Ihre Cookies nicht automatisch an den Dienst gesendet (same-origin policy). Sie können die Sitzungs-ID natürlich in einem Autorisierungsheader festhalten, wenn Sie Ihre API aufrufen. Jetzt muss Ihre API jedoch mit demselben Back-End-Speicher kommunizieren, wobei der Sitzungsstatus beibehalten wird, um die Autorisierung zu überprüfen. Dieser Back-End-Speicher wird zu einem Engpass bei der Skalierbarkeit und einem einzigen Fehlerpunkt.

Um dies zu umgehen, geben moderne Protokolle (wie OAuth2) Sicherheitstoken aus. Diese Tokens sind digitally signed (mit HMAC) und der Empfänger vertraut dem Token, wenn die Signatur erfolgreich validiert wurde. Zum Überprüfen des Tokens sind keine Back-End-Aufrufe erforderlich, sondern nur eine einfache kryptografische Operation.

API-Schlüssel werden verwendet, damit Anwendungen ein Sicherheitstoken erhalten können, ohne dass ein Benutzer sich authentifizieren muss. Stellen Sie sich diese als Passwort für eine Anwendung vor.

Mit Sicherheitstoken ermöglicht es auch verwenden, um Sie einen 3rd-Party-Autorisierungsserver (wie Facebook oder Google usw.) und vollständig aus dem Geschäft erhalten Benutzer authentifiziert, Passwörter zu speichern, die Ausgabe-Token usw.