|
20 | 20 | import org.springframework.security.oauth2.core.OAuth2ErrorCodes; |
21 | 21 | import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; |
22 | 22 | import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames; |
| 23 | +import org.springframework.security.oauth2.core.endpoint.PkceParameterNames; |
23 | 24 | import org.springframework.security.oauth2.server.authorization.authentication.OAuth2AuthorizationCodeRequestAuthenticationException; |
24 | 25 | import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; |
25 | 26 | import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository; |
@@ -72,13 +73,18 @@ public Authentication convert(HttpServletRequest request) { |
72 | 73 | String scope = request.getParameter(OAuth2ParameterNames.SCOPE); |
73 | 74 | String redirectUri = request.getParameter(OAuth2ParameterNames.REDIRECT_URI); |
74 | 75 | String clientNonce = request.getParameter(NONCE); |
| 76 | + String codeChallenge = request.getParameter(PkceParameterNames.CODE_CHALLENGE); |
| 77 | + String codeChallengeMethod= request.getParameter(PkceParameterNames.CODE_CHALLENGE_METHOD); |
| 78 | + |
75 | 79 | AuthorizationContext authorizationContext = AuthorizationContext.builder() |
76 | 80 | .requestUri(requestUri) |
77 | 81 | .state(state) |
78 | 82 | .originalRequestURL(originalRequestURL) |
79 | 83 | .redirectUri(redirectUri) |
80 | 84 | .clientNonce(clientNonce) |
81 | 85 | .scope(scope) |
| 86 | + .codeChallenge(codeChallenge) |
| 87 | + .codeChallengeMethod(codeChallengeMethod) |
82 | 88 | .build(); |
83 | 89 |
|
84 | 90 | RegisteredClient registeredClient = registeredClientRepository.findByClientId(clientId); |
@@ -482,10 +488,14 @@ private void cacheAuthorizationRequest(AuthorizationContext authorizationContext |
482 | 488 | if (nonce != null && !nonce.isBlank()) { |
483 | 489 | additionalParameters.put(NONCE, nonce); |
484 | 490 | } |
| 491 | + if (authorizationContext.codeChallenge() != null && !authorizationContext.codeChallenge().isBlank()) { |
| 492 | + additionalParameters.put(PkceParameterNames.CODE_CHALLENGE, authorizationContext.codeChallenge()); |
| 493 | + } |
| 494 | + if (authorizationContext.codeChallengeMethod() != null && !authorizationContext.codeChallengeMethod().isBlank()) { |
| 495 | + additionalParameters.put(PkceParameterNames.CODE_CHALLENGE_METHOD, authorizationContext.codeChallengeMethod()); |
| 496 | + } |
485 | 497 | builder.additionalParameters(additionalParameters); |
486 | 498 |
|
487 | | - |
488 | | - |
489 | 499 | // Build the request |
490 | 500 | OAuth2AuthorizationRequest oAuth2AuthorizationRequest = builder.build(); |
491 | 501 |
|
|
0 commit comments