Попытка сделать простой тест безопасности весенней загрузки. Я могу пройти тест только с устаревшим 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());
}
}





Это зависит от того, что именно вы хотите делать. Если вы просто хотите, чтобы ваш тест прошел и избавился от устаревания, вы можете удалить кодировщик паролей и добавить префикс {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
Однако, если вы хотите использовать эту конфигурацию безопасности в производстве, вам, вероятно, в любом случае следует использовать другой кодировщик.