[java-oidc-common] branch main updated: Switch provider algorithm lookup strategies to return alg Strings

Phil Smart philip.smart at jisc.ac.uk
Fri Jan 6 10:01:51 UTC 2023


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

philsmart 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=3ca96a81f2012e6ad414b9a8db71112e0cc63fef

The following commit(s) were added to refs/heads/main by this push:
     new 3ca96a8  Switch provider algorithm lookup strategies to return alg Strings
3ca96a8 is described below

commit 3ca96a81f2012e6ad414b9a8db71112e0cc63fef
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Fri Jan 6 10:01:45 2023 +0000

    Switch provider algorithm lookup strategies to return alg Strings
---
 ...viderMetadataDataEncryptionAlgorithmsLookupStrategy.java | 13 +++++--------
 ...adataKeyTransportEncryptionAlgorithmsLookupStrategy.java | 13 +++++--------
 ...rMetadataDataEncryptionAlgorithmsLookupStrategyTest.java | 10 +++++++---
 ...aKeyTransportEncryptionAlgorithmsLookupStrategyTest.java | 13 ++++++++-----
 4 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
index 782f484..b921d34 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
@@ -21,7 +21,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -30,7 +29,6 @@ import org.opensaml.xmlsec.algorithm.AlgorithmRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.nimbusds.jose.EncryptionMethod;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.security.criterion.ProviderMetadataCriterion;
@@ -61,7 +59,7 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategy
      * Can return {@code null} if the metadata does not describe its support algorithms (which is optional).
      */
     @Nonnull 
-    private final Function<OIDCProviderMetadata, List<EncryptionMethod>> providerEncryptionMethodsLookupStrategy;
+    private final Function<OIDCProviderMetadata, List<String>> providerEncryptionMethodsLookupStrategy;
     
     /**
      * Constructor.
@@ -72,7 +70,7 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategy
      */
     public ProviderMetadataDataEncryptionAlgorithmsLookupStrategy(
             @Nonnull @ParameterName(name="providerEncryptionMethodsLookupStrategy")
-            final Function<OIDCProviderMetadata, List<EncryptionMethod>> strategy,
+            final Function<OIDCProviderMetadata, List<String>> strategy,
             @Nullable @ParameterName(name = "AlgorithmRegistry") final AlgorithmRegistry registry){
         super(registry);
         providerEncryptionMethodsLookupStrategy = Constraint.isNotNull(strategy, "The provider key transport "
@@ -87,7 +85,7 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategy
      */
     public ProviderMetadataDataEncryptionAlgorithmsLookupStrategy(
             @Nonnull @ParameterName(name="providerKeyTransportAlgorithmsLookupStrategy")
-            final Function<OIDCProviderMetadata, List<EncryptionMethod>> strategy){
+            final Function<OIDCProviderMetadata, List<String>> strategy){
         super(null);
         providerEncryptionMethodsLookupStrategy = Constraint.isNotNull(strategy, "The provider key transport "
                 + "lookup strategy can not be null");
@@ -105,7 +103,7 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategy
             return super.apply(criteria, includeExcludePredicate);
         }
         
-        final List<EncryptionMethod> dataEncryptionMethods = 
+        final List<String> dataEncryptionMethods = 
                 providerEncryptionMethodsLookupStrategy.apply(metadata);        
         log.trace("Resolved effective data encryption algorithms from provider metadata: {}", dataEncryptionMethods);
         if (dataEncryptionMethods == null) {
@@ -119,8 +117,7 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategy
         log.trace("Resolved supported data encryption algorithms from config: {}", dataEncryptionAlgorithmsSupported); 
         
         final List<String> supportedAndConfiguredDataEncryptionAlgorithms = 
-        findAlgorithmIntersection(dataEncryptionMethods.stream().map(EncryptionMethod::getName)
-                .collect(Collectors.toList()),dataEncryptionAlgorithmsSupported);
+        findAlgorithmIntersection(dataEncryptionMethods,dataEncryptionAlgorithmsSupported);
         
         log.debug("Supported and configured data encryption algorithms: {}", 
                 supportedAndConfiguredDataEncryptionAlgorithms);
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
index bad6243..c5f9a21 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
@@ -21,7 +21,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -30,7 +29,6 @@ import org.opensaml.xmlsec.algorithm.AlgorithmRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.nimbusds.jose.JWEAlgorithm;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.security.criterion.ProviderMetadataCriterion;
@@ -61,7 +59,7 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy
      * Can return {@code null} if the metadata does not describe its supported algorithms (which is optional).
      */
     @Nonnull 
-    private final Function<OIDCProviderMetadata, List<JWEAlgorithm>> providerKeyTransportAlgorithmsLookupStrategy;
+    private final Function<OIDCProviderMetadata, List<String>> providerKeyTransportAlgorithmsLookupStrategy;
     
     /**
      * Constructor.
@@ -72,7 +70,7 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy
      */
     public ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy(
             @Nonnull @ParameterName(name="providerKeyTransportAlgorithmsLookupStrategy")
-            final Function<OIDCProviderMetadata, List<JWEAlgorithm>> strategy,
+            final Function<OIDCProviderMetadata, List<String>> strategy,
             @Nullable @ParameterName(name = "AlgorithmRegistry") final AlgorithmRegistry registry){
         super(registry);
         providerKeyTransportAlgorithmsLookupStrategy = Constraint.isNotNull(strategy, "The provider key transport "
@@ -87,7 +85,7 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy
      */
     public ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy(
             @Nonnull @ParameterName(name="providerKeyTransportAlgorithmsLookupStrategy")
-            final Function<OIDCProviderMetadata, List<JWEAlgorithm>> strategy){
+            final Function<OIDCProviderMetadata, List<String>> strategy){
         super(null);
         providerKeyTransportAlgorithmsLookupStrategy = Constraint.isNotNull(strategy, "The provider key transport "
                 + "lookup strategy can not be null");
@@ -106,7 +104,7 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy
         }
         
         // We populate the parameters for the algorithms the provider has registered in metadata
-        final List<JWEAlgorithm> keyTransportAlgorithms =  
+        final List<String> keyTransportAlgorithms =  
                 providerKeyTransportAlgorithmsLookupStrategy.apply(metadata);      
         log.trace("Resolved effective key transport algorithms from provider metadata: {}", keyTransportAlgorithms);
         if (keyTransportAlgorithms == null) {
@@ -121,8 +119,7 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy
                 keyTransportAlgorithmSupported); 
         
         final List<String> supportedAndConfiguredKeyTransportAlgorithms = 
-                findAlgorithmIntersection(keyTransportAlgorithms.stream().map(JWEAlgorithm::getName)
-                        .collect(Collectors.toList()),keyTransportAlgorithmSupported);
+                findAlgorithmIntersection(keyTransportAlgorithms, keyTransportAlgorithmSupported);
         
         log.debug("Supported and configured key transport algorithms: {}", 
                 supportedAndConfiguredKeyTransportAlgorithms);
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
index 871a916..8411da9 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
@@ -26,6 +26,7 @@ import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 
@@ -37,6 +38,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Predicates;
+import com.nimbusds.jose.EncryptionMethod;
 import com.nimbusds.oauth2.sdk.ParseException;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
@@ -98,12 +100,14 @@ public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest {
                         EncryptionConstants.ALGO_ID_ENC_ALG_A256CBC_HS512, EncryptionConstants.ALGO_ID_ENC_ALG_A192CBC_HS384));
 
         criteria = new CriteriaSet(new JWTEncryptionConfigurationCriterion(List.of(config)));   
+        final OIDCProviderMetadata metadata = OIDCProviderMetadata.parse(readJsonFromFile(GOOD_PROVIDER_CONFIGURATION_INFO));
         criteria.add(
-                new ProviderMetadataCriterion(OIDCProviderMetadata.parse(readJsonFromFile(GOOD_PROVIDER_CONFIGURATION_INFO))));
+                new ProviderMetadataCriterion(metadata));
         
         strategy = 
-                new ProviderMetadataDataEncryptionAlgorithmsLookupStrategy(
-                        OIDCProviderMetadata::getRequestObjectJWEEncs, algorithmRegistry);
+                new ProviderMetadataDataEncryptionAlgorithmsLookupStrategy(prc ->
+                        metadata.getRequestObjectJWEEncs().stream().map(EncryptionMethod::getName)
+                        .collect(Collectors.toList()), algorithmRegistry);
     }
     
     @Test
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
index 7d8ecdd..2fe90f9 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
@@ -26,6 +26,7 @@ import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 
@@ -37,6 +38,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Predicates;
+import com.nimbusds.jose.JWEAlgorithm;
 import com.nimbusds.oauth2.sdk.ParseException;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
@@ -97,13 +99,14 @@ public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest
                 List.of(KeyManagementConstants.ALGO_ID_ALG_AES_128_KW, KeyManagementConstants.ALGO_ID_ALG_RSA_OAEP_256,
                 KeyManagementConstants.ALGO_ID_ALG_ECDH_ES, KeyManagementConstants.ALGO_ID_ALG_RSA_OAEP));
 
-        criteria = new CriteriaSet(new JWTEncryptionConfigurationCriterion(List.of(config)));   
-        criteria.add(
-                new ProviderMetadataCriterion(OIDCProviderMetadata.parse(readJsonFromFile(GOOD_PROVIDER_CONFIGURATION_INFO))));
+        criteria = new CriteriaSet(new JWTEncryptionConfigurationCriterion(List.of(config)));  
+        final OIDCProviderMetadata metadata = OIDCProviderMetadata.parse(readJsonFromFile(GOOD_PROVIDER_CONFIGURATION_INFO));
+        criteria.add(new ProviderMetadataCriterion(metadata));
         
         strategy = 
-                new ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy(
-                        OIDCProviderMetadata::getRequestObjectJWEAlgs, algorithmRegistry);
+                new ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy(prc ->
+                        metadata.getRequestObjectJWEAlgs().stream().map(JWEAlgorithm::getName)
+                        .collect(Collectors.toList()), algorithmRegistry);
     }
     
     @Test

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


More information about the commits mailing list