[java-oidc-common] branch dev/JCOMOIDC-41 updated: Reposition credential resolvers under BasicJOSEObjectCredentialResolver
Phil Smart
philip.smart at jisc.ac.uk
Thu Jul 14 10:30:02 UTC 2022
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch dev/JCOMOIDC-41
in repository java-oidc-common.
View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=18279b6234a0027c78bba16ebc61ed12d6627b71
The following commit(s) were added to refs/heads/dev/JCOMOIDC-41 by this push:
new 18279b6 Reposition credential resolvers under BasicJOSEObjectCredentialResolver
18279b6 is described below
commit 18279b6234a0027c78bba16ebc61ed12d6627b71
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Thu Jul 14 11:29:57 2022 +0100
Reposition credential resolvers under BasicJOSEObjectCredentialResolver
---
.../impl/BasicJOSEObjectCredentialResolver.java | 20 ++++++++------------
.../credential/impl/CriterionCredentialResolver.java | 3 +--
.../impl/ProviderMetadataCredentialResolver.java | 4 ++--
.../shibboleth/oidc/security/impl/JWTDecrypter.java | 15 ++++++++++-----
4 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
index c3690c4..f9a13d9 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
@@ -7,6 +7,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.security.credential.Credential;
+import org.opensaml.security.credential.impl.AbstractCriteriaFilteringCredentialResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,24 +32,18 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
* A basic implementation of {@link JOSEObjectCredentialResolver}.
*
*/
-public class BasicJOSEObjectCredentialResolver implements JOSEObjectCredentialResolver {
- // TODO support auto-magical filtering ala OpenSAML AbstractCriteriaFilteringCredentialResolver?
- // It's impl, so would have to copy or refactor to common library or promote to API.
+public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFilteringCredentialResolver
+ implements JOSEObjectCredentialResolver {
+ // TODO AbstractCriteriaFilteringCredentialResolver It's impl, so would have to copy or refactor to
+ // common library or promote to API.
/** Logger. */
private final Logger log = LoggerFactory.getLogger(BasicJOSEObjectCredentialResolver.class);
- /** {@inheritDoc} */
- @Nullable public Credential resolveSingle(@Nullable final CriteriaSet criteriaSet) throws ResolverException {
- final Iterable<Credential> creds = resolve(criteriaSet);
- if (creds.iterator().hasNext()) {
- return creds.iterator().next();
- }
- return null;
- }
@Override
- @Nonnull @NonnullElements public Iterable<Credential> resolve(@Nullable final CriteriaSet criteriaSet) throws ResolverException {
+ @Nonnull @NonnullElements protected Iterable<Credential> resolveFromSource(
+ @Nullable final CriteriaSet criteriaSet) throws ResolverException {
JOSEObjectCriterion joseObjectCriteria = null;
if (criteriaSet != null) {
joseObjectCriteria = criteriaSet.get(JOSEObjectCriterion.class);
@@ -146,5 +141,6 @@ public class BasicJOSEObjectCredentialResolver implements JOSEObjectCredentialRe
}
return credential;
}
+
}
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CriterionCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CriterionCredentialResolver.java
index e86bdcb..ca790a6 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CriterionCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CriterionCredentialResolver.java
@@ -42,8 +42,7 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
*/
//TODO Docs
//TODO Algorithm filters?
-public class CriterionCredentialResolver extends AbstractCriteriaFilteringCredentialResolver
- implements JOSEObjectCredentialResolver {
+public class CriterionCredentialResolver extends BasicJOSEObjectCredentialResolver {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(CriterionCredentialResolver.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 da0f8ff..ec50a34 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
@@ -57,8 +57,8 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
//TODO Docs
//TODO Algorithm filters?
-public class ProviderMetadataCredentialResolver extends AbstractCriteriaFilteringCredentialResolver
- implements InitializableComponent, JOSEObjectCredentialResolver {
+public class ProviderMetadataCredentialResolver extends BasicJOSEObjectCredentialResolver
+ implements InitializableComponent {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(ProviderMetadataCredentialResolver.class);
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTDecrypter.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTDecrypter.java
index 853a016..d2fe1dd 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTDecrypter.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTDecrypter.java
@@ -64,6 +64,7 @@ import com.nimbusds.jwt.JWTParser;
import net.shibboleth.oidc.security.JWTDecryptionParameters;
import net.shibboleth.oidc.security.credential.JWKCredential;
import net.shibboleth.oidc.security.credential.impl.JWKEncryptionCredentialContext;
+import net.shibboleth.oidc.security.criterion.JOSEObjectCriterion;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
import net.shibboleth.utilities.java.support.resolver.Criterion;
@@ -72,7 +73,7 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
/**
* Supports decryption of encrypted JSON Web Tokens using the JSON Web Encryption standard.
* The {@link EncryptedJWT} will be decrypted in-place, with its {@link State} changing to {@link State#DECRYPTED}
- * on successful decryption. Any error will throw a {@link DecryptionException}.
+ * on successful decryption. Any error that occurs decrypting the JWT will throw an {@link DecryptionException}.
*
* <p>A decrypter should be created for each new decryption operation.</p>
*/
@@ -180,7 +181,8 @@ public class JWTDecrypter {
throw new DecryptionException("Decryption can not be attempted, KEK resolver is not available");
}
- final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION)));
+ final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION),
+ new JOSEObjectCriterion(encryptedObject)));
try {
for (final Credential cred : params.getKEKCredentialResolver().resolve(criteria)) {
@@ -225,7 +227,8 @@ public class JWTDecrypter {
throw new DecryptionException("Decryption can not be attempted, KEK resolver is not available");
}
- final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION)));
+ final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION),
+ new JOSEObjectCriterion(encryptedObject)));
try {
for (final Credential cred : params.getKEKCredentialResolver().resolve(criteria)) {
@@ -270,7 +273,8 @@ public class JWTDecrypter {
throw new DecryptionException("Decryption can not be attempted, KEK resolver is not available");
}
- final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION)));
+ final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION),
+ new JOSEObjectCriterion(encryptedObject)));
try {
for (final Credential cred : params.getKEKCredentialResolver().resolve(criteria)) {
@@ -316,7 +320,8 @@ public class JWTDecrypter {
throw new DecryptionException("Decryption can not be attempted, CEK resolver is not available");
}
- final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION)));
+ final CriteriaSet criteria = buildCriteria(List.of(new UsageCriterion(UsageType.ENCRYPTION),
+ new JOSEObjectCriterion(encryptedObject)));
try {
for (final Credential cred : params.getContentEncryptionKeyCredentialResolver().resolve(criteria)) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list