You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2024/09/19 09:24:50 UTC
(sling-whiteboard) 03/03: oidc-rp: fix token expiration
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit d065d341fe3e3fb356130cf8a1eac49c3886ea56
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Thu Sep 19 11:24:24 2024 +0200
oidc-rp: fix token expiration
---
.../oidc_rp/impl/JcrUserHomeOAuthTokenStore.java | 4 +---
.../oidc_rp/impl/JcrUserHomeOAuthTokenStoreTest.java | 15 +++++++++++++++
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/org.apache.sling.servlets.oidc-rp/src/main/java/org/apache/sling/extensions/oidc_rp/impl/JcrUserHomeOAuthTokenStore.java b/org.apache.sling.servlets.oidc-rp/src/main/java/org/apache/sling/extensions/oidc_rp/impl/JcrUserHomeOAuthTokenStore.java
index b7fd2a02..376c1e25 100644
--- a/org.apache.sling.servlets.oidc-rp/src/main/java/org/apache/sling/extensions/oidc_rp/impl/JcrUserHomeOAuthTokenStore.java
+++ b/org.apache.sling.servlets.oidc-rp/src/main/java/org/apache/sling/extensions/oidc_rp/impl/JcrUserHomeOAuthTokenStore.java
@@ -16,8 +16,6 @@
*/
package org.apache.sling.extensions.oidc_rp.impl;
-import java.time.Instant;
-import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.GregorianCalendar;
@@ -103,7 +101,7 @@ public class JcrUserHomeOAuthTokenStore implements OAuthTokenStore {
ZonedDateTime expiry = null;
long expiresAt = tokens.expiresAt();
if ( expiresAt > 0 ) {
- expiry = ZonedDateTime.ofInstant(Instant.ofEpochMilli(expiresAt), ZoneId.systemDefault());
+ expiry = ZonedDateTime.now().plusSeconds(expiresAt);
}
String accessToken = tokens.accessToken();
diff --git a/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/impl/JcrUserHomeOAuthTokenStoreTest.java b/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/impl/JcrUserHomeOAuthTokenStoreTest.java
index a44f2800..b16b6365 100644
--- a/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/impl/JcrUserHomeOAuthTokenStoreTest.java
+++ b/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/impl/JcrUserHomeOAuthTokenStoreTest.java
@@ -118,6 +118,21 @@ class JcrUserHomeOAuthTokenStoreTest {
.extracting( OAuthToken::getState , OAuthToken::getValue )
.containsExactly( TokenState.VALID, tokens.getAccessToken().getValue() );
}
+
+ @Test
+ void getAccessToken_notYetExpired() throws InterruptedException {
+
+ OIDCTokens tokens = new OIDCTokens(new BearerAccessToken(12, 3600, null), null);
+
+ JcrUserHomeOAuthTokenStore tokenStore = new JcrUserHomeOAuthTokenStore();
+ tokenStore.persistTokens(connection, context.resourceResolver(), Converter.toSlingOAuthTokens(tokens));
+
+ OAuthToken accessToken = tokenStore.getAccessToken(connection, context.resourceResolver());
+ assertThat(accessToken).as("access token")
+ .isNotNull()
+ .extracting( OAuthToken::getState )
+ .isEqualTo( TokenState.VALID);
+ }
@Test
void getAccessToken_expired() throws InterruptedException {