Spring security oauth2 - erste benutzerdefinierte Daten von OAuth2 AUFTRAGGEBER

Ich habe eine Website mit Spring security und Benutzer (Benutzername & Passwort) und standard-Formular-Authentifizierung. Ich Erlaube Benutzern das anlegen einer client-Id und client-secret Zusammenhang mit Ihrem Konto für die Verwendung mit einem OAuth2 gesichert-rest-API.

Verwende ich eine separate client-id & client-Geheimnis für die API und nicht Benutzername und Passwort ein, so dass die Benutzer Ihr Kennwort ändern können usw., ohne die API-Anmeldeinformationen, bestimmte Bereiche deaktivieren des API-Zugriffs etc.

Ich benutze spring-security-oauth2 (provider) zur Sicherung des rest-API und ich habe zugelassen, dass ein client-Anmeldeinformationen fließen. Ich habe setup die client-Authentifizierung für api, so dass die client-id und secret prüfen.

Aus einer separaten Anwendung verwende ich die client-id und client secret zu retreive ein access token und starten es mit der api. Zum größten Teil benutze ich simple @PreAuthorize-Ausdrücke in der Regel auf Basis einer client-Rollen und-Umfang und diese ordnungsgemäß angezeigt.

Alle oben scheint gut zu funktionieren

Aber... ich habe ein paar API-Endpunkte jetzt aber wo muss ich implementieren, einige der mehr komplexen Regeln basierend auf einige details der zugrunde liegenden Nutzer - in diesem Fall der Benutzer, generiert die client-id und secret.

Als einfaches Beispiel betrachten wir eine messaging-Anwendung, wo ich einen Endpunkt, ermöglicht es Benutzern erlaubt, eine neue "Nachricht" von einem bestimmten Typ, variieren kann. Ich habe eine Tabelle der zulässigen Empfänger für jeden einzelnen Benutzer und jeden Typ, und ich möchte, um zu überprüfen, dass die Empfänger der gesendeten Nachricht übereinstimmen, die zulässigen Empfänger für den Typ. (Benutzer dürfen Empfänger von Daten ist in der Regel nicht groß, und nur selten Veränderungen, so bin ich glücklich, speichern Sie eine Kopie der bei der Generierung einer access-token)

Bekomme ich den AUFTRAGGEBER auf diese Endpunkte und ich sehe es ist eine Instanz der OAuth2Authentication mit:

  • userAuthentication - null - Das scheint zumutbar für client-Anmeldeinformationen fließen.
  • clientAuthentication aufgefüllt und authorizationParameters enthält die grant-geben und client_id

Ich nehme an, ich könnte die client-id aus clientAuthentication.authorizationParameters nachschlagen der Benutzer und die details, die ich benötigen, aber das wären ein paar Abfragen jeder api-Aufruf, die nicht scheint Sinn zu machen.

Ich würde vermuten, es ist ein schöner Ort/Weg im Frühjahr OAuth2 libs, die während der Gewährung der access-token, das könnte ich fügen Sie einige zusätzliche details, so dass später konnte ich Sie aus der OAuth2Authentication (Haupt -) Objekt (oder etwas, das reicht?)

Alternativ gibt es einen besseren Ansatz, um eine solche Ausgabe?

Thx!!!

  • Haben Sie sah von JWT (JSON web token)? Es ist ziemlich viel ein token, das hat alle nützlichen Infos drin.
InformationsquelleAutor Mark Doyle | 2013-04-23
Schreibe einen Kommentar