[java-oidc-common] branch main updated: JCOMOIDC-96 - Support custom/additional metadata policy operators
Henri Mikkonen
henri.mikkonen at iki.fi
Fri Jan 26 08:44:37 UTC 2024
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=3c8a5b69f50519159d308768ffc0a7004ce08d51
The following commit(s) were added to refs/heads/main by this push:
new 3c8a5b6 JCOMOIDC-96 - Support custom/additional metadata policy operators
3c8a5b6 is described below
commit 3c8a5b69f50519159d308768ffc0a7004ce08d51
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Jan 26 10:43:40 2024 +0200
JCOMOIDC-96 - Support custom/additional metadata policy operators
https://shibboleth.atlassian.net/browse/JCOMOIDC-96
Wire custom operators to unregistered client policies. Fine tuning and improved testing.
---
.../oidc/metadata/policy/UnregisteredClientPolicy.java | 1 +
.../policy/impl/DefaultMetadataPolicyEnforcer.java | 15 ++++++++++-----
.../policy/impl/DefaultMetadataPolicyEnforcerTest.java | 10 ++++++++++
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/UnregisteredClientPolicy.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/UnregisteredClientPolicy.java
index eca4e6f..e719abc 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/UnregisteredClientPolicy.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/UnregisteredClientPolicy.java
@@ -42,6 +42,7 @@ public class UnregisteredClientPolicy extends MetadataPolicy {
setSubsetOfValues(metadataPolicy.getSubsetOfValues());
setSupersetOfValues(metadataPolicy.getSupersetOfValues());
setValue(metadataPolicy.getValue());
+ metadataPolicy.getCustomOperators().forEach((k, v) -> setCustomOperator(k, v));
}
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
index d5ce8d1..5d96c1f 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
@@ -122,11 +122,16 @@ public class DefaultMetadataPolicyEnforcer extends AbstractInitializableComponen
@Nonnull protected Pair<Object, Boolean> applyCustomOperators(@Nullable final Object initialResult,
@Nonnull final MetadataPolicy policy) {
Object result = initialResult;
- for (final String customOperator : customOperators.keySet()) {
- try {
- result = customOperators.get(customOperator).apply(result, policy);
- } catch (final ConstraintViolationException e) {
- log.debug("The custom operator {} did not accept the value {}", customOperator, result);
+ for (final String customOperator : policy.getCustomOperators().keySet()) {
+ if (customOperators.containsKey(customOperator)) {
+ try {
+ result = customOperators.get(customOperator).apply(result, policy);
+ } catch (final ConstraintViolationException e) {
+ log.debug("The custom operator {} did not accept the value {}", customOperator, result, e);
+ return new Pair<>(result, Boolean.FALSE);
+ }
+ } else {
+ log.warn("The custom operator {} is not configured for this enforcer", customOperator);
return new Pair<>(result, Boolean.FALSE);
}
}
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
index a1fec01..86ec593 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
@@ -523,6 +523,16 @@ public class DefaultMetadataPolicyEnforcerTest {
new MetadataPolicy.Builder().withCustomOperator("customOperator", "mockId").build()));
}
+ @Test
+ public void apply_whenCustomOperatorNotFound_resultIsFalse() {
+ final String candidate = "expectdValue";
+ CustomMetadataPolicyOperator customOperator = Mockito.mock(CustomMetadataPolicyOperator.class);
+ Mockito.doThrow(ConstraintViolationException.class).when(customOperator).apply(Mockito.any(), Mockito.any());
+ applier.setCustomMetadataPolicyOperators(CollectionSupport.singletonMap("customOperator", customOperator));
+ assertResultFalse(applier.apply(candidate,
+ new MetadataPolicy.Builder().withCustomOperator("nonExistingOperator", "mockId").build()));
+ }
+
public static void assertResultEquals(final Pair<Object, Boolean> pair, final Object expected) {
final Boolean flag = pair.getSecond();
Assert.assertTrue(flag != null && flag);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list