我已经构建了一个Spring Boot应用程序,并使用BCryptPasswordEncoder对密码进行编码。我还有一个“数据库和登录”屏幕,所有用户都使用BCryptPasswordEncoder进行了身份验证。
我有一个文件夹“ admin”,“ admin”中的所有内容都必须经过身份验证。我在这个“ admin”包中创建了一个RestController,它依次为我返回了一些数据。
Spring Boot应用程序必须处理登录屏幕中的用户登录以及来自客户端的RESTful调用。
我正在尝试建立一个使用RESTful Web服务的客户端,但是无法通过BCrypt身份验证。
我尝试了各种方法在客户端上实现BCryptPasswordEncoder,但始终会获得“未通过身份验证”,否则它将返回登录屏幕作为JSON响应数据,这当然不是我想要的。
主要的Spring Boot应用程序:
git flow feature finish "feature-name"
我在另一个Spring Boot应用程序(客户端)中拥有这个:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
SecureAuthenticationSuccessHandler secureAuthenticationSuccessHandler;
@Autowired
CustomUserDetailsService customUserDetailsService;
private String publicResources[] = new String[]{"/", "/assets/**", "/images/**", "/webjars/**"};
private String privateResources[] = new String[]{"/admin/**"};
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("restclient").password("restpassword").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers(publicResources).permitAll()
.antMatchers(privateResources).hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.failureUrl("/login?error=true")
.usernameParameter("username")
.passwordParameter("password")
.successHandler(secureAuthenticationSuccessHandler)
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login")
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true)
.and()
.exceptionHandling().accessDeniedHandler(accessDeniedHandler());
}
@Override
public void configure(AuthenticationManagerBuilder builder) throws Exception {
builder.userDetailsService(customUserDetailsService);
}
public AccessDeniedHandler accessDeniedHandler(){
return new CustomAccessDeniedHandler();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(8);
return bCryptPasswordEncoder;
}
@Autowired
public void ConfigureGlobal (AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(passwordEncoder());
}
}