Skip to content

Commit bd0ef06

Browse files
authored
fix: SecurityConfig 수정 (#394)
1 parent 4010c07 commit bd0ef06

1 file changed

Lines changed: 22 additions & 20 deletions

File tree

clokey-api/src/main/java/org/clokey/global/config/security/SecurityConfig.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.clokey.global.security.AppleAwareOAuth2AuthorizationRequestResolver;
1111
import org.clokey.global.security.JwtAuthenticationFilter;
1212
import org.clokey.helper.SpringEnvironmentHelper;
13-
import org.springframework.beans.factory.annotation.Autowired;
1413
import org.springframework.beans.factory.annotation.Value;
1514
import org.springframework.context.annotation.Bean;
1615
import org.springframework.context.annotation.Configuration;
@@ -43,9 +42,6 @@ public class SecurityConfig {
4342
private final CustomOAuth2UserService customOAuth2UserService;
4443
private final OidcLoginSuccessHandler oidcLoginSuccessHandler;
4544

46-
@Autowired(required = false)
47-
private ClientRegistrationRepository clientRegistrationRepository;
48-
4945
@Value("${swagger.username:default}")
5046
private String swaggerUsername;
5147

@@ -58,7 +54,8 @@ private void defaultFilterChain(HttpSecurity http) throws Exception {
5854
.cors(withDefaults())
5955
.csrf(AbstractHttpConfigurer::disable)
6056
.sessionManagement(
61-
session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
57+
session ->
58+
session.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED));
6259
}
6360

6461
@Bean
@@ -85,10 +82,7 @@ public SecurityFilterChain swaggerFilterChain(HttpSecurity http) throws Exceptio
8582

8683
http.securityMatcher("/swagger-ui/**", "/v3/api-docs/**").httpBasic(withDefaults());
8784

88-
http.authorizeHttpRequests(
89-
(springEnvironmentHelper.isDevProfile())
90-
? authorize -> authorize.anyRequest().authenticated()
91-
: authorize -> authorize.anyRequest().permitAll());
85+
http.authorizeHttpRequests(authorize -> authorize.anyRequest().authenticated());
9286

9387
return http.build();
9488
}
@@ -107,7 +101,11 @@ public SecurityFilterChain apiFilterChain(
107101
http.authorizeHttpRequests(
108102
auth ->
109103
auth.requestMatchers(
110-
"/public/**", "/swagger-ui/**", "/v3/api-docs/**")
104+
"/public/**",
105+
"/swagger-ui/**",
106+
"/v3/api-docs/**",
107+
"/oauth2/**",
108+
"/login/oauth2/**")
111109
.permitAll()
112110
.anyRequest()
113111
.authenticated())
@@ -118,12 +116,10 @@ public SecurityFilterChain apiFilterChain(
118116
userInfo.oidcUserService(
119117
customOAuth2UserService))
120118
.successHandler(oidcLoginSuccessHandler);
121-
if (authorizationRequestResolver != null) {
122-
oauth2.authorizationEndpoint(
123-
authorization ->
124-
authorization.authorizationRequestResolver(
125-
authorizationRequestResolver));
126-
}
119+
oauth2.authorizationEndpoint(
120+
a ->
121+
a.authorizationRequestResolver(
122+
authorizationRequestResolver));
127123
})
128124
.addFilterBefore(
129125
jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
@@ -134,19 +130,24 @@ public SecurityFilterChain apiFilterChain(
134130
@Bean
135131
public CorsConfigurationSource corsConfigurationSource() {
136132
CorsConfiguration configuration = new CorsConfiguration();
137-
138133
configuration.setAllowedOriginPatterns(
139134
List.of(
140135
"http://localhost:3000",
141136
"https://dev.clokey.store",
142137
"https://prod.clokey.store"));
143-
144138
configuration.setAllowedMethods(
145139
List.of("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
146140
configuration.setAllowedHeaders(List.of("*"));
147141
configuration.setAllowCredentials(true);
148142

143+
CorsConfiguration appleCallbackConfiguration = new CorsConfiguration();
144+
appleCallbackConfiguration.setAllowedOriginPatterns(List.of("https://appleid.apple.com"));
145+
appleCallbackConfiguration.setAllowedMethods(List.of("POST", "OPTIONS"));
146+
appleCallbackConfiguration.setAllowedHeaders(List.of("*"));
147+
appleCallbackConfiguration.setAllowCredentials(true);
148+
149149
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
150+
source.registerCorsConfiguration("/login/oauth2/code/**", appleCallbackConfiguration);
150151
source.registerCorsConfiguration("/**", configuration);
151152
return source;
152153
}
@@ -157,14 +158,15 @@ public JwtAuthenticationFilter jwtAuthenticationFilter(JwtTokenService jwtTokenS
157158
}
158159

159160
@Bean
160-
public OAuth2AuthorizationRequestResolver oauth2AuthorizationRequestResolver() {
161+
@Profile({"local", "dev", "prod"})
162+
public OAuth2AuthorizationRequestResolver oauth2AuthorizationRequestResolver(
163+
ClientRegistrationRepository clientRegistrationRepository) {
161164
AppleAwareOAuth2AuthorizationRequestResolver resolver =
162165
new AppleAwareOAuth2AuthorizationRequestResolver(
163166
clientRegistrationRepository, "/oauth2/authorization");
164167

165168
resolver.setAuthorizationRequestCustomizer(
166169
OAuth2AuthorizationRequestCustomizers.withPkce());
167-
168170
return resolver;
169171
}
170172
}

0 commit comments

Comments
 (0)