From d233b01d6145b034cbfe316aa050f26122ecf9d4 Mon Sep 17 00:00:00 2001 From: Sergey Beryozkin Date: Mon, 5 Jul 2021 14:24:16 +0100 Subject: [PATCH] Update OidcClient to accept String expires_in values --- .../java/io/quarkus/oidc/client/runtime/OidcClientImpl.java | 6 ++++-- .../quarkus/it/keycloak/KeycloakRealmResourceManager.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientImpl.java b/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientImpl.java index de8fa0f2ec87f..63bf8b9805211 100644 --- a/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientImpl.java +++ b/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientImpl.java @@ -120,9 +120,11 @@ private Tokens emitGrantTokens(HttpResponse resp, boolean refresh) { JsonObject json = resp.bodyAsJsonObject(); final String accessToken = json.getString(oidcConfig.grant.accessTokenProperty); final String refreshToken = json.getString(oidcConfig.grant.refreshTokenProperty); + final Object expiresInValue = json.getValue(oidcConfig.grant.expiresInProperty); Long accessTokenExpiresAt; - Long accessTokenExpiresIn = json.getLong(oidcConfig.grant.expiresInProperty); - if (accessTokenExpiresIn != null) { + if (expiresInValue != null) { + long accessTokenExpiresIn = expiresInValue instanceof Number ? ((Number) expiresInValue).longValue() + : Long.parseLong(expiresInValue.toString()); accessTokenExpiresAt = Instant.now().getEpochSecond() + accessTokenExpiresIn; } else { accessTokenExpiresAt = getExpiresJwtClaim(accessToken); diff --git a/integration-tests/oidc-client-wiremock/src/test/java/io/quarkus/it/keycloak/KeycloakRealmResourceManager.java b/integration-tests/oidc-client-wiremock/src/test/java/io/quarkus/it/keycloak/KeycloakRealmResourceManager.java index d239dc5ef7ba9..a8aef8f8c2f1f 100644 --- a/integration-tests/oidc-client-wiremock/src/test/java/io/quarkus/it/keycloak/KeycloakRealmResourceManager.java +++ b/integration-tests/oidc-client-wiremock/src/test/java/io/quarkus/it/keycloak/KeycloakRealmResourceManager.java @@ -41,7 +41,7 @@ public Map start() { .aResponse() .withHeader("Content-Type", MediaType.APPLICATION_JSON) .withBody( - "{\"accessToken\":\"access_token_n\", \"expiresIn\":4, \"refreshToken\":\"refresh_token_n\"}"))); + "{\"accessToken\":\"access_token_n\", \"expiresIn\":\"4\", \"refreshToken\":\"refresh_token_n\"}"))); server.stubFor(WireMock.post("/tokens") .withRequestBody(matching("grant_type=refresh_token&refresh_token=refresh_token_1"))