I want to authenticate with JWT for all requests coming to server but there is some endpoint I want to authentication also with OAuth2 with social media website like Facebook, Twitter or Instagram. See the diagram:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
@AllArgsConstructor
public class SecurityConfig {
private final UserDetailsService userDetailsDervice;
private final RsaKeyProperties jwtConfigProperties;
@Bean
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests(
auth -> auth.antMatchers("/api/v1/auth/**").permitAll()
.anyRequest().authenticated())
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
.sessionManagement(session ->
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.formLogin().disable()
.logout().disable();
return http.build();
}
@Bean
@Order(2)
public SecurityFilterChain clientSecurityFilterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.logout().disable()
.oauth2Login();
return http.build();
}