У меня есть приложение для загрузки весны, с аутентификацией Oauth и сервером ресурсов, а также в одном приложении. У меня есть внешний интерфейс на отдельном сервере, из отдельного места. Мой внешний интерфейс приложения не кажется, чтобы продолжить предполетной операцию внутреннего интерфейса, который всегда отвечает с 401. Моя конфигурация выглядит как следующим образом:Весенняя безопасность, OAUTH Cors, ОПЦИИ
// ... annotations
public class OAuthConfig extends WebSecurityConfigurerAdapter {
// ... authencication providers
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/", "/*.html", "layout/**", "/js/**", "/css/**", "/images/**", "/font/**",
"/signup", "/register",
"/oauth/**")
.permitAll()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/oauth/**").permitAll()
;
// @formatter:on
}
// ... beans
}
Обратите внимание, что я должен был добавить исключения для статического контента, а также, так как он, похоже, не работает по-другому, несмотря на любую документацию.
// ... annotations
public class MvcConfig extends WebMvcConfigurerAdapter {
// ... resource resolver, view resolver
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
Я попытался указать более явно, но ничего не удалось, а также:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**").allowedMethods("GET","POST","OPTIONS","DELETE","UPDATE");
registry.addMapping("/register");
registry.addMapping("/signup");
registry.addMapping("/oauth/**").allowedMethods("GET","POST","OPTIONS");
}
//... annotations
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
// ... resource id config
@Override
public void configure(HttpSecurity http) throws Exception {
//@formatter:off
http
.anonymous().disable()
.requestMatchers()
.antMatchers("/api/**")
.and()
.authorizeRequests()
.antMatchers("/api/**").authenticated()
.and()
.exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler());
//@formatter:on
}
}
На данный момент я не могу понять, если я пропустил что-то важное для настройки, чтобы получить CORS поверх конечной точки аутентификации (как и другие части конечных точек API)