[java-idp-plugin-oidc-rp] branch main updated: Add more signing parameter resolver tests
Phil Smart
philip.smart at jisc.ac.uk
Fri Feb 10 09:54:26 UTC 2023
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch main
in repository java-idp-plugin-oidc-rp.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-oidc-rp.git;a=commit;h=e1d05d07c0ea3ae49c587fec3595a6d3ef20e8f9
The following commit(s) were added to refs/heads/main by this push:
new e1d05d0 Add more signing parameter resolver tests
e1d05d0 is described below
commit e1d05d07c0ea3ae49c587fec3595a6d3ef20e8f9
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Fri Feb 10 09:54:24 2023 +0000
Add more signing parameter resolver tests
---
...RelyingPartyProxySigningParametersResolver.java | 4 +-
...ingPartyProxySigningParametersResolverTest.java | 54 +++++++++++++++++++++-
2 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolver.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolver.java
index 486aac6..f2bf391 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolver.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolver.java
@@ -49,7 +49,7 @@ import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
/**
* A specialization of {@link BasicSignatureSigningParametersResolver} which supports selecting signing credentials
- * from client secret credential criterion (e.g. from the reyling party configuration) in addition to the configured
+ * from client secret credential criterion (e.g. from the relying party configuration) in addition to the configured
* signing credentials inside the signing configuration (determined by the superclass).
*
* <p>The upstream OP's metadata is also used to filter for those algorithms supported by the OP in addition to
@@ -117,7 +117,7 @@ public class RelyingPartyProxySigningParametersResolver extends BasicSignatureSi
// Get effective signature algorithms from configuration and include/exclude predicate
final List<String> algorithms = getEffectiveSignatureAlgorithms(criteria, includeExcludePredicate);
- log.debug("Resolved effectice signature algorithms from config: '{}'", algorithms);
+ log.debug("Resolved effective signature algorithms from config: '{}'", algorithms);
// Filter by those supported by the upstream OP
final List<String> filteredAlgorithms = filterForProviderSupportedAlgorithms(criteria, algorithms);
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolverTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolverTest.java
index 8117a65..0b9d740 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolverTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/RelyingPartyProxySigningParametersResolverTest.java
@@ -56,9 +56,9 @@ import net.shibboleth.oidc.security.credential.BasicExpiringJWKCredential;
import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
import net.shibboleth.oidc.security.credential.JWKCredential;
import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
+import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
import net.shibboleth.oidc.security.jose.impl.BasicSignatureSigningConfiguration;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
import net.shibboleth.utilities.java.support.resolver.ResolverException;
@@ -236,6 +236,58 @@ public class RelyingPartyProxySigningParametersResolverTest extends AbstractOIDC
assertTrue(params.iterator().next().getSigningCredential().getPrivateKey() instanceof ECPrivateKey);
}
+ @Test
+ public void testResolveFail_AlgorithmExcluded() throws Exception {
+
+ final CriteriaSet criteria = buildCriteria(List.of(SignatureConstants.ALGO_ID_SIGNATURE_HS_256));
+
+ // Create the normal client_secret
+ criteria.add(new ClientSecretCredentialCriterion(
+ new DefaultClientSecretCredential("atestsecret")));
+
+ final BasicSignatureSigningConfiguration config =
+ (BasicSignatureSigningConfiguration)
+ criteria.get(SignatureSigningConfigurationCriterion.class).getConfigurations().get(0);
+
+ // Explicitly exclude the algorithm
+ config.setExcludedAlgorithms(List.of(SignatureConstants.ALGO_ID_SIGNATURE_HS_256));
+
+ final OIDCProviderMetadata metadata =
+ new OIDCProviderMetadata(new Issuer("test"), List.of(SubjectType.PUBLIC), new URI("nowhere"));
+ metadata.setRequestObjectJWSAlgs(List.of(JWSAlgorithm.HS256));
+ criteria.add(new ProviderMetadataCriterion(metadata));
+
+ final Iterable<SignatureSigningParameters> params = resolver.resolve(criteria);
+ assertNotNull(params);
+ assertFalse(params.iterator().hasNext());
+ }
+
+ @Test
+ public void testResolveFail_AlgorithmNotInIncludeList() throws Exception {
+
+ final CriteriaSet criteria = buildCriteria(List.of(SignatureConstants.ALGO_ID_SIGNATURE_HS_256));
+
+ // Create the normal client_secret
+ criteria.add(new ClientSecretCredentialCriterion(
+ new DefaultClientSecretCredential("atestsecret")));
+
+ final BasicSignatureSigningConfiguration config =
+ (BasicSignatureSigningConfiguration)
+ criteria.get(SignatureSigningConfigurationCriterion.class).getConfigurations().get(0);
+
+ // Do not include the algorithm
+ config.setIncludedAlgorithms(List.of(SignatureConstants.ALGO_ID_SIGNATURE_HS_512));
+
+ final OIDCProviderMetadata metadata =
+ new OIDCProviderMetadata(new Issuer("test"), List.of(SubjectType.PUBLIC), new URI("nowhere"));
+ metadata.setRequestObjectJWSAlgs(List.of(JWSAlgorithm.HS256));
+ criteria.add(new ProviderMetadataCriterion(metadata));
+
+ final Iterable<SignatureSigningParameters> params = resolver.resolve(criteria);
+ assertNotNull(params);
+ assertFalse(params.iterator().hasNext());
+ }
+
private CriteriaSet buildCriteria(final List<String> supportedSigningAlgos) {
final CriteriaSet crit = new CriteriaSet();
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list