我想在我的Spring启动应用程序中添加第二种身份验证方法(OAuth2)。
到目前为止,我已经实现了本地身份验证(用户名+密码存储在我自己的数据库中),并且运行良好。
@Configuration
@EnableWebSecurity
@Order(1000)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Bean
public static BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// Enable jdbc authentication
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource).passwordEncoder(passwordEncoder());
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/")
.permitAll()
.antMatchers("/welcome")
.hasAnyRole("USER", "ADMIN")
.antMatchers("/getEmployees")
.hasAnyRole("USER", "ADMIN")
.antMatchers("/addNewEmployee")
.hasAnyRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.httpBasic();
http.csrf().disable();
}
}
对于OAuth2,我发现只需要投放 @ EnableOAuth2Sso 和
facebook.app.id=xxx
facebook.app.secret=xxx
以我的申请专有权。
它可以工作,但这会覆盖我的本地身份验证(/登录重定向到fb而不是login.html页面)。
是否有一种(简单的)方法来保留两种身份验证策略?
谢谢!