[java-oidc-common] 02/02: Moved setting of remoteJwkSetCache and keyFetchInterval into constructor.

Henri Mikkonen henri.mikkonen at iki.fi
Tue Jun 20 11:38:42 UTC 2023


This is an automated email from the git hooks/post-receive script.

hjmikkon pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=a89112a0403a9d89181f16095125c10d4fdfa4cc

commit a89112a0403a9d89181f16095125c10d4fdfa4cc
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Tue Jun 20 14:34:42 2023 +0300

    Moved setting of remoteJwkSetCache and keyFetchInterval into constructor.
    
    This way we ensure that the remote key set cache is initialized by the time
    the method 'resolveFromSource' runs.
---
 .../impl/ClientInformationCredentialResolver.java  | 57 +++++++++++-----------
 .../impl/ProviderMetadataCredentialResolver.java   | 57 +++++++++++-----------
 .../ClientInformationCredentialResolverTest.java   |  3 +-
 .../ProviderMetadataCredentialResolverTest.java    |  3 +-
 4 files changed, 59 insertions(+), 61 deletions(-)

diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
index 76edac7..9edd372 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
@@ -40,10 +40,10 @@ import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
+import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.Positive;
 import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.component.ComponentSupport;
 import net.shibboleth.shared.component.InitializableComponent;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.StringSupport;
@@ -69,10 +69,35 @@ public class ClientInformationCredentialResolver extends BasicJOSEObjectCredenti
     private boolean isInitialized;
     
     /** The cache for remote JWK key sets. */
-    @NonnullAfterInit private RemoteJwkSetCache remoteJwkSetCache;
+    @NonnullAfterInit private final RemoteJwkSetCache remoteJwkSetCache;
     
     /** The remote key refresh interval. Default value: 30 minutes. */
-    @Positive private Duration keyFetchInterval = Duration.ofMinutes(30);
+    @Positive private final Duration keyFetchInterval;
+
+    /**
+     * Constructor.
+     *
+     * @param jwkSetCache The cache for remote JWK key sets.
+     */
+    public ClientInformationCredentialResolver(
+            @Nonnull final @ParameterName(name="remoteJwkSetCache") RemoteJwkSetCache jwkSetCache) {
+        this(jwkSetCache, Duration.ofMinutes(30));
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param jwkSetCache The cache for remote JWK key sets.
+     * @param interval The remote key refresh interval
+     */
+    public ClientInformationCredentialResolver(
+            @Nonnull final @ParameterName(name="remoteJwkSetCache") RemoteJwkSetCache jwkSetCache,
+            @Nonnull @Positive @ParameterName(name="keyFetchInterval") Duration interval) {
+
+        remoteJwkSetCache = Constraint.isNotNull(jwkSetCache, "The remote JWK set cache cannot be null");
+        Constraint.isFalse(interval == null || interval.isNegative(), "Remote key refresh must be greater than 0");
+        keyFetchInterval = interval;
+    }
     
     /** {@inheritDoc} */
     @Override
@@ -83,39 +108,13 @@ public class ClientInformationCredentialResolver extends BasicJOSEObjectCredenti
     /** {@inheritDoc} */
     @Override
     public void initialize() throws ComponentInitializationException {
-        
-        if (remoteJwkSetCache == null) {
-            throw new ComponentInitializationException("Remote JWK Set Cache can not be null");
-        }
         isInitialized = true;
     }
     
-    /**
-     * Set the remote key refresh interval.
-     * 
-     * @param interval What to set.
-     */
-    public void setKeyFetchInterval(@Positive final Duration interval) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
-        Constraint.isFalse(interval == null || interval.isNegative(), "Remote key refresh must be greater than 0");
-        keyFetchInterval = interval;
-    }
-    
-    /**
-     * Set the cache for remote JWK key sets.
-     * 
-     * @param jwkSetCache What to set.
-     */
-    public void setRemoteJwkSetCache(final RemoteJwkSetCache jwkSetCache) {
-        remoteJwkSetCache = Constraint.isNotNull(jwkSetCache, "The remote JWK set cache cannot be null");
-    }
-
     /** {@inheritDoc} */
     @Override
     protected Iterable<Credential> resolveFromSource(@Nonnull final CriteriaSet criteriaSet) throws ResolverException {
         
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
         Constraint.isNotNull(criteriaSet, "CriteriaSet was null");
 
         if (criteriaSet.contains(ClientInformationCriterion.class)) {
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
index 474230c..5ad2173 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
@@ -35,10 +35,10 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.jwk.RemoteJwkSetCache;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
+import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.Positive;
 import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.component.ComponentSupport;
 import net.shibboleth.shared.component.InitializableComponent;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.StringSupport;
@@ -63,11 +63,36 @@ public class ProviderMetadataCredentialResolver extends BasicJOSEObjectCredentia
     private boolean isInitialized;
     
     /** The cache for remote JWK key sets. */
-    @NonnullAfterInit private RemoteJwkSetCache remoteJwkSetCache;
+    @NonnullAfterInit private final RemoteJwkSetCache remoteJwkSetCache;
     
     /** The remote key refresh interval. Default value: 30 minutes. */
-    @Positive private Duration keyFetchInterval = Duration.ofMinutes(30);
-    
+    @Positive private final Duration keyFetchInterval;
+
+    /**
+     * Constructor.
+     *
+     * @param jwkSetCache The cache for remote JWK key sets.
+     */
+    public ProviderMetadataCredentialResolver(
+            @Nonnull final @ParameterName(name="remoteJwkSetCache") RemoteJwkSetCache jwkSetCache) {
+        this(jwkSetCache, Duration.ofMinutes(30));
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param jwkSetCache The cache for remote JWK key sets.
+     * @param interval The remote key refresh interval
+     */
+    public ProviderMetadataCredentialResolver(
+            @Nonnull final @ParameterName(name="remoteJwkSetCache") RemoteJwkSetCache jwkSetCache,
+            @Nonnull @Positive @ParameterName(name="keyFetchInterval") Duration interval) {
+
+        remoteJwkSetCache = Constraint.isNotNull(jwkSetCache, "The remote JWK set cache cannot be null");
+        Constraint.isFalse(interval == null || interval.isNegative(), "Remote key refresh must be greater than 0");
+        keyFetchInterval = interval;
+    }
+
     /** {@inheritDoc} */
     @Override
     public boolean isInitialized() {
@@ -77,36 +102,12 @@ public class ProviderMetadataCredentialResolver extends BasicJOSEObjectCredentia
     /** {@inheritDoc} */
     @Override
     public void initialize() throws ComponentInitializationException {
-        
-        if (remoteJwkSetCache == null) {
-            throw new ComponentInitializationException("Remote JWK Set Cache can not be null");
-        }
         isInitialized = true;
     }
     
-    /**
-     * Set the remote key refresh interval.
-     * 
-     * @param interval What to set.
-     */
-    public void setKeyFetchInterval(@Positive final Duration interval) {
-        Constraint.isFalse(interval == null || interval.isNegative(), "Remote key refresh must be greater than 0");
-        keyFetchInterval = interval;
-    }
-    
-    /**
-     * Set the cache for remote JWK key sets.
-     * 
-     * @param jwkSetCache What to set.
-     */
-    public void setRemoteJwkSetCache(final RemoteJwkSetCache jwkSetCache) {
-        remoteJwkSetCache = Constraint.isNotNull(jwkSetCache, "The remote JWK set cache cannot be null");
-    }
-
     @Override
     protected Iterable<Credential> resolveFromSource(@Nonnull final CriteriaSet criteriaSet) throws ResolverException {
         
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
         Constraint.isNotNull(criteriaSet, "CriteriaSet was null");
 
         if (criteriaSet.contains(ProviderMetadataCriterion.class)) {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
index 60654f8..7287ee0 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
@@ -57,8 +57,7 @@ public class ClientInformationCredentialResolverTest extends BaseMetadataCredent
 
     @Override
     protected ClientInformationCredentialResolver constructResolver(final RemoteJwkSetCache cache) {
-        resolver = new ClientInformationCredentialResolver();
-        resolver.setRemoteJwkSetCache(cache);
+        resolver = new ClientInformationCredentialResolver(cache);
         return resolver;
     }
 
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
index 880a556..211ac6e 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
@@ -48,8 +48,7 @@ public class ProviderMetadataCredentialResolverTest extends BaseMetadataCredenti
 
     @Override
     protected ProviderMetadataCredentialResolver constructResolver(final RemoteJwkSetCache cache) {
-        resolver = new ProviderMetadataCredentialResolver();
-        resolver.setRemoteJwkSetCache(cache);
+        resolver = new ProviderMetadataCredentialResolver(cache);
         return resolver;
     }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list