Spring-Sicherheit OAuth2 - Wie wird das OAuth2Authentication-Objekt verwendet?

8

Ich habe einen OAuth2-Autorisierungsserver, der Benutzerinformationen bereitstellt:

%Vor%

Außerdem habe ich den OAuth2-Client als separate Spring-Boot-Anwendung implementiert.

%Vor%

application.yml

%Vor%

Benutzer authentifiziert erfolgreich:

%Vor%

Ich kann jedoch nicht verstehen, wie das angegebene OAuth2Authentication-Objekt in meiner Anwendung verwendet wird. Es ist fast nutzlos.

Wenn ich versuche, ein Thymeleaf-Sicherheits-Tag zu verwenden

%Vor%

.. die folgende Ausnahme tritt auf:

%Vor%

Standard Spring Security-Methoden isUserInRole() funktioniert auch nicht:

%Vor%

Sollte ich den benutzerdefinierten Thymeleaf-Sicherheitsdialekt und die hasRole () -Methode implementieren? Oder gibt es vielleicht eine einfachere Lösung?

    
Vespin 31.05.2016, 11:25
quelle

1 Antwort

1

Ok, nach viel Graben habe ich eine Lösung gefunden.

Lange Rede kurzer Sinn: ResourceServerTokenServices.loadAuthentication() sollte überschrieben werden, um benutzerdefinierte Principals und / oder Berechtigungen aus der OAuth2-Ressourcenserverantwort zu extrahieren. Hauptlogik gekapselt in extractAuthentication() Methode.

Konfiguration

%Vor%

Service

%Vor%

PS :

Die neue Spring Boot -Version bietet eine flexiblere API. Siehe PrincipalExtractor Schnittstelle. Leider wurde es erst vor 2 Wochen hinzugefügt und wird in der aktuellen stabilen 1.3.5.RELEASE Version nicht unterstützt.

Hoffe, das hilft

    
Vespin 31.05.2016 20:14
quelle