2013-08-20 6 views
9

Ich habe in letzter Zeit in OAuth2 untersucht und ich glaube, ich verstehe den Autorisierungsprozess.Wie übersetzt ein OAuth2 (Bearer) Token in eine ACL

Was ich jedoch scheinen, ist nicht zu verstehen, wenn Genehmigung stattgefunden hat und ein access_token und ein refresh_token etabliert haben, Anrufe zu tätigen, wie wird die Entscheidung über die access_token, wenn der Antrag auf Basis gemacht kann oder nicht zugreifen kann eine bestimmte Ressource?

I.e. Ein Token wird an den Server gesendet, um ein Foto anzufordern. Wie bestimmt die Logik auf dem Server basierend auf dem gegebenen Token, dass der Zugriff auf dieses bestimmte Foto erlaubt oder verweigert wird?

Antwort

3

Die access_token ist normalerweise ein opakes Artefakt. Es gibt nichts intrinsisches, das es mit einer Ressource verknüpft (z. B. ein bestimmtes Foto). Wenn der Autorisierungsablauf beginnt, fordern Sie normalerweise einen bestimmten scope an, der den benötigten Zugriff definiert. Wenn der Besitzer der Ressource diesem Zugriff zustimmt, ist die Anforderung erfolgreich. Benutzer können den Zugriff auch widerrufen.

All das ist App-spezifischen Code. Jede App definiert, was ihre Gültigkeitsbereiche sind und wie sie die Überprüfung durchsetzen.

Sie möchten vielleicht Authorization Server als ein Beispiel erkunden.

+0

Mit etwas mehr Erfahrung mit OAuth (2) ist diese Antwort eigentlich die richtige Antwort. – Luke

4

Das Zugriffstoken ist eigentlich ein verschlüsseltes Objekt, dieses Objekt definiert die Gültigkeitsbereiche und kann die Berechtigung wiederherstellen.

Stellen Sie sich vor, der Dienstanbieter gibt Ihnen ein HMAC-verschlüsseltes Token, das für Sie keinen Sinn ergibt, aber der Endpunkt weiß, wie er es entschlüsseln kann. Auf Entschlüsselung wäre es Informationen wie:

{"scope":"Photos", "userID":"3refefe"} 

Also, im Grunde das Modul zu Ihnen über die Token Umgang verschlüsselt diese JSON (oder ein anderes Format) Objekt und gibt Ihnen die verschlüsselten Token. Wenn Sie den API-Endpunkt erreichen, sendet er ein Token an die Entschlüsselungslogik und ruft dieses JSON-Objekt ab und weiß somit, wozu Sie berechtigt sind.

Dieses Objekt kann je nach Dienstanbieter beliebige Arten von Informationen und in einem beliebigen Format enthalten. Ich habe beschrieben how an OAuth provider works here.

Dies sollte die Grundlagen eines minimalistischen OAuth-Framework zu erklären.

+1

Interessante Idee, die Berechtigungen innerhalb des Tokens zu kodieren. Vielen Dank! – Luke

+0

Am Ende, welche dieser beiden Einstellungen wird verwendet? Könnten Sie ein Beispiel für Autorisierungsserver geben, die OAuth implementieren, und die Art und Weise, wie der Encoder-Bereich verwendet wird? – Pietrko

Verwandte Themen