Skip to content

Commit e6c5ae0

Browse files
authored
[Fix/#384] Apple Login invalid_request 오류 해결 (#385)
* fix: form_post 적용 강제 * update: spotless 적용
1 parent a587810 commit e6c5ae0

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

clokey-api/src/main/java/org/clokey/global/security/AppleAwareOAuth2AuthorizationRequestResolver.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver;
77
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver;
88
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
9+
import org.springframework.web.util.UriComponentsBuilder;
910

1011
@RequiredArgsConstructor
1112
public class AppleAwareOAuth2AuthorizationRequestResolver
@@ -36,9 +37,7 @@ public OAuth2AuthorizationRequest resolve(
3637
return null;
3738
}
3839
return "apple".equals(clientRegistrationId)
39-
? OAuth2AuthorizationRequest.from(authorizationRequest)
40-
.additionalParameters(params -> params.put("response_mode", "form_post"))
41-
.build()
40+
? enforceAppleResponseMode(authorizationRequest)
4241
: authorizationRequest;
4342
}
4443

@@ -55,10 +54,23 @@ private OAuth2AuthorizationRequest customizeIfApple(
5554
}
5655
String requestUri = request.getRequestURI();
5756
if (requestUri != null && requestUri.endsWith("/apple")) {
58-
return OAuth2AuthorizationRequest.from(authorizationRequest)
59-
.additionalParameters(params -> params.put("response_mode", "form_post"))
60-
.build();
57+
return enforceAppleResponseMode(authorizationRequest);
6158
}
6259
return authorizationRequest;
6360
}
61+
62+
private OAuth2AuthorizationRequest enforceAppleResponseMode(
63+
OAuth2AuthorizationRequest authorizationRequest) {
64+
String authorizationRequestUri =
65+
UriComponentsBuilder.fromUriString(
66+
authorizationRequest.getAuthorizationRequestUri())
67+
.replaceQueryParam("response_mode", "form_post")
68+
.build(true)
69+
.toUriString();
70+
71+
return OAuth2AuthorizationRequest.from(authorizationRequest)
72+
.additionalParameters(params -> params.put("response_mode", "form_post"))
73+
.authorizationRequestUri(authorizationRequestUri)
74+
.build();
75+
}
6476
}

0 commit comments

Comments
 (0)