@@ -1920,6 +1920,32 @@ DefaultAuthorizationCodeTokenResponseClient tokenResponseClient =
1920
1920
new DefaultAuthorizationCodeTokenResponseClient();
1921
1921
tokenResponseClient.setRequestEntityConverter(requestEntityConverter);
1922
1922
----
1923
+
1924
+ .Kotlin
1925
+ [source,kotlin,role="secondary"]
1926
+ ----
1927
+ val jwkResolver: Function<ClientRegistration, JWK> =
1928
+ Function<ClientRegistration, JWK> { clientRegistration ->
1929
+ if (clientRegistration.clientAuthenticationMethod.equals(ClientAuthenticationMethod.PRIVATE_KEY_JWT)) {
1930
+ // Assuming RSA key type
1931
+ var publicKey: RSAPublicKey
1932
+ var privateKey: RSAPrivateKey
1933
+ RSAKey.Builder(publicKey) = //...
1934
+ .privateKey(privateKey) = //...
1935
+ .keyID(UUID.randomUUID().toString())
1936
+ .build()
1937
+ }
1938
+ null
1939
+ }
1940
+
1941
+ val requestEntityConverter = OAuth2AuthorizationCodeGrantRequestEntityConverter()
1942
+ requestEntityConverter.addParametersConverter(
1943
+ NimbusJwtClientAuthenticationParametersConverter(jwkResolver)
1944
+ )
1945
+
1946
+ val tokenResponseClient = DefaultAuthorizationCodeTokenResponseClient()
1947
+ tokenResponseClient.setRequestEntityConverter(requestEntityConverter)
1948
+ ----
1923
1949
====
1924
1950
1925
1951
@@ -1969,6 +1995,31 @@ DefaultClientCredentialsTokenResponseClient tokenResponseClient =
1969
1995
new DefaultClientCredentialsTokenResponseClient();
1970
1996
tokenResponseClient.setRequestEntityConverter(requestEntityConverter);
1971
1997
----
1998
+
1999
+ .Kotlin
2000
+ [source,kotlin,role="secondary"]
2001
+ ----
2002
+ val jwkResolver = Function<ClientRegistration, JWK?> { clientRegistration: ClientRegistration ->
2003
+ if (clientRegistration.clientAuthenticationMethod == ClientAuthenticationMethod.CLIENT_SECRET_JWT) {
2004
+ val secretKey = SecretKeySpec(
2005
+ clientRegistration.clientSecret.toByteArray(StandardCharsets.UTF_8),
2006
+ "HmacSHA256"
2007
+ )
2008
+ OctetSequenceKey.Builder(secretKey)
2009
+ .keyID(UUID.randomUUID().toString())
2010
+ .build()
2011
+ }
2012
+ null
2013
+ }
2014
+
2015
+ val requestEntityConverter = OAuth2ClientCredentialsGrantRequestEntityConverter()
2016
+ requestEntityConverter.addParametersConverter(
2017
+ NimbusJwtClientAuthenticationParametersConverter(jwkResolver)
2018
+ )
2019
+
2020
+ val tokenResponseClient = DefaultClientCredentialsTokenResponseClient()
2021
+ tokenResponseClient.setRequestEntityConverter(requestEntityConverter)
2022
+ ----
1972
2023
====
1973
2024
1974
2025
0 commit comments