1

У меня есть весенний MVC 4 с весенним программным обеспечением безопасности, развернутым на websphere 8.5. Общий сервер говорит server123. Я обращаюсь к приложению как к https-приложению для корпоративного доменного имени F5.Идентификатор сеанса постоянно меняется для каждого запроса с защитой https и весной в браузере IE

У меня есть эта странная проблема, когда идентификатор сеанса постоянно меняется на каждый запрос сервлета. Это вызывает бесконечный цикл переадресации в IE. Однако это работает на chrome и firefox.

Я вызываю свое приложение, как показано ниже, где приложения/MyApp/является корнем контекста. MainPage - это URL-адрес запроса контроллера, адрес https://example.server.com/apps/MyApp/MainPage.

Я также настроил аутентификацию SSO с помощью UserNamePasswordAuthenticationFilter, которая перехватывает перенаправление auth url/loginSSO. Как только аутентификация будет успешной, прямой путь/MainPage будет потерян в 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; 
} 

}

+0

Эта проблема возникает только на корпоративных серверах, а не на моем localhost – Srivatsan

+0

. Моя первая предпосылка - это старая версия IE + корпоративные прокси-эффекты. –

ответ

-2

Эта проблема была решена. Это была проблема с корневыми конфигурациями контекста приложения в файле application.xml Websphere.

+1

Это неверный ответ. Вы должны развивать больше. Я столкнулся с той же проблемой, и вы не даете никакой информации о том, что вы сделали, чтобы исправить это. – lpratlong

+0

Извините за поздний ответ. Ошибка, возникшая в корневом контексте контекста EAR, не была правильно отображена на веб-странице. Таким образом, корневой контекст jsession cookie неправильно установлен в браузере для поддержания состояния сеанса. После исправления корня контекста на сервере он работал. – Srivatsan