1010import org .clokey .global .security .AppleAwareOAuth2AuthorizationRequestResolver ;
1111import org .clokey .global .security .JwtAuthenticationFilter ;
1212import org .clokey .helper .SpringEnvironmentHelper ;
13- import org .springframework .beans .factory .annotation .Autowired ;
1413import org .springframework .beans .factory .annotation .Value ;
1514import org .springframework .context .annotation .Bean ;
1615import 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