Skip to content

Commit 30a203e

Browse files
committed
Add Kotlin samples for Jwt Client Authentication
Issue gh-9578
1 parent e51ca79 commit 30a203e

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

docs/manual/src/docs/asciidoc/_includes/servlet/oauth2/oauth2-client.adoc

+51
Original file line numberDiff line numberDiff line change
@@ -1920,6 +1920,32 @@ DefaultAuthorizationCodeTokenResponseClient tokenResponseClient =
19201920
new DefaultAuthorizationCodeTokenResponseClient();
19211921
tokenResponseClient.setRequestEntityConverter(requestEntityConverter);
19221922
----
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+
----
19231949
====
19241950

19251951

@@ -1969,6 +1995,31 @@ DefaultClientCredentialsTokenResponseClient tokenResponseClient =
19691995
new DefaultClientCredentialsTokenResponseClient();
19701996
tokenResponseClient.setRequestEntityConverter(requestEntityConverter);
19711997
----
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+
----
19722023
====
19732024

19742025

0 commit comments

Comments
 (0)