2017-11-16 2 views
0

Ich habe ein Problem mit der Spring-Sicherheit oauth 2, zuerst Connexion Ich bekomme meine Token und Refresh-Token, alles ist in Ordnung.OAuth2ClientAuthenticationProcessingFilter wird nicht nach der ersten Authentifizierung aufgerufen.

aber es scheint, das Token wird nie überprüft, wenn es ablaufen keine Refresh-Anfrage gemacht wird, passiert nichts und ich bin immer noch authentifiziert.

Ich debuggte das Problem, und ich bemerkte, dass mein OAuth2ClientAuthenticationProcessingFilter nie nach der ersten Authentifizierung aufgerufen wird.

hier, wie ich diese Filter definieren:

@Bean 
    public OAuth2ClientAuthenticationProcessingFilter oAuth2ClientAuthenticationProcessingFilter(){ 
     OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter("/myApp/**|/api/**"); 
     filter.setRestTemplate(oAuth2RestTemplate); 
     filter.setTokenServices(tokenService); 
     return filter; 
    } 

jede Hilfe wäre willkommen, es ist acouple Stunden auf dieser i bin zu kämpfen

Antwort

0

Sobald ein Benutzer auf Ihre Anwendung authentifiziert wurde (dh die Authentifizierung wird auf SecurityContext gesetzt), sie bleibt authentifiziert, bis die HTTP-Sitzung abgelaufen ist. Es spielt keine Rolle, ob es von OAuth2ClientAuthenticationProcessingFilter oder BasicAuthenticationFilter oder einem anderen Authentifizierungsfilter authentifiziert wurde.

Zum Beispiel: - Wenn Sie den Sitzungsablauf auf 30 min eingestellt haben. Und wenn sich ein Benutzer über einen Browser bei Ihrer Anwendung anmeldet und über die OAuth 2-Authentifizierung für Ihre Anwendung authentifiziert wird. Jetzt wird bei den nächsten Anfragen des Browsers JSESSIONID im Cookie gesetzt und der Server erkennt aus dem Sicherheitskontext, dass die Sitzung bereits authentifiziert ist und keine weitere Authentifizierung verlangt. Wenn der Benutzer nun zum Authentifizierungsserver wechselt und das Token vor Ablauf der Sitzung auf dem Anwendungsserver widerruft, wirkt sich dies nicht auf die Authentifizierung Ihrer Anwendung aus. Und der Benutzer wird in Ihrer Anwendung angemeldet bleiben, bis die Sitzung abgelaufen ist (wegen 30 Minuten Inaktivität oder durch Löschen des Sicherheitskontextes oder möglicherweise anderer Mittel wie Löschen von Cookies usw.).

+0

, die nicht mit meiner Sitzung verknüpft sein sollte, ist mein Token ein 10-Minuten-Token, ich möchte nicht, dass es länger hält. – Seb

+0

aus meiner Sicht die Sitzung ist nur, wo der Token gespeichert ist, sollte es nichts mit Token Leben zu tun haben – Seb

+0

True Sitzung hat nichts mit Token Leben zu tun. Wenn Sie mir Ihren Anwendungsfall mitteilen können, bin ich in einer besseren Position, um sich damit zu befassen. – vsoni

Verwandte Themen