[java-idp-oidc] branch main updated: JOIDC-61 - Support metadata policies in the dyn. reg. profile configuration

Henri Mikkonen henri.mikkonen at iki.fi
Fri Mar 4 14:05:03 UTC 2022


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

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

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

The following commit(s) were added to refs/heads/main by this push:
     new cee2aaad JOIDC-61 - Support metadata policies in the dyn. reg. profile configuration
cee2aaad is described below

commit cee2aaada2139579aa306e72da21475c5a4b0790
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Mar 4 16:03:16 2022 +0200

    JOIDC-61 - Support metadata policies in the dyn. reg. profile configuration
    
    https://shibboleth.atlassian.net/browse/JOIDC-61
    
    Populate OIDCClientRegistrationMetadataPolicyContext.enforcedMetadata also when
    metadata policy has not been configured for the profile (or in the access token).
---
 .../impl/ValidateRegistrationRequestMetadata.java  | 26 +++++++++++-----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
index ebd18c00..6bd7f14e 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
@@ -40,7 +40,6 @@ import net.shibboleth.idp.plugin.oidc.op.messaging.context.OIDCClientRegistratio
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.metadata.policy.impl.DefaultMetadataPolicyEnforcer;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.collection.Pair;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -57,20 +56,20 @@ public class ValidateRegistrationRequestMetadata extends AbstractProfileAction {
     private final Logger log = LoggerFactory.getLogger(ValidateRegistrationRequestMetadata.class);
     
     /** Strategy that will return {@link OIDCClientRegistrationMetadataPolicyContext}. */
-    @NonnullAfterInit private Function<MessageContext, OIDCClientRegistrationMetadataPolicyContext>
+    @Nonnull private Function<MessageContext, OIDCClientRegistrationMetadataPolicyContext>
         registrationMetadataPolicyContextLookupStrategy;
     
     /** Function used for enforcing the metadata policy. */
-    @NonnullAfterInit private Function<Pair<Object, MetadataPolicy>, Pair<Object, Boolean>> metadataPolicyEnforcer;
+    @Nonnull private Function<Pair<Object, MetadataPolicy>, Pair<Object, Boolean>> metadataPolicyEnforcer;
 
     /** The OIDCClientRegistrationRequest to validate. */
     @Nullable private OIDCClientRegistrationRequest request;
     
     /** The metadata policy context to operate on. */
-    private OIDCClientRegistrationMetadataPolicyContext registrationMetadataPolicyContext;
+    @Nullable private OIDCClientRegistrationMetadataPolicyContext registrationMetadataPolicyContext;
 
     /** The metadata policy used for validation. */
-    private Map<String, MetadataPolicy> metadataPolicy;   
+    @Nullable private Map<String, MetadataPolicy> metadataPolicy;
     
     /**
      * Constructor.
@@ -138,10 +137,6 @@ public class ValidateRegistrationRequestMetadata extends AbstractProfileAction {
             return false;                        
         }
         metadataPolicy = registrationMetadataPolicyContext.getMetadataPolicy();
-        if (metadataPolicy == null || metadataPolicy.isEmpty()) {
-            log.debug("{} No metadata policy found, nothing to do", getLogPrefix());
-            return false;
-        }
         
         return true;
     }
@@ -149,16 +144,22 @@ public class ValidateRegistrationRequestMetadata extends AbstractProfileAction {
     /** {@inheritDoc} */
     @Override
     protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
-        log.debug("{} Metadata policy to be validated: {}", getLogPrefix(), metadataPolicy);
+        if (metadataPolicy == null || metadataPolicy.isEmpty()) {
+            log.debug("{} No metadata policy found, setting the request as policy enforced", getLogPrefix());
+            registrationMetadataPolicyContext.setPolicyEnforcedMetadata(request.getOIDCClientMetadata());
+            return;
+        }
+        log.debug("{} Metadata policy used for the request validation: {}", getLogPrefix(), metadataPolicy);
+
         boolean compliant = true;
 
         final JSONObject requestMetadata = request.getOIDCClientMetadata().toJSONObject();
 
         for (final String claim : metadataPolicy.keySet()) {
-            log.trace("{} Analysing claim {}", getLogPrefix(), claim);
             final MetadataPolicy policy = metadataPolicy.get(claim);
             final Object value = requestMetadata.get(claim);
-            log.debug("{} The claim {} set in policy included in the request", getLogPrefix(), claim);
+            log.debug("{} The claim {} set in policy included in the request: {}", getLogPrefix(), claim,
+                    value == null);
             final Pair<Object, MetadataPolicy> candidate = new Pair<>(value, policy);
             final Pair<Object, Boolean> result = metadataPolicyEnforcer.apply(candidate);
                 
@@ -167,7 +168,6 @@ public class ValidateRegistrationRequestMetadata extends AbstractProfileAction {
                 compliant = false;
             } else {
                 log.trace("{} validation result is OK for claim {}", getLogPrefix(), claim);
-                log.trace("{} policy {} value {} result {}", getLogPrefix(), policy, value, result.getFirst());
                 requestMetadata.put(claim, result.getFirst());
             }
         }

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


More information about the commits mailing list