Spring OAUTH - anderer Login für Web e REST

9

Hallo Ich habe eine Web-Anwendung mit Spring-Sicherheit gesichert, mit einer Login-Seite. Dies ist meine Sicherheitskonfiguration

%Vor%

Dies funktioniert gut, indem Sie alle meine Webanwendungen sichern.

In der gleichen Anwendung habe ich auch einen Resource / Authorization Server um einige REST API zu schützen.

Einige Ressourcen sind mit einer Autorisierungscode-Berechtigung geschützt. Daher sollte die nicht vertrauenswürdige Mobile App das Zugriffstoken aus meiner Anwendung mit einem Anmeldeformular übernehmen. Ich möchte, dass die Anwendung eine andere Anmeldeseite verwendet, wenn sie versucht, sich von der Mobile App aus anzumelden.

Dies ist meine resourceServer-Konfiguration

%Vor%

also, grantCredentialsConfiguration sollte die Anfragen an das / apilogin-Formular umleiten, aber es wird nicht, ich werde auf die Haupt-Web-App-Login-Seite umgeleitet ... Wie kann es erreicht werden?

BEARBEITEN

Wenn ich mich näher mit den Logs beschäftige, sieht es so aus, als ob ich versuche / oauth / authorize / die normale Sicherheitskette findet statt und bekomme

%Vor%

Es sieht also so aus, als würde man nach einem Handler suchen, um die Anfrage zu verwalten, statt nach / api / apfilogin umzuleiten, findet er Authentication exception und gehe auf die Standard-Login-Seite ... Aber warum bekomme ich das? Ausnahme?

    
besmart 16.05.2017, 12:18
quelle

2 Antworten

0

Haben Sie versucht, den URL-Pfad /apilogin zum

hinzuzufügen? %Vor%

Ich vermute, dass die Anwendung den / apilogin-Zugriff auf die allgemeine Anmeldeseite für die Authentifizierung umleitet, da sie nicht zur Liste der nicht authentifizierten Zugriffe hinzugefügt wird.

    
acchu 24.05.2017 08:54
quelle
0

Es passiert, weil Sie die Reihenfolge der Sicherheitskonfigurationsklassen nicht angegeben haben.

Im Frühjahr sollte der Schutz der Sicherheitsressourcen von spezifisch für generisch erwähnt werden.

Die Klasse SecurityConfiguration ist generischer als grantCredentialsConfiguration . Da beide folgende Ressourcen schützen.

  • SecurityConfiguration schützt /** ( Standard-URL )
  • grantCredentialsConfiguration /api/oauth/**

Da der Auftrag nicht definiert ist, verbirgt die generische Konfiguration von SecurityConfiguration die spezifische Konfiguration nach grantCredentialsConfiguration

Damit diese wie erwartet funktionieren, müssen Sie die Reihenfolge wie folgt definieren:

%Vor%

Hinweis: Da diese Anmeldeseiten nicht von verschiedenen Anwendungen stammen, teilen sie sich den SecurityContextHolder oder den Sicherheitskontext. Wenn Sie sich also von einer Anmeldeseite aus anmelden und dann versuchen, die geschützte Ressource der anderen Seite aufzurufen, werden Sie nicht zur nächsten Anmeldeseite weitergeleitet. Stattdessen erhalten Sie den 403 (abhängig von den Rollen, die auf den verschiedenen Anmeldeseiten zugewiesen sind). Zu einer Zeit kann nur eine Login-Sitzung aufrechterhalten werden.

Hier ist ein Beispiel auf Github

Ссылка

    
11thdimension 24.05.2017 19:04
quelle

Tags und Links