2016-08-01 9 views
3

Ich fand das gleiche Problem und die Lösung here. Aber diese Lösung hat mir nicht geholfen. Das Beispiel erhalten Sie here. Wie Sie sehen können, enthält das Beispiel eine gute Beschreibung für die Abmeldung im Client Winkelteil. Aber es bietet keine Abmeldeverarbeitung auf dem Server-Teil. So überprüfte ich LogoutSuccessHandlerSpring Sicherheit mit AngularJS - Logout funktioniert nicht

authentication.isAuthenticated() == true 

Ich habe versucht, den Einsatz einige Experimente, aber Abmeldung funktioniert nicht. Versucht:

((UsernamePasswordAuthenticationToken) authentication).eraseCredentials(); 

oder

authentication.setAuthenticated(false); 

und .deleteCookies ("JSESSIONID" "XSRF-TOKEN")

 http.httpBasic().and().authorizeRequests() 
       .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll().anyRequest() 
       .authenticated().and().csrf() 
       .csrfTokenRepository(csrfTokenRepository()).and() 
       .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class); 
     http.authorizeRequests().anyRequest().authenticated() 
       .and().logout().logoutSuccessHandler(logoutSuccess).deleteCookies("JSESSIONID", "XSRF-TOKEN") 
       .invalidateHttpSession(true).permitAll(); 

Ergebnis war gleich. Ich hoffe, dass mir jemand mit dem Problem helfen kann. Vielen Dank.

+0

Möglich, dies ist kein Sicherheitsproblem, wie ich dachte. Dies ist ein Problem mit dem Chrom-Handler. Ich weiß nicht, wie es passiert, aber mein Firefox funktioniert korrekt, und IE kann es in guter Weise verarbeiten, aber Chrom hat ein Leck oder Hack (scheint so). Frage ist im Allgemeinen geschlossen. Aber wenn jemand weiß, was in Chrom befestigt werden soll - lass es mich wissen. (Ich habe alle Cookies in Chrome gelöscht und die Daten mit _ ** Strg + Umschalt + Entf ** _ zwischengespeichert - das hilft nicht). – Sergii

+0

Ich entdeckte Unterschied: Chrome Browser enthält in jeder Anfrage Header ** Autorisierung: Basic dXNlcjpwYXNzd29yZA == **. möglich wird es helfen, die richtige Antwort zu bekommen. – Sergii

+0

1up für die Frage –

Antwort

3

Ich bin mir sicher, das ist kein Sicherheitsproblem. Dies ist ein Problem mit dem Chrom-Handler. Ich weiß nicht, wie es passiert, aber mein Firefox funktioniert korrekt, und IE kann es gut verarbeiten.

Ich habe Chrom Einstellungen überprüft und haben neben gefunden: >>Einstellungen Erweiterte Einstellungen anzeigen ... >>Passwörter verwalten >>Auto Log-in Flagge wurde eingeschaltet. Ich habe diese Flagge entfernt. Problem wurde nicht gelöst. Ich habe mein Login in application.yml geändert. Nach dem Neustart Anwendung IE, Firefox weitere Arbeit als (show Startseite \ login \ Logout usw.) akzeptiert, aber Chrome gefragt Login-Passwort in Popup-Fenster (Fenster wie System war), wenn ich nicht tun Legen Sie hier login \ password - ich kann keine Seite in chrome (Whitelabel Error Seite), aber wenn ich in Popup-Fenster meine Anmeldeinformationen - ich habe eine autorisierte Sitzung. Wenn ich die Logout-Berechtigung drücke, verschwindet sie nicht (nach dem erneuten Laden der Seite kann ich nur Details für autorisierte Benutzer sehen).

Also ich denke, die Frage ist im Allgemeinen geschlossen. Aber wenn jemand weiß, was in Chrom befestigt werden soll - lass es mich wissen. (Ich reinigte alle Cookies in Chrom und zwischengespeicherte Daten mit Strg + Shift + Entf - es hilft nicht).

mehr Details Mein Benutzer für die Anwendung hinzufügen letzte Mal war u2. Ich benannte Benutzer in application.yml Datei zu u3 um. Ich benutzte Chrom letztes Mal mit u2, aber Server weiß nichts über Benutzer u2.Nach dem Neustart des Servers habe ich versucht, Homepage mit chrome zu laden -> als ich habe Authentication Request Pop-up-Fenster in Chrom. Server-Protokolle können Sie unten sehen.

2016-08-02 20:30:35.866 INFO 18404 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring FrameworkServlet 'dispatcherServlet' 
2016-08-02 20:30:35.867 INFO 18404 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization started 
2016-08-02 20:30:35.883 INFO 18404 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/css/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/js/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/images/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/**/favicon.ico' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/error' 
2016-08-02 20:30:35.902 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 1 of 13 in additional filter chain; firing Filter: 'WebAsyncManagerIntegrationFilter' 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 2 of 13 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : No HttpSession currently exists 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : No SecurityContext was available from the HttpSession: null. A new one will be created. 
2016-08-02 20:30:35.906 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 3 of 13 in additional filter chain; firing Filter: 'HeaderWriterFilter' 
2016-08-02 20:30:35.906 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match the requestMatcher org.springframework.se[email protected]2583a7b2 
2016-08-02 20:30:35.907 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 4 of 13 in additional filter chain; firing Filter: 'CsrfFilter' 
2016-08-02 20:30:35.925 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 5 of 13 in additional filter chain; firing Filter: '' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 6 of 13 in additional filter chain; firing Filter: 'LogoutFilter' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/logout' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 7 of 13 in additional filter chain; firing Filter: 'BasicAuthenticationFilter' 
2016-08-02 20:30:35.937 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Basic Authentication Authorization header found for user 'u2' 
2016-08-02 20:30:35.939 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.authentication.ProviderManager  : Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider 
2016-08-02 20:30:35.940 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.a.dao.DaoAuthenticationProvider : User 'u2' not found 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Authentication request for failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframewor[email protected]32c6200d 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 
2016-08-02 20:30:35.942 DEBUG 18404 --- [nio-8080-exec-1] s.s.w.c.SecurityContextPersistenceFilter : SecurityContextHolder now cleared, as request processing completed 

Beachten wir nicht Benutzer u2 in dieser Anfrage verwendet haben, aber Sie können in Server-Logs Informationen über diesen Benutzer sehen:

2016-08-02 20:30:35.937 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Basic Authentication Authorization header found for user 'u2' 
2016-08-02 20:30:35.939 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.authentication.ProviderManager  : Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider 
2016-08-02 20:30:35.940 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.a.dao.DaoAuthenticationProvider : User 'u2' not found 

Es scheint, Chrom unerwartetes Verhalten bietet. UND Example funktioniert ohne zusätzliche Änderungen korrekt.

P.S. Lösung für Chrom.

Ich denke jedes Mal, wenn Sie Chrom verwenden müssen Sie inkognito Modus verwenden. In Inkognito-Modus haben Sie keine beliebige Token für die erste Anfrage, Inkognito-Modus erwartetes Verhalten liefert, wie es ohne Chrom sein sollte oder Umgehungen hackt.

+2

up abstimmen für Ihre Forschung –

Verwandte Themen