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 {