У меня есть приложение, которое работает с аутентификацией OAuth2.0 с включенным SSOAuth. Настройка Http Security выполняется с помощью Cook ie Token Repository. Теперь я хочу создать еще одну конфигурацию безопасности, которая позволит мобильному приложению получать доступ к API, вход в мобильное приложение выполняется аналогично первому, с помощью OAuth2.0, но мобильное приложение не поддерживает файлы cookie, поэтому мне нужно что-то реализовать с JWT. Если я просто реализую внутренний класс в классе Security Config с аутентификацией JWT на основе ответа OAuth2.0, то это будет работать, и каков наилучший способ сделать это.
Моя конфигурация безопасности выглядит вот так
@Configuration
@EnableOAuth2Sso
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@Import(SecurityProblemSupport.class)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private final CorsFilter corsFilter;
private final SecurityProblemSupport problemSupport;
public SecurityConfiguration(CorsFilter corsFilter, SecurityProblemSupport problemSupport) {
this.corsFilter = corsFilter;
this.problemSupport = problemSupport;
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(HttpMethod.OPTIONS, "/**")
.antMatchers("/swagger-ui/index.html")
.antMatchers("/test/**");
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.and()
.addFilterBefore(corsFilter, CsrfFilter.class)
.exceptionHandling()
.authenticationEntryPoint(problemSupport)
.accessDeniedHandler(problemSupport)
.and()
.headers()
.frameOptions()
.disable()
.and()
.authorizeRequests()
.antMatchers("/api/**").authenticated()
.antMatchers("/websocket/tracker").hasAuthority(AuthoritiesConstants.ADMIN)
.antMatchers("/websocket/**").permitAll()
.antMatchers("/management/health").permitAll()
.antMatchers("/management/info").permitAll()
.antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN);
}
/**
* This OAuth2RestTemplate is only used by AuthorizationHeaderUtil that is currently used by TokenRelayRequestInterceptor
*/
@Bean
public OAuth2RestTemplate oAuth2RestTemplate(OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails,
OAuth2ClientContext oAuth2ClientContext) {
return new OAuth2RestTemplate(oAuth2ProtectedResourceDetails, oAuth2ClientContext);
}
}