Implementierung des Zugriffs auf Tokenwiderruf in OAuth 2

8

Ich habe OWIN OAuth 2 verwendet, um meinen Autorisierungsserver-Provider zu implementieren. Jetzt möchte ich den Token-Widerruf implementieren (wenn meine Client-Anwendung sich abmelden möchte).
Kann jemand mir helfen und sagen, wie man Token-Widerruf in OWIN KATANA OAuth 2 implementiert. Gibt es einige gute Praktiken dafür?

    
Sargis Koshkaryan 28.03.2014, 08:52
quelle

3 Antworten

17

In OAuth 2.0 gibt es zwei Arten von Token. Einer ist Zugriffstoken und der andere ist ein Aktualisierungstoken.

Für Refresh-Token empfehle ich wirklich Token-basierte Authentifizierung mit ASP.NET Web API 2, Owin und Identität geschrieben von Taiseer Joudeh. Er bietet eine Schritt-für-Schritt-Anleitung zum Einrichten der tokenbasierten Authentifizierung, einschließlich des Entzugs des Aktualisierungstokens.

Für Zugriffstoken verwende ich eine schwarze Liste, um widerrufene Zugriffstoken zu speichern. Wenn sich ein Benutzer abmeldet, füge ich das aktuelle Zugriffstoken des Benutzers in eine schwarze Liste ein. Und wenn eine neue Anfrage kommt, überprüfe ich zuerst, ob ihr Zugangstoken in der schwarzen Liste ist. Wenn ja, lehnen Sie die Anfrage ab, andernfalls lassen Sie die OAuth-Komponente die Validierung durchführen.

Hier einige Implementierungsdetails:

Ich verwende den Cache, um als schwarze Liste zu arbeiten und den Ablauf des Cache-Elements auf den Ablauf des Zugriffstokens zu setzen. Das Cache-Objekt (Zugriffstoken) wird nach Ablauf automatisch aus der Blacklist entfernt. (Wir müssen das Zugriffstoken nicht in der schwarzen Liste behalten, nachdem es abläuft. Wenn das Token abläuft, egal ob es in der schwarzen Liste ist oder nicht, kann es den OAuth-Validierungsmechanismus nicht bestehen.)

Der folgende Code zeigt, wie eine Anfrage abgelehnt wird, wenn ihr Zugriffstoken in der schwarzen Liste ist.

%Vor%

Was ich mache ist, wenn ich das Access Token in der schwarzen Liste finde, setze ich das Access Token auf eine leere Zeichenfolge. Später, wenn die OAuth-Komponente versucht, das Token zu analysieren, findet es heraus, dass das Token leer ist. Ein leerer String ist definitiv kein gültiges Token, daher wird er die Anfrage zurückweisen, genauso wie Sie eine Anfrage mit einem ungültigen Zugriffs-Token senden.

    
Sher10ck 27.09.2014 04:06
quelle
2

Nach OAuth 20 RFC wird das Refresh-Token nicht dazu verwendet, ein Token zu widerrufen - die Aktualisierung "Zugriffstoken haben möglicherweise eine kürzere Lebensdauer und weniger Berechtigungen als vom Ressourceneigner autorisiert". Refresh-Token wird verwendet, um die Lebensdauer eines Zugriffstokens zu erhöhen oder das alte Zugriffstoken mit einem neuen zu erneuern, der später abläuft. Dies wird normalerweise verwendet, um zu verhindern, dass der Benutzer erneut nach seinen Anmeldeinformationen gefragt wird. Um einen Token zu widerrufen, sollte der OAuth20-Anbieter einen solchen WS / Endpunkt oder einen anderen Mechanismus bereitstellen.

    
rossa 29.03.2014 13:19
quelle
0
Mit

Aktualisieren von Token ermöglicht OAuth2 die Aufhebung der Autorisierung. Die OAuth2-Autorisierungsserver-Middleware von Microsoft fehlt in dieser Hinsicht:

Ссылка

    
Brock Allen 28.03.2014 21:56
quelle

Tags und Links