Spring OAuth: Ressourcenserver mit dem Autorisierungsserver-Back-End

9

Ich möchte zwei unabhängige Dienste entwickeln, einen für die Geschäftsfunktionen und einen für die Benutzerauthentifizierung mit Spring OAuth 2

Nennen wir sie Business-Service und OAuth-Service.

Jetzt möchte ich den Business-Service Delegaten zum OAuth-Service, wenn eine Anfrage nicht authentifiziert ist. Die Client-Anwendung (eine Android-App) sollte a priori nichts über den OAuth-Service wissen, sie sollte nur vom Business-Service mit einer HTTP-Umleitung für nicht authentifizierte Anfragen an diesen delegiert werden. Um genau zu sein, möchte ich, dass meine API-Zielseite einen Link zu Ссылка bereitstellt. Wenn meine Client-App diesem Link folgt, wird sie umgeleitet zum OAuth-Service.

Wenn ich den Business-Service mit @ EnableOAuth2Resource , alle seine Ressourcen sind geschützt und geben eine 401 zurück, wenn ich sie ohne Zugriffstoken einrichte. So weit, ist es gut. Wenn ich ein Zugriffs-Token wie folgt zur Verfügung stelle:

%Vor%

Ich kann auf die Ressource zugreifen. Immer noch gut.

Wenn ich jedoch den Business-Service mit @EnableOAuth2Sso zum Aktivieren der Umleitung zum OAuth-Dienst, verliert es die Fähigkeit, mit einem Zugriffstoken auf die Ressourcen zuzugreifen (die gleiche Einrollung wie oben), es gibt nur a zurück 302 auf der Anmeldeseite Ссылка

Wenn ich beide Annotationen verwende, scheint die @ EnableOAuth2Resource immer "zu gewinnen", da die Authentifizierung funktioniert, aber der Aufruf von Ссылка gibt eine 404 zurück.

Was ist also der richtige Weg, um einen Ressourcenserver zu erstellen, der für nicht authentifizierte Aufrufe an den Authentifizierungsserver delegiert?

    
zersaegen 12.03.2015, 15:39
quelle

1 Antwort

4

Nachdem ich stundenlang herumgefahren bin, habe ich jetzt eine Lösung gefunden.

Der Business Server (Ressourcenserver) sieht jetzt wie folgt aus:

%Vor%

mit zwei Konfigurationen, eine für das SSO:

%Vor%

und eins für die Ressource:

%Vor%



Daraus ergibt sich Folgendes:

%Vor%

gibt

zurück %Vor%



%Vor%

gibt

zurück %Vor%



%Vor%

gibt

zurück %Vor%

So ist mein Business Service gesichert, da ein Ressourcenserver einen 401 für alle Geschäftsressourcen zurückgibt. Der root des Service gilt für alle Clients, damit sie die Login-Beziehung ermitteln können. Wenn sie dieser Beziehung folgen, werden sie zum Autorisierungsserver weitergeleitet

    
zersaegen 12.03.2015, 21:33
quelle