@ -27,6 +27,7 @@ import org.springframework.http.HttpStatus;
@@ -27,6 +27,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest ;
import org.springframework.mock.web.server.MockServerWebExchange ;
import org.springframework.security.oauth2.client.registration.ClientRegistration ;
import org.springframework.security.oauth2.client.registration.ClientSettings ;
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository ;
import org.springframework.security.oauth2.client.registration.TestClientRegistrations ;
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestCustomizers ;
@ -169,6 +170,20 @@ public class DefaultServerOAuth2AuthorizationRequestResolverTests {
@@ -169,6 +170,20 @@ public class DefaultServerOAuth2AuthorizationRequestResolverTests {
assertPkceNotApplied ( request , registration2 ) ;
}
@Test
void resolveWhenRequireProofKeyTrueThenPkceEnabled ( ) {
ClientSettings pkceEnabled = ClientSettings . builder ( ) . requireProofKey ( true ) . build ( ) ;
ClientRegistration clientWithPkceEnabled = TestClientRegistrations . clientRegistration ( )
. clientSettings ( pkceEnabled )
. build ( ) ;
given ( this . clientRegistrationRepository . findByRegistrationId ( any ( ) ) )
. willReturn ( Mono . just ( clientWithPkceEnabled ) ) ;
OAuth2AuthorizationRequest request = resolve (
"/oauth2/authorization/" + clientWithPkceEnabled . getRegistrationId ( ) ) ;
assertPkceApplied ( request , clientWithPkceEnabled ) ;
}
private void assertPkceApplied ( OAuth2AuthorizationRequest authorizationRequest ,
ClientRegistration clientRegistration ) {
assertThat ( authorizationRequest . getAdditionalParameters ( ) ) . containsKey ( PkceParameterNames . CODE_CHALLENGE ) ;