OAuth 2.0. Keine Sitzung? (staatenlos)

8

Ich werde OAuth 2.0 und REST API damit implementieren

um verschiedene Berechtigungen pro Benutzer zu erteilen und auch gut zu skalieren.

Für eine gute Skalierung ist zustandslos einfacher, weil es

gibt

NO Datei, Datenbank, speicherbasierte Sitzung damit.

Im Folgenden verstehe ich OAuth 2.

  1. OAuth Server gibt einem Benutzer ein Zugriffs-Token.
  2. Das Zugriffstoken des Benutzers wird in Cookie gespeichert.
  3. Beim Benutzerzugriff auf die REST-API sendet der Benutzer mit dem Zugriffstoken.
  4. Der Server empfängt die Anfrage mit dem Zugriffstoken.
  5. Server herausfinden, ob das Zugriffstoken gültig ist und der Benutzer die Berechtigung zum Ausführen der Anfrage hat.
  6. Führen oder ablehnen basierend auf Benutzerprivilegien.

Ich muss mich also nicht um den Sitzungsspeicher kümmern. Richtig?

    
InspiredJW 12.07.2012, 18:34
quelle

2 Antworten

8

Was Sie hier beschreiben, ist der OAuth 2 Implicit Grant flow . OAuth 2 enthält auch drei andere Abläufe, aber da Ihr Ressourcenbesitzer (der Benutzer) Anfragen mit browser-seitigem JavaScript initiiert (Sie haben über Cookies gesprochen), sollten Sie diesen Flow verwenden.

Auf der Clientseite müssen Sie in OAuth nur die access_token für den Zugriff auf geschützte Ressourcen speichern (und eine refresh_token wenn Sie eine ablaufende access_token -Option durchführen möchten.

    
Jan Gerlinger 12.07.2012, 20:07
quelle
4

Eine neuere Innovation ist JWT - JSON Web Token.

Hier ist ein Link zur Spezifikation: JWT - JSON Web Token

JWT ist eine Methode zur Verwendung von Hash-Token mit einer Hash-Methode wie HMAC, die für einen Hash-basierten Nachrichtenauthentifizierungscode steht. Da das Token mit einem geheimen Schlüssel verschlüsselt wird, kann der Server feststellen, ob das Token manipuliert wurde.

Hier ist eine Beispielmethode zum Erstellen eines Hash-Tokens für JWT:

%Vor%

Hier ist ein Beispiel für die Decodierung eines Tokens, um sicherzustellen, dass es nicht manipuliert wurde:

%Vor%

Hier ist ein Artikel mit einem vollständigeren Beispiel: Stateless Authentication

    
anataliocs 01.04.2015 20:31
quelle