2014-03-28 5 views
8

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

Antwort

2

Nach OAuth 20 RFC werden Aktualisierungs-Token nicht verwendet, um ein Token zu widerrufen - refresh „Zugriffstoken eine kürzere Lebensdauer hat und weniger Berechtigungen als autorisiertes vom Ressourcenbesitzer ". Refresh-Token wird verwendet, um die Lebensdauer eines Zugriffstokens zu erhöhen oder das alte Zugriffstoken durch einen neuen zu verlängern, 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.

+1

Welches sind die anderen Mechanismen? Ich weiß, was Refresh-Tokens sind. Bitte erklären Sie mir, wie Sie Token widerrufen können. Ich habe meine Frage bearbeitet –

+0

Es hängt von dem OAuth20-Anbieter ab, den Sie verwenden. Zum Beispiel kann der OAuth20-Anbieter einen Web-Service verfügbar machen, der Tokens entzieht. Allerdings ist mir nicht bewusst, wie das mit OWIN KATANA OAuth 2 getan wird. – rossa

+0

Ich habe meinen eigenen Provider, und ich baute es mit OWIN Katana oauth 2, aber ich weiß nicht, wie Widerruf zu tun :( –

17

In OAuth 2.0 sind zwei Arten von Token beteiligt. Eines ist ein Zugriffstoken und das andere ist ein Aktualisierungstoken.

Für Refresh-Token, ich empfehle wirklich Token Based Authentication using ASP.NET Web API 2, Owin, and Identity von Taiseer Joudeh geschrieben. Er bietet eine Schritt-für-Schritt-Anleitung zum Einrichten der tokenbasierten Authentifizierung, einschließlich des Entziehens 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 sind einige Details der Implementierung:

I-Cache verwenden als eine schwarze Liste zu arbeiten und setzen Ablauf des Cache-Speicherelement zum Ablauf Zugriffstoken. Das Cache-Objekt (Zugriffstoken) wird nach Ablauf automatisch aus der Blacklist entfernt. (Wir müssen das Zugriffstoken nicht in der schwarzen Liste behalten, wenn es abläuft. Wenn das Token abläuft, unabhängig davon, ob es in der schwarzen Liste ist oder nicht, kann es den OAuth-Validierungsmechanismus nicht bestehen.

Der folgende Code zeigt, wie eine Anforderung abgelehnt wird, wenn sich ihr Zugriffstoken in der schwarzen Liste befindet.

Was ich tue 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.

+3

wird es Sei perfekt, wenn du deinen Code zum Hinzufügen von blackList kopieren könntest :) – ChengWhyNot