websphere 8.5共有サーバーのserver123にSpringセキュリティアプリケーションがデプロイされた春のMVC 4があります。企業のF5ドメイン名でhttpsアプリケーションとしてアプリケーションにアクセスします。IEのブラウザでhttpsと春のセキュリティでリクエストごとにセッションIDが変更され続けています
セッションIDがすべてのサーブレットリクエストで変更され続けるこの奇妙な問題があります。これは、IE上で無限のリダイレクトループを引き起こします。しかし、これはchromeとfirefoxで動作します。
私はapps/MyApp /がコンテキストルートである以下のように私のアプリケーションを起動します。MainPageはコントローラ要求マッピングのURLですhttps://example.server.com/apps/MyApp/MainPageです。
また、Springリダイレクトのauth url/loginSSOを傍受するUserNamePasswordAuthenticationFilterでSSO認証を設定しました。認証が成功すると、フォワードパス/メインページはIEで失われ、https://example.server.com/apps/MyApp/とhttps://example.server.com/apps/MyApp/loginSSOに繰り返しリダイレクトされます。下はセキュリティ設定の詳細です。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/loginSSO").permitAll();
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/loginSSO")
.successHandler(successHandler())
.and()
.csrf()
.csrfTokenRepository(csrfTokenRepository())
.and()
.addFilterBefore(new CookieFilter(),
ChannelProcessingFilter.class)
.addFilterAfter(new CSRFFilter(), CsrfFilter.class)
.addFilterBefore(authFilter(),
UsernamePasswordAuthenticationFilter.class)
.requiresChannel()
.channelProcessors(
Arrays.<ChannelProcessor> asList(
new InsecureChannelProcessor(),
new SecureChannelProcessor()));
http.portMapper().http(8080).mapsTo(8443).http(80).mapsTo(44)
.http(9080).mapsTo(9443).http(7777).mapsTo(7443);
}
/**
* Auth filter.
*
* @return the auth filter
*/
@Bean
public AuthFilter authFilter() {
AuthFilter authFilter = new AuthFilter();
try {
authFilter
.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(
"/loginSSO"));
authFilter.setAuthenticationManager(authenticationManager());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return authFilter;
}
@Autowired
@Qualifier("customUserDetailsService")
UserDetailsService userDetailsService;
@Bean
public SavedRequestAwareAuthenticationSuccessHandler successHandler() {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("targetUrl");
return successHandler;
}
@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
/**
* Csrf token repository.
*
* @return the csrf token repository
*/
private CsrfTokenRepository csrfTokenRepository() {
HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
repository.setSessionAttributeName("_csrf");
repository.setHeaderName("X-XSRF-TOKEN");
return repository;
}
}
この問題はローカルサーバーでのみ発生し、ローカルホストでは発生しません – Srivatsan
私の最初の推測は古いIEバージョン+企業プロキシの副作用です。 –