Skip to content

Commit 3f94a13

Browse files
authored
Merge pull request #268 from CodIN-INU/develop
fix : 공개api (swagger, auth) 에서 토큰 검증요구 에러
2 parents 72a37a0 + bf3a154 commit 3f94a13

4 files changed

Lines changed: 32 additions & 3 deletions

File tree

src/main/java/inu/codin/codin/common/config/SecurityConfig.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import inu.codin.codin.common.dto.PermitAllProperties;
5+
import inu.codin.codin.common.dto.PublicApiProperties;
56
import inu.codin.codin.common.security.filter.ExceptionHandlerFilter;
67
import inu.codin.codin.common.security.filter.JwtAuthenticationFilter;
78
import inu.codin.codin.common.security.service.JwtService;
@@ -57,6 +58,7 @@ public class SecurityConfig {
5758
private final OAuth2LoginFailureHandler oAuth2LoginFailureHandler;
5859
private final CustomOAuth2UserService customOAuth2UserService;
5960
private final PermitAllProperties permitAllProperties;
61+
private final PublicApiProperties publicApiProperties;
6062

6163
private final AppleOAuth2UserService appleOAuth2UserService;
6264
private final ClientRegistrationRepository clientRegistrationRepository;
@@ -81,6 +83,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
8183
.authorizeHttpRequests((authorizeHttpRequests) ->
8284
authorizeHttpRequests
8385
.requestMatchers(permitAllProperties.getUrls().toArray(new String[0])).permitAll()
86+
.requestMatchers(publicApiProperties.getUrls().toArray(new String[0])).permitAll()
8487
.requestMatchers(ADMIN_AUTH_PATHS).hasRole("ADMIN")
8588
.requestMatchers(MANAGER_AUTH_PATHS).hasRole("MANAGER")
8689
.requestMatchers(USER_AUTH_PATHS).hasRole("USER")
@@ -115,7 +118,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
115118
// .httpBasic(Customizer.withDefaults())
116119
// JwtAuthenticationFilter 추가
117120
.addFilterBefore(
118-
new JwtAuthenticationFilter(jwtService, permitAllProperties),
121+
new JwtAuthenticationFilter(jwtService, permitAllProperties, publicApiProperties),
119122
UsernamePasswordAuthenticationFilter.class
120123
)
121124
// 예외 처리 필터 추가
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package inu.codin.codin.common.dto;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
import org.springframework.boot.context.properties.ConfigurationProperties;
6+
import org.springframework.context.annotation.Configuration;
7+
8+
import java.util.List;
9+
10+
@Getter
11+
@Setter
12+
@Configuration
13+
@ConfigurationProperties(prefix = "security.public-api")
14+
public class PublicApiProperties {
15+
private List<String> urls;
16+
}

src/main/java/inu/codin/codin/common/security/filter/JwtAuthenticationFilter.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package inu.codin.codin.common.security.filter;
22

33
import inu.codin.codin.common.dto.PermitAllProperties;
4+
import inu.codin.codin.common.dto.PublicApiProperties;
45
import inu.codin.codin.common.security.service.JwtService;
56
import jakarta.servlet.FilterChain;
67
import jakarta.servlet.ServletException;
@@ -23,6 +24,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
2324

2425
private final JwtService jwtService;
2526
private final PermitAllProperties permitAllProperties;
27+
private final PublicApiProperties publicApiProperties;
2628
private final AntPathMatcher pathMatcher = new AntPathMatcher();
2729

2830
private final String [] SWAGGER_AUTH_PATHS = {
@@ -40,6 +42,14 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
4042
final boolean isPermitAll = permitAllProperties.getUrls().stream()
4143
.anyMatch(url -> pathMatcher.match(url, requestURI));
4244

45+
final boolean isPublicApi = publicApiProperties.getUrls().stream()
46+
.anyMatch(url -> pathMatcher.match(url, requestURI));
47+
48+
if (isPermitAll) {
49+
filterChain.doFilter(request, response);
50+
return;
51+
}
52+
4353
String token = null;
4454
if (Arrays.stream(SWAGGER_AUTH_PATHS).anyMatch(url -> pathMatcher.match(url, requestURI))) {
4555
token = jwtService.getRefreshToken(request);
@@ -53,7 +63,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
5363
} else {
5464
SecurityContextHolder.clearContext();
5565

56-
if (isPermitAll) {
66+
if (isPublicApi) {
5767
filterChain.doFilter(request, response);
5868
return;
5969
}

src/main/resources

0 commit comments

Comments
 (0)