OAuth2-Fluss - Überprüft der Server mit dem Auth-Server?

10

Ich habe viel über OAuth2 gelesen und versucht, mich darum zu kümmern, aber ich bin immer noch verwirrt über etwas.

Ich verstehe, dass der Client beim OAuth-Anbieter (z. B. Google) autorisiert und dem Ressourcenserver Zugriff auf die Profildaten des Benutzers gewährt. Anschließend kann der Client das Zugriffstoken an den Ressourcenserver senden und die Ressource zurückgeben.

Was jedoch in keiner Dokumentation behandelt zu werden scheint, ist, was passiert, wenn die Client-App den Ressourcenserver nach einer Ressource fragt und ihm das Zugriffstoken übergibt. Alles, was ich bisher gelesen habe, besagt, dass der Ressourcenserver nur mit der angeforderten Ressource antwortet.

Aber das scheint eine große Lücke zu sein, sicherlich muss der Ressourcenserver das Zugriffstoken irgendwie validieren, sonst könnte ich einfach jede alte Anfrage fälschen und ein altes, gestohlenes, gefälschtes oder zufällig generiertes Token übergeben und es würde es einfach akzeptieren.

Kann mich jemand auf eine einfach zu befolgende Erklärung von OAuth2 hinweisen, da sich die bisher gelesenen unvollständig anfühlen?

drekka
quelle

Antworten:

9

Fand es. In der Spezifikation begraben. Sie sagen, dass der Ressourcenserver das Zugriffstoken mit dem Authentifizierungsserver validieren sollte, dass es jedoch außerhalb des Bereichs des Dokuments liegt. Schade, ich hätte gedacht, dass die Token-Validierung ein wichtiger Teil ist.

drekka
quelle
1
In Bezug auf wichtige Teile kann es sich lohnen, diesen Blog-Beitrag zu lesen, um Hintergrundinformationen zu den Prioritäten von OAuth2 zu erhalten.
Lars Viklund
1
Danke dafür, eine interessante Lektüre. Meine Anforderungen sind insofern recht einfach, als ich einer iOS-App erlauben möchte, sich bei Google, Twitter, Facebook usw. zu authentifizieren, eine Autorisierung an meinen Server zu übergeben und sie von meinem Server validieren zu lassen und den Zugriff auf Ressourcen zu ermöglichen. Das Problem hat sich als komplexer erwiesen, als ich erwartet hatte, da es komplex ist zu verstehen, wie dies funktioniert und was ich wo tun muss.
Drekka
Genauer gesagt, Anhang A: "Um die Signatur für die Anforderung zu validieren, kann die geschützte Ressource möglicherweise die Token-ID an den Introspektionsendpunkt des Autorisierungsservers senden, um die für dieses Token erforderlichen Schlüsselinformationen zu erhalten. Die Details dieser Verwendung liegen außerhalb den Umfang dieser Spezifikation und wird in einer Erweiterung [...] definiert ".
JulienD
2

Die Token-Validierung wird im Allgemeinen auf eine von zwei Arten durchgeführt.

1) Das Token wird mit vorinstallierten Schlüsseln kryptografisch signiert. Dies hat offensichtliche Mängel bei der Verwendung in verteilten, sich vermehrenden Systemen.

2) Der Authorization Server (AS) bietet einen Endpunkt für die Token-Validierung oder Introspektion. Diese Methode wurde im Oktober 2015 in IETF RFC 7662 standardisiert, siehe: https://tools.ietf.org/html/rfc7662

Diese Frage / Antwort zum Stapelüberlauf enthält Beispiele von Google und Github: /programming/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server

Howie Ross
quelle
0

Sie lesen die Spezifikation zur Validierung des Tokens:

https://tools.ietf.org/html/rfc7662

Ich hoffe, dies hilft - bitte markieren Sie die Antwort, wenn sie Ihre Anfrage / Ihr Problem beantwortet

Chirag
quelle
4
Willkommen bei Software Engineering. In der aktuellen Form entspricht diese Antwort nicht unseren Qualitätsrichtlinien . Wir erwarten, dass die Antworten für sich allein stehen - Leser sollten externen Links nur folgen, um ein tieferes Verständnis zu erlangen oder Quellen zu bestätigen, und der relevante Inhalt sollte hier zitiert werden.
Thomas Owens