[java-oidc-common] 05/08: JCOMOIDC-150 - Add AttributeResolutionPrincipal to OIDCSSORelyingPartyConfiguration
Codeberg
noreply at shibboleth.net
Tue Feb 17 20:59:12 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/00ee2e62da2f9bc5e6b7dbeae621042a4b75630b
commit 00ee2e62da2f9bc5e6b7dbeae621042a4b75630b
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Thu Nov 27 15:11:36 2025 +0000
JCOMOIDC-150 - Add AttributeResolutionPrincipal to
OIDCSSORelyingPartyConfiguration
- And implementation in AbstractOIDCSSOConfiguration
https://shibboleth.atlassian.net/browse/JCOMOIDC-150
---
.../config/OIDCSSORelyingPartyConfiguration.java | 12 ++++++++
.../config/impl/AbstractOIDCSSOConfiguration.java | 33 +++++++++++++++++++++-
2 files changed, 44 insertions(+), 1 deletion(-)
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
index 7fa61b0c..b1749af8 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
@@ -52,5 +52,17 @@ public interface OIDCSSORelyingPartyConfiguration extends OAuth2TokenEncryptionP
@ConfigurationSetting(name="attributeExtractionStrategy")
@Nullable Function<ProfileRequestContext,Collection<IdPAttribute>> getAttributeExtractionStrategy(
@Nullable final ProfileRequestContext profileRequestContext);
+
+ /**
+ * Get a principal name to feed into attribute resolution if {@link #isResolveAttributes(ProfileRequestContext)} is true.
+ *
+ * @param profileRequestContext profile request context
+ *
+ * @return principal name to use during resolution
+ *
+ * @since 3.4.0
+ */
+ @ConfigurationSetting(name="attributeResolutionPrincipal")
+ @Nullable String getAttributeResolutionPrincipal(@Nullable final ProfileRequestContext profileRequestContext);
}
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 0b041947..40256873 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
@@ -107,6 +107,9 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
/** Whether scope validation is strict, i.e. request for unallowed scopes is an error. */
@Nonnull private Predicate<ProfileRequestContext> strictScopeValidationPredicate;
+
+ /** Lookup function for attribute resolution principal. */
+ @Nonnull Function<ProfileRequestContext,String> attributeResolutionPrincipalLookupStrategy;
/**
* Creates a new configuration instance.
@@ -138,7 +141,8 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
customRedirectUriValidationStrategyLookupStrategy = FunctionSupport.constant(null);
alwaysIssueBearerAccessTokenPredicate = PredicateSupport.alwaysFalse();
- strictScopeValidationPredicate = PredicateSupport.alwaysFalse();
+ strictScopeValidationPredicate = PredicateSupport.alwaysFalse();
+ attributeResolutionPrincipalLookupStrategy = FunctionSupport.constant(null);
}
/** {@inheritDoc} */
@@ -702,5 +706,32 @@ public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwa
strictScopeValidationPredicate = Constraint.isNotNull(condition,
"Strict scope validation predicate cannot be null");
}
+
+ /** {@inheritDoc} */
+ @Nullable public String getAttributeResolutionPrincipal(@Nullable final ProfileRequestContext profileRequestContext) {
+ return attributeResolutionPrincipalLookupStrategy.apply(profileRequestContext);
+ }
+
+ /**
+ * Set a principal name to feed into attribute resolution if {@link #isResolveAttributes(ProfileRequestContext)}
+ * is true.
+ *
+ * @param principal principal name to set
+ */
+ public void setAttributeResolutionPrincipal(@Nullable final String principal) {
+ attributeResolutionPrincipalLookupStrategy = FunctionSupport.constant(principal);
+ }
+
+ /**
+ * Set a lookup strategy for the principal name to feed into attribute resolution if
+ * {@link #isResolveAttributes(ProfileRequestContext)} is true
+ *
+ * @param strategy lookup strategy
+ */
+ public void setAttributeResolutionPrincipalLookupStrategy(
+ @Nonnull final Function<ProfileRequestContext,String> strategy) {
+ attributeResolutionPrincipalLookupStrategy =
+ Constraint.isNotNull(strategy, "Resolution principal lookup strategy cannot be null");
+ }
}
\ 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