Spring аутентификация безопасности Как избавиться от - PullRequest
0 голосов
/ 20 мая 2018

Попытка сделать простой тест безопасности при весенней загрузке.Я могу пройти тест только с устаревшим NoOpPasswordEncoder в методе globalConfigure () в SpringSecurityConfig.

он работает нормально, но возможно ли избавиться от устаревшего NoOpPasswordEncoder?

    @Configuration
    @EnableWebSecurity
    public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {


        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable().authorizeRequests().anyRequest().fullyAuthenticated()
                    .antMatchers("/").permitAll()
                    .and()
                    .formLogin().defaultSuccessUrl("/", true)
                    .loginPage("/login").permitAll().and().logout().permitAll()
                    .and().httpBasic();

        }

        @SuppressWarnings("deprecated")
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception{
            authBuilder.inMemoryAuthentication()
                    .passwordEncoder(NoOpPasswordEncoder.getInstance())
                    .withUser("user").password("user").roles("USER")
                    .and()
                    .withUser("admin").password("admin").roles("USER", "ADMIN");
        }
    }


Testing spring security

@RunWith(SpringJUnit4ClassRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
public class SpringSecurityConfigTest {


    @Autowired
    MockMvc mockMvc;

    @Test
    public void userIsAuthenticatedTest() throws Exception {
        mockMvc.perform(formLogin().user("admin").password("admin"))
                .andExpect(authenticated());
    }
}

1 Ответ

0 голосов
/ 20 мая 2018

Зависит от того, что именно вы хотите сделать.Если вы просто хотите, чтобы ваш тест прошел и избавился от устаревания, вы можете удалить кодировщик паролей и добавить префикс {noop} к паролям в вашем методе configureGlobal:

@Autowired
public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception {
    authBuilder.inMemoryAuthentication()
        .withUser("user").password("{noop}user").roles("USER")
        .and()
        .withUser("admin").password("{noop}admin").roles("USER", "ADMIN");
}

Spring Security 5 измененкодировщик паролей по умолчанию - кодировщик паролей , который использует префикс в фигурных скобках для определения, какой кодировщик паролей использовать, s.https://docs.spring.io/spring-security/site/docs/5.0.5.RELEASE/reference/htmlsingle/#pe-dpe-format

Однако, если вы хотите использовать эту конфигурацию безопасности в рабочей среде, вам, вероятно, все равно следует использовать другой кодировщик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...