2017-01-01 3 views
1

Meine Web-Client-Anwendung hat verschiedene Menüs wie lesen, löschen, hinzufügen, anzeigen usw. abhängig von den Benutzerrollen. Ich habe verschiedene Bereiche wie Lesen, Löschen, Hinzufügen usw. und zugehörige Rollen, die im WSO2 API Manager konfiguriert sind. Wenn sich ein Benutzer anmeldet, authentifiziere ich den Benutzer über den WSO2 API Manager und erhalte das Token. Wie kann ich alle gültigen Bereiche für dieses Token erhalten, so dass ich dem Benutzer je nach Umfang unterschiedliche Menüs anzeigen kann? Da ich viele Bereiche habe, hoffe ich, eine andere Lösung zu haben, als alle Bereiche bei der Authentifizierung zu passieren? Was ist der beste Ansatz für die Verwaltung der Sichtbarkeit von Menüs/Schaltflächen in Abhängigkeit von Rollen bei Verwendung des WSO2-API-Managers? Soll ich dafür Rollen oder Bereiche verwenden? Wenn ja, wie bekomme ich alle Bereiche/Rollen in meiner Client-Anwendung?Wie bekomme ich alle Bereiche, auf die der Benutzer Zugriff hat in WSO2 API-Manager

Antwort

1

Sie müssen alle Bereiche passieren. Dann gibt die Token-Antwort die Liste der Bereiche zurück, die diesem Token zugeordnet sind.

Hier ist ein schönes Beispiel von this blog post.

Eine News-API hat zwei definierte Bereiche als 'news_read' und 'news_write'. Der Bereich 'news_read' ist den Benutzerrollen 'employee' und 'manager' zugeordnet. Der Bereich 'news_write' ist nur der Rolle 'manager' zugeordnet.

Die API hat zwei Operationen. Ein as/read (GET) und der andere als/write (POST). Die GET-Operation ist dem Bereich 'news_read' zugeordnet, und Die POST-Operation ist dem Bereich 'news_write' zugeordnet.

Es gibt zwei Benutzer namens 'Nuwan' und 'John'. Der Benutzer "nuwan" hat die Rolle "employee" und "john" hat die Rollen "employee" und "manager". Beide Benutzer fordern ein Token für beide Bereiche an.

a) Benutzer 'nuwan' wird ein Token über die/token-API anfordern. Seine Anfrage würde das folgende Format haben.

grant_type = Passwort & username = Nuwan & password = xxxx & scope = news_read news_write

Obwohl 'Nuwan' ein Token für beide Bereiche anfordert, wird er nur ein Token die 'news_read' Umfang Lager gewährt werden seit 'Nuwan' ist nicht in die 'Manager' Rolle. Siehe die Antwort von der/token-API für die obige Anforderung .

{ "Umfang": "news_read", "token_type": "bearer", "expires_in": 3299, "refresh_token": "8579facb65d1d3eba74a395a2e78dd6" "access_token": "eb51eff0b4d85cda1eb1d312c5b6a3b8"}

b) Benutzer 'John' wird nun ein Token wie unten anfordern.

grant_type = Passwort & username = john & password = john123 & scope = news_read news_write

Seit 'John' hat sowohl die 'Arbeitnehmer' und die 'Manager' Rolle, die Token er beide trägt bekommt die angeforderten Bereiche. Siehe die Antwort von der /token-API für die obige Anfrage.

{ "Umfang": "news_read news_write", "token_type": "bearer" "expires_in": 3299, "refresh_token": "4ca244fb321bd555bd3d555df39315" "access_token": "42a377a0101877d1d9e29c5f30857e"}

Das bedeutet, dass 'nuwan' nur auf die GET-Operation der API zugreifen kann, während 'john' auf beide zugreifen kann.

+0

Können wir den Token-Introspektions-Endpunkt nicht dafür verwenden? – farasath

+0

Ich glaube nicht, dass IS in diesem Fall über Scopes weiß. Sie werden von APIM selbst behandelt. – Bee

Verwandte Themen