diff --git a/auth/src/main/java/com/baiyue/auth/config/AuthSecurityConfig.java b/auth/src/main/java/com/baiyue/auth/config/AuthSecurityConfig.java index 31a2e7d6e..7362715cc 100644 --- a/auth/src/main/java/com/baiyue/auth/config/AuthSecurityConfig.java +++ b/auth/src/main/java/com/baiyue/auth/config/AuthSecurityConfig.java @@ -25,6 +25,18 @@ import java.nio.charset.StandardCharsets; @Configuration @EnableConfigurationProperties(AuthSecurityProperties.class) public class AuthSecurityConfig { + static final String[] PUBLIC_AUTH_ENDPOINTS = { + "/api/auth/register", + "/api/auth/login", + "/api/auth/refresh", + "/api/auth/logout", + "/api/auth/impersonations/exchange", + "/actuator/health", + "/v3/api-docs/**", + "/swagger-ui/**", + "/swagger-ui.html" + }; + @Bean PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(12); } @@ -47,8 +59,7 @@ public class AuthSecurityConfig { .exceptionHandling(errors -> errors .authenticationEntryPoint(entryPoint).accessDeniedHandler(deniedHandler)) .authorizeHttpRequests(auth -> auth - .requestMatchers("/api/auth/register", "/api/auth/login", "/api/auth/refresh", "/api/auth/logout", - "/actuator/health", "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll() + .requestMatchers(PUBLIC_AUTH_ENDPOINTS).permitAll() .requestMatchers("/internal/auth/**").permitAll() .anyRequest().authenticated()) .addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class) diff --git a/auth/src/test/java/com/baiyue/auth/config/AuthSecurityConfigTest.java b/auth/src/test/java/com/baiyue/auth/config/AuthSecurityConfigTest.java new file mode 100644 index 000000000..a9a601220 --- /dev/null +++ b/auth/src/test/java/com/baiyue/auth/config/AuthSecurityConfigTest.java @@ -0,0 +1,15 @@ +package com.baiyue.auth.config; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class AuthSecurityConfigTest { + @Test + void permitsAnonymousImpersonationCodeExchange() { + assertTrue(Arrays.asList(AuthSecurityConfig.PUBLIC_AUTH_ENDPOINTS) + .contains("/api/auth/impersonations/exchange")); + } +}