Spring Security не работает на Weblogic 12.2.1.2 - PullRequest
0 голосов
/ 28 января 2019

У меня есть веб-приложение, которое использует Spring Security .Он работает на Tomcat , но не на Weblogic 12.2.1.2 .

На Weblogic пользователь не перенаправляется на страницу входа в систему при попытке достичьЗапрещенный URL (например, localhost: 7001 / website / limited / welcome).В Tomcat пользователь корректно перенаправляется на страницу входа в систему.

Я прочитал, что это ошибка из Weblogic 12.1 , и, похоже, она исправлена ​​в Weblogic 12.2.Но я использую Weblogic 12.2.1.2 и описываю ту же проблему.

Я читаю некоторые решения, но мне сложно их понять, поскольку у меня другая конфигурация Spring.

Это мои классы о Spring Security.

Это класс, который расширяет WebSecurityConfigurerAdapter .

        @Configuration
        @EnableWebSecurity
        public class SecurityConfig extends WebSecurityConfigurerAdapter {

            @Autowired
            public void configureGlobalSecurity(AuthenticationManagerBuilder auth) 
            throws Exception {     
                  auth.inMemoryAuthentication()
                  .passwordEncoder(passwordEncoder())
                  .withUser("username1")
                  .password(passwordEncoder()
                  .encode("password1"))
                  .roles("ADMIN");                      
            }            

            @Bean
            public PasswordEncoder passwordEncoder() {
                  BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
                  return passwordEncoder;
           }     

           @Override
           protected void configure(HttpSecurity httpSecurity) throws Exception {

                  httpSecurity.formLogin()
                  .loginPage("/login")
                  .usernameParameter("userId")
                  .passwordParameter("password");

                  httpSecurity.formLogin()
                  .defaultSuccessUrl("/")                 
                  .failureHandler(new CustomAuthenticationFailureHandler())
                  .and()
                  .sessionManagement()  
                  .maximumSessions(1) 
                  .expiredUrl("/login?expired")
                  .maxSessionsPreventsLogin(true);

                  httpSecurity.logout()           
                  .logoutSuccessUrl("/login?logout");

                  httpSecurity.rememberMe()         
                  .rememberMeParameter("rememberMe") 
                  .key("rememberMeKey") 
                  .tokenValiditySeconds(1800);  

                  httpSecurity.exceptionHandling()
                  .accessDeniedPage("/login?accessDenied"); 

                  httpSecurity.authorizeRequests()              
                  .antMatchers("/").permitAll() 
                  .antMatchers("/**/add").access("hasRole('ADMIN')")  
                  .antMatchers("/**/market/**").access("hasRole('USER')");                      

                  httpSecurity.csrf() 
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
           }                 

    }

Это класс, который расширяет AbstractSecurityWebApplicationInitializer .

public class SecurityWebApplicationInitializer 
extends AbstractSecurityWebApplicationInitializer 
implements WebApplicationInitializer {

     @Override
     protected boolean enableHttpSessionEventPublisher() {         
         return true;
     }

}

Кажется, проблема связана с Spring Boot .Когда с Spring Tool Suite я использую мастер Spring Starter Project (Spring boot), я сталкиваюсь с проблемой.Если я не использую Spring Boot, Spring Security работает правильно!

Как мне решить эту проблему?Спасибо

...