[java-identity-provider] branch main updated: IDP-2383 - Distinguish IdP- vs SP-driven RequestedPrincipalContext
Scott Cantor
cantor.2 at osu.edu
Tue Jun 10 12:58:15 UTC 2025
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=cfd9b7054c61ad73c3e63be303a4211e17e16ab6
The following commit(s) were added to refs/heads/main by this push:
new cfd9b7054 IDP-2383 - Distinguish IdP- vs SP-driven RequestedPrincipalContext
cfd9b7054 is described below
commit cfd9b7054c61ad73c3e63be303a4211e17e16ab6
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Jun 10 08:58:12 2025 -0400
IDP-2383 - Distinguish IdP- vs SP-driven RequestedPrincipalContext
https://shibboleth.atlassian.net/browse/IDP-2383
---
.../authn/context/RequestedPrincipalContext.java | 32 +++++++++++++++++++++-
.../impl/InitializeRequestedPrincipalContext.java | 3 +-
.../profile/impl/ProcessRequestedAuthnContext.java | 1 +
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
index 7896377f3..376a1d74c 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
@@ -60,13 +60,16 @@ public final class RequestedPrincipalContext extends BaseContext {
/** The registry of predicate factories for custom principal evaluation. */
@Nonnull private PrincipalEvalPredicateFactoryRegistry evalRegistry;
-
+
/** Comparison operator specific to request protocol. */
@Nullable private String operatorString;
/** The principals reflecting the request requirements. */
@Nonnull private List<Principal> requestedPrincipals;
+ /** Whether the requirement was applied due to local policy? */
+ private boolean imposedLocally;
+
/** The principal that satisfied the request, if any. */
@Nullable private Principal matchingPrincipal;
@@ -148,6 +151,33 @@ public final class RequestedPrincipalContext extends BaseContext {
return this;
}
+ /**
+ * Get whether the context was populated in response to a requirement applied by IdP policy.
+ *
+ * <p>A false value implies that an RP/SP's requirement resulted in the creation of this context.</p>
+ *
+ * @return true iff the context was populated due to local requirements applied by the IdP
+ *
+ * @since 5.2.0
+ */
+ public boolean isImposedLocally() {
+ return imposedLocally;
+ }
+
+ /**
+ * Set whether the context was populated in response to a requirement applied by IdP policy.
+ *
+ * @param flag flag to set
+ *
+ * @return this context
+ *
+ * @since 5.2.0
+ */
+ @Nonnull public RequestedPrincipalContext setImposedLocally(final boolean flag) {
+ imposedLocally = flag;
+ return this;
+ }
+
/**
* Get the principal that matched the request's requirements, if any.
*
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
index c3bf3c369..abce9e51b 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
@@ -157,6 +157,7 @@ public class InitializeRequestedPrincipalContext extends AbstractAuthenticationA
final RequestedPrincipalContext principalCtx = new RequestedPrincipalContext();
+ principalCtx.setImposedLocally(true);
principalCtx.setOperator("exact");
principalCtx.setRequestedPrincipals(principals);
principalCtx.setPrincipalEvalPredicateFactoryRegistry(
@@ -167,4 +168,4 @@ public class InitializeRequestedPrincipalContext extends AbstractAuthenticationA
principalCtx.getRequestedPrincipals().size());
}
-}
+}
\ No newline at end of file
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContext.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContext.java
index f39b3ad48..c6b4f6111 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContext.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContext.java
@@ -214,6 +214,7 @@ public class ProcessRequestedAuthnContext extends AbstractAuthenticationAction {
rpCtx.setOperator(AuthnContextComparisonTypeEnumeration.EXACT.toString());
}
rpCtx.setRequestedPrincipals(principals);
+ rpCtx.setImposedLocally(false);
authenticationContext.addSubcontext(rpCtx, true);
log.debug("{} RequestedPrincipalContext created with operator {} and {} custom principal(s)",
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list