[java-oidfed-common] 01/03: Fix the expiration time calculation for the local response cache container
Codeberg
noreply at shibboleth.net
Fri Oct 9 05:38:47 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-oidfed-common.
View the commit online:
https://codeberg.org/Shibboleth/java-oidfed-common/commit/7563294204bf4ef6da0e4bb71e62ff043c3990b0
commit 7563294204bf4ef6da0e4bb71e62ff043c3990b0
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Oct 9 08:18:29 2026 +0300
Fix the expiration time calculation for the local response cache container
- Take the JWT claims set's expiration into account
---
...busResponseContainerExpirationTimeStrategy.java | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/oidfed-common-impl/src/main/java/net/shibboleth/oidfed/metadata/cache/local/DefaultNimbusResponseContainerExpirationTimeStrategy.java b/oidfed-common-impl/src/main/java/net/shibboleth/oidfed/metadata/cache/local/DefaultNimbusResponseContainerExpirationTimeStrategy.java
index 4765f4e..c6655e8 100644
--- a/oidfed-common-impl/src/main/java/net/shibboleth/oidfed/metadata/cache/local/DefaultNimbusResponseContainerExpirationTimeStrategy.java
+++ b/oidfed-common-impl/src/main/java/net/shibboleth/oidfed/metadata/cache/local/DefaultNimbusResponseContainerExpirationTimeStrategy.java
@@ -14,6 +14,7 @@
package net.shibboleth.oidfed.metadata.cache.local;
+import java.text.ParseException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
@@ -21,12 +22,15 @@ import java.util.List;
import java.util.Optional;
import java.util.function.Function;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
-import com.nimbusds.openid.connect.sdk.federation.config.FederationEntityConfigurationSuccessResponse;
+import org.slf4j.Logger;
import net.shibboleth.oidc.metadata.cache.ExpirationTimeContext;
+import net.shibboleth.oidfed.messaging.impl.AbstractSignedJWTResponse;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Default strategy for fetching expiration time for the Nimbus response container. The expiration instant
@@ -37,6 +41,10 @@ import net.shibboleth.oidc.metadata.cache.ExpirationTimeContext;
public class DefaultNimbusResponseContainerExpirationTimeStrategy
implements Function<ExpirationTimeContext<NimbusResponseContainer>, Instant> {
+ /** Class logger. */
+ @Nonnull
+ private final Logger log = LoggerFactory.getLogger(DefaultNimbusResponseContainerExpirationTimeStrategy.class);
+
/** {@inheritDoc} */
@Nullable public Instant apply(@Nullable final ExpirationTimeContext<NimbusResponseContainer> context) {
if (context == null) {
@@ -48,10 +56,14 @@ public class DefaultNimbusResponseContainerExpirationTimeStrategy
return contextExpiration;
}
final List<Instant> expirations = new ArrayList<>(List.of(contextExpiration, container.getExpirationInstant()));
- if (container.getResponse() instanceof FederationEntityConfigurationSuccessResponse successResponse) {
- Optional.ofNullable(successResponse.getEntityStatement().getClaimsSet().getExpirationTime())
- .map(date -> date.toInstant())
- .ifPresent(instant -> expirations.add(instant));
+ if (container.getResponse() instanceof AbstractSignedJWTResponse response) {
+ try {
+ Optional.ofNullable(response.getJWT().getJWTClaimsSet().getExpirationTime())
+ .map(date -> date.toInstant())
+ .ifPresent(instant -> expirations.add(instant));
+ } catch (final ParseException e) {
+ log.error("Could not parse JWT claims set of {} for fetching its expiration instant", response, e);
+ }
}
return Collections.min(expirations);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list