[java-oidc-common] branch dev/JCOMOIDC-139 updated: JCOMOIDC-138 - Add RequestedClaims to the RelyingParty profile configuration

Phil Smart philip.smart at jisc.ac.uk
Tue Oct 14 13:56:02 UTC 2025


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

philsmart pushed a commit to branch dev/JCOMOIDC-139
in repository java-oidc-common.

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

The following commit(s) were added to refs/heads/dev/JCOMOIDC-139 by this push:
     new e8602f9  JCOMOIDC-138 - Add RequestedClaims to the RelyingParty profile configuration
e8602f9 is described below

commit e8602f981653ce24a0db4f8d5d3a7a6b285ec1c1
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Tue Oct 14 14:56:00 2025 +0100

    JCOMOIDC-138 - Add RequestedClaims to the RelyingParty profile
    configuration
    
     - Add getRequestedClaims to OIDCAuthenticationProfileConfiguration
     - Add requestedClaims lookup strategy implementation to
    DefaultOIDCAuthorizationConfiguration
    
    https://shibboleth.atlassian.net/browse/JCOMOIDC-138
---
 .../OIDCAuthenticationProfileConfiguration.java    | 22 ++++++++++++++--
 .../DefaultOIDCAuthorizationConfiguration.java     | 29 ++++++++++++++++++++++
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
index 8f2b807..538c206 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
@@ -17,6 +17,7 @@ package net.shibboleth.oidc.profile.config;
 import java.security.Principal;
 import java.time.Duration;
 import java.util.Collection;
+import java.util.Map;
 import java.util.function.Function;
 
 import javax.annotation.Nonnull;
@@ -26,7 +27,10 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration;
 import net.shibboleth.shared.annotation.ConfigurationSetting;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /** Generic configuration for an OIDC 1.0 authentication request.*/
 public interface OIDCAuthenticationProfileConfiguration extends OAuth2AuthorizationProfileConfiguration {
@@ -95,7 +99,7 @@ public interface OIDCAuthenticationProfileConfiguration extends OAuth2Authorizat
      */
     @ConfigurationSetting(name="maxAuthenticationAge")
     @Nullable
-    public Duration getMaxAuthenticationAge(@Nullable final ProfileRequestContext profileRequestContext);
+    Duration getMaxAuthenticationAge(@Nullable final ProfileRequestContext profileRequestContext);
     
     /**
      * Get the display parameter to use.
@@ -107,7 +111,21 @@ public interface OIDCAuthenticationProfileConfiguration extends OAuth2Authorizat
      */
     @ConfigurationSetting(name="display")
     @Nullable
-    public String getDisplay(@Nullable final ProfileRequestContext profileRequestContext);
+    String getDisplay(@Nullable final ProfileRequestContext profileRequestContext);
+    
+    
+    /**
+     * Get the requested individual claims to set onto the authentication request.
+     * 
+     * @param profileRequestContext profile request context
+     * 
+     * @return the claims parameter to set on the authentication request.
+     * 
+     * @since 3.4.0
+     */
+    @ConfigurationSetting(name="requestedClaims")
+    @Nullable @NonnullElements @Unmodifiable @NotLive 
+    Map<String,Object> getRequestedClaims(@Nullable final ProfileRequestContext profileRequestContext);
        
 
 }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
index 8dda59c..fe18e38 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
@@ -158,6 +158,11 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
      * being requested.
      */
     @Nonnull private Function<ProfileRequestContext, List<String>> resourceIndicatorsLookupStrategy;
+    
+    /**
+     * Lookup function to supply a JSON map of requested claims.
+     */
+    @Nonnull private Function<ProfileRequestContext, Map<String, Object>> requestedClaimsLookupStrategy;
 
     /**
      * Constructor.
@@ -204,6 +209,7 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
         requireDpopJktPredicate = PredicateSupport.alwaysFalse();
         requirePushedAuthorizationRequestPredicate = PredicateSupport.alwaysFalse();
         resourceIndicatorsLookupStrategy = FunctionSupport.constant(CollectionSupport.emptyList());
+        requestedClaimsLookupStrategy =  FunctionSupport.constant(null);
     }
 
     /** {@inheritDoc} */
@@ -1132,4 +1138,27 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
                     List.copyOf(StringSupport.normalizeStringCollection(resourceIndicators)));
         }
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public Map<String, Object> getRequestedClaims(final ProfileRequestContext profileRequestContext) {
+        final Map<String, Object> requestedClaims = requestedClaimsLookupStrategy.apply(profileRequestContext);
+        if (requestedClaims != null) {
+            return CollectionSupport.copyToMap(requestedClaims);
+        }
+        return CollectionSupport.emptyMap();
+    }
+    
+    /**
+     * Set the lookup strategy used to find the requested claims related to an authentication request. 
+     * 
+     * @param strategy The requestedClaimsLookupStrategy to set.
+     * 
+     * @since 3.4.0
+     */
+    public void setRequestedClaimsLookupStrategy(
+            @Nonnull final Function<ProfileRequestContext, Map<String, Object>> strategy) {
+        requestedClaimsLookupStrategy = Constraint.isNotNull(strategy,
+                "requestedClaimsLookupStrategy can not be null");
+    }
 }

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


More information about the commits mailing list