[java-oidc-common] 17/20: JCOMOIDC-148 - Add AttributeExtractionStrategy to OIDCSSORelyingPartyConfiguration

Codeberg noreply at shibboleth.net
Tue Feb 17 20:14:52 UTC 2026


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

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

View the commit online:
https://codeberg.org/Shibboleth/java-oidc-common/commit/6800f3957543c93df5c179bd4283f2d8c893d4d0

commit 6800f3957543c93df5c179bd4283f2d8c893d4d0
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Thu Nov 27 15:19:37 2025 +0000

    JCOMOIDC-148 - Add AttributeExtractionStrategy to
    OIDCSSORelyingPartyConfiguration
    
     - Add implementation to the parent AbstractOIDCSSOConfiguration and
    remove from the child implementations
    
    https://shibboleth.atlassian.net/browse/JCOMOIDC-148
---
 .../config/impl/AbstractOIDCSSOConfiguration.java  | 40 +++++++++++++++++++++-
 .../DefaultOIDCAuthorizationConfiguration.java     | 38 --------------------
 .../impl/DefaultOAuth2TokenConfiguration.java      | 37 --------------------
 3 files changed, 39 insertions(+), 76 deletions(-)

diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
index 40256873..47f5d686 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
@@ -29,6 +29,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.oidc.profile.config.OIDCSSOProviderConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCSSORelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
@@ -109,7 +110,11 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
     @Nonnull private Predicate<ProfileRequestContext> strictScopeValidationPredicate;
     
     /** Lookup function for attribute resolution principal. */
-    @Nonnull Function<ProfileRequestContext,String> attributeResolutionPrincipalLookupStrategy;
+    @Nonnull Function<ProfileRequestContext,String> attributeResolutionPrincipalLookupStrategy;    
+    
+    /** Lookup function for attribute extraction strategy. */
+    @Nonnull Function<ProfileRequestContext,Function<ProfileRequestContext,Collection<IdPAttribute>>>
+    attributeExtractionStrategyLookupStrategy;
 
     /**
      * Creates a new configuration instance.
@@ -143,6 +148,7 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
         alwaysIssueBearerAccessTokenPredicate = PredicateSupport.alwaysFalse();
         strictScopeValidationPredicate = PredicateSupport.alwaysFalse();        
         attributeResolutionPrincipalLookupStrategy = FunctionSupport.constant(null);
+        attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(null);
     }
     
     /** {@inheritDoc} */
@@ -733,5 +739,37 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
         attributeResolutionPrincipalLookupStrategy =
                 Constraint.isNotNull(strategy, "Resolution principal lookup strategy cannot be null");
     }
+    
+    /** {@inheritDoc} */
+    @Override
+    public Function<ProfileRequestContext, Collection<IdPAttribute>> getAttributeExtractionStrategy(
+            @Nullable final ProfileRequestContext profileRequestContext) {
+        return attributeExtractionStrategyLookupStrategy.apply(profileRequestContext);
+    }
+    
+    /**
+     * Set the lookup strategy used to find the attribute extraction strategy for a given profile request context.
+     * 
+     * @param strategy The attributeExtractionStrategyLookupStrategy to set.
+     * 
+     * @since 3.4.0
+     */
+    public void setAttributeExtractionStrategyLookupStrategy(@Nonnull final
+            Function<ProfileRequestContext, Function<ProfileRequestContext, Collection<IdPAttribute>>> strategy) {
+        attributeExtractionStrategyLookupStrategy = Constraint.isNotNull(strategy,
+                "Attribute extraction strategy lookup strategy cannot be null");
+    }
+    
+    /**
+     * Set the attribute extraction strategy.
+     * 
+     * @param strategy strategy function
+     * 
+     * @since 3.4.0
+     */
+    public void setAttributeExtractionStrategy(
+            @Nonnull final Function<ProfileRequestContext,Collection<IdPAttribute>> strategy) {
+        attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(strategy);
+    }
 
 }
\ No newline at end of file
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 8f82180b..c14bec43 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
@@ -29,7 +29,6 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
@@ -164,10 +163,6 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
      * Lookup function to supply a JSON map of requested claims.
      */
     @Nonnull private Function<ProfileRequestContext, Map<String, Object>> requestedClaimsLookupStrategy;
-    
-    /** Lookup function for attribute extraction strategy. */
-    @Nonnull Function<ProfileRequestContext,Function<ProfileRequestContext,Collection<IdPAttribute>>>
-    attributeExtractionStrategyLookupStrategy;
 
     /**
      * Constructor.
@@ -215,7 +210,6 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
         requirePushedAuthorizationRequestPredicate = PredicateSupport.alwaysFalse();
         resourceIndicatorsLookupStrategy = FunctionSupport.constant(CollectionSupport.emptyList());
         requestedClaimsLookupStrategy =  FunctionSupport.constant(null);
-        attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(null);
     }
 
     /** {@inheritDoc} */
@@ -1167,36 +1161,4 @@ public class DefaultOIDCAuthorizationConfiguration extends AbstractOIDCSSOConfig
         requestedClaimsLookupStrategy = Constraint.isNotNull(strategy,
                 "RequestedClaims lookup strategy can not be null");
     }
-
-    /** {@inheritDoc} */
-    @Override
-    public Function<ProfileRequestContext, Collection<IdPAttribute>> getAttributeExtractionStrategy(
-            @Nullable final ProfileRequestContext profileRequestContext) {
-        return attributeExtractionStrategyLookupStrategy.apply(profileRequestContext);
-    }
-    
-    /**
-     * Set the lookup strategy used to find the attribute extraction strategy for a given profile request context.
-     * 
-     * @param strategy The attributeExtractionStrategyLookupStrategy to set.
-     * 
-     * @since 3.4.0
-     */
-    public void setAttributeExtractionStrategyLookupStrategy(@Nonnull final
-            Function<ProfileRequestContext, Function<ProfileRequestContext, Collection<IdPAttribute>>> strategy) {
-        attributeExtractionStrategyLookupStrategy = Constraint.isNotNull(strategy,
-                "Attribute extraction strategy lookup strategy cannot be null");
-    }
-    
-    /**
-     * Set the attribute extraction strategy.
-     * 
-     * @param strategy strategy function
-     * 
-     * @since 3.4.0
-     */
-    public void setAttributeExtractionStrategy(
-            @Nonnull final Function<ProfileRequestContext,Collection<IdPAttribute>> strategy) {
-        attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(strategy);
-    }
 }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
index e805da1a..8571f4c7 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
@@ -29,7 +29,6 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.oauth2.sdk.GrantType;
 
-import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
@@ -72,10 +71,6 @@ public class DefaultOAuth2TokenConfiguration extends AbstractOIDCSSOConfiguratio
      * being requested.
      */
     @Nonnull private Function<ProfileRequestContext, List<String>> resourceIndicatorsLookupStrategy;
-    
-    /** Lookup function for attribute extraction strategy. */
-    @Nonnull Function<ProfileRequestContext,Function<ProfileRequestContext,Collection<IdPAttribute>>>
-    attributeExtractionStrategyLookupStrategy;
 
     /**
      * Constructor.
@@ -98,7 +93,6 @@ public class DefaultOAuth2TokenConfiguration extends AbstractOIDCSSOConfiguratio
         issueIdTokenViaRefreshTokenPredicate = PredicateSupport.alwaysTrue();
         limitInitialAccessTokenToSelfPredicate = PredicateSupport.alwaysFalse();
         resourceIndicatorsLookupStrategy = FunctionSupport.constant(CollectionSupport.emptyList());
-        attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(null);
 
     }
 
@@ -294,35 +288,4 @@ public class DefaultOAuth2TokenConfiguration extends AbstractOIDCSSOConfiguratio
            }
        }
        
-       /** {@inheritDoc} */
-       @Override
-       public Function<ProfileRequestContext, Collection<IdPAttribute>> getAttributeExtractionStrategy(
-               @Nullable final ProfileRequestContext profileRequestContext) {
-           return attributeExtractionStrategyLookupStrategy.apply(profileRequestContext);
-       }
-       
-       /**
-        * Set the lookup strategy used to find the attribute extraction strategy for a given profile request context.
-        * 
-        * @param strategy The attributeExtractionStrategyLookupStrategy to set.
-        * 
-        * @since 3.4.0
-        */
-       public void setAttributeExtractionStrategyLookupStrategy(@Nonnull final
-               Function<ProfileRequestContext, Function<ProfileRequestContext, Collection<IdPAttribute>>> strategy) {
-           attributeExtractionStrategyLookupStrategy = Constraint.isNotNull(strategy,
-                   "Attribute extraction strategy lookup strategy cannot be null");
-       }
-       
-       /**
-        * Set the attribute extraction strategy.
-        * 
-        * @param strategy strategy function
-        * 
-        * @since 3.4.0
-        */
-       public void setAttributeExtractionStrategy(
-               @Nonnull final Function<ProfileRequestContext,Collection<IdPAttribute>> strategy) {
-           attributeExtractionStrategyLookupStrategy = FunctionSupport.constant(strategy);
-       }
 }
\ No newline at end of file

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


More information about the commits mailing list