Заголовок авторизации отфильтрован CorsJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Заголовок авторизации отфильтрован Cors

Сообщение Anonymous »

Я использую Spring Security 6.3.1, и кажется, что Cors отфильтровывает мой заголовок авторизации. Я убедился, что запрос из моего веб-приложения содержит заголовок, но когда я пытаюсь получить его в своем JwtAuthorizationFilter, заголовок отфильтровывается. Вызов Postman работает по назначению.
Моя конфигурация WebSecurityConfiguration с глобальными настройками cors выглядит следующим образом:
@Configuration
@EnableWebSecurity
public class WebSecurityConfiguration {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf(AbstractHttpConfigurer::disable).authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(HttpMethod.POST, "/diagram/**").authenticated()
.requestMatchers(HttpMethod.PUT, "/diagram/**").authenticated()
.anyRequest().permitAll()).addFilterBefore(jwtAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
return http.build();
}

@Bean
public JwtAuthorizationFilter jwtAuthorizationFilter() {
return new JwtAuthorizationFilter();
}

@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowedHeaders(List.of("*"));
corsConfiguration.addExposedHeader("Authorization");
corsConfiguration.setAllowedOrigins(Arrays.asList("*"));
corsConfiguration.setAllowedMethods(Arrays.asList("*"));
corsConfiguration.setMaxAge(Duration.ofMinutes(10));
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
}

А это мой jwtAuthorizationFilter()
@Component
public class JwtAuthorizationFilter extends OncePerRequestFilter {

@Autowired
private SupabaseAuthService supabaseAuthService;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

String tokenFromRequest = parseJwt(request);
//...
filterChain.doFilter(request, response);

}

private String parseJwt(HttpServletRequest request) {
String headerAuth = request.getHeader("Authorization");
if (StringUtils.hasText(headerAuth) && headerAuth.startsWith("Bearer ")) {
return headerAuth.substring(7);
}
return null;
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ut-by-cors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»