[java-plugin-shibd] branch main updated: Add discoveryURL inheritance, and allow it to be unset.
Codeberg
noreply at shibboleth.net
Wed Jul 8 14:55:30 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-plugin-shibd.
View the commit online:
https://codeberg.org/Shibboleth/java-plugin-shibd/commit/bb8e359df34ce1b73aed1c6f1ee1c96be1a98dc0
The following commit(s) were added to refs/heads/main by this push:
new bb8e359 Add discoveryURL inheritance, and allow it to be unset.
bb8e359 is described below
commit bb8e359df34ce1b73aed1c6f1ee1c96be1a98dc0
Author: Scott Cantor <scott at restingparrotsoftware.com>
AuthorDate: Wed Jul 8 10:55:21 2026 -0400
Add discoveryURL inheritance, and allow it to be unset.
---
.../net/shibboleth/sp/impl/BasicApplication.java | 93 +++++++++++++++-------
.../impl/ValidateSessionInitiatorRequestTest.java | 10 ++-
2 files changed, 69 insertions(+), 34 deletions(-)
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
index 231dfc8..7b4abe2 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
@@ -80,7 +80,10 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** Map of protocol support services. */
@Nonnull Map<String,ProtocolSupportService> protocolServiceMap;
-
+
+ /** Flag indicating whether discovery setting was explicitly set. */
+ private boolean discoverySet;
+
/** Flag indicating whether authority setting was explicitly set. */
private boolean authoritySet;
@@ -188,6 +191,8 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nullable @NotEmpty public String getAuthenticatingAuthority(@Nullable ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final String ret = authenticatingAuthorityLookupStrategy.apply(profileRequestContext);
if (authoritySet || ret != null) {
return ret;
@@ -227,8 +232,50 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
Constraint.isNotNull(strategy, "Authority lookup strategy cannot be null");
}
+ /** [{@inheritDoc} */
+ @Nullable public String getDiscoveryService(@Nullable final ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
+ final String ret = discoveryServiceLookupStrategy.apply(profileRequestContext);
+ if (discoverySet || ret != null) {
+ return ret;
+ }
+
+ if (parent != null && allowInheritance) {
+ return parent.getDiscoveryService(profileRequestContext);
+ }
+
+ return null;
+ }
+
+ /**
+ * Sets the discovery service URL to use in the event a session initiator cannot be executed.
+ *
+ * @param url discovery service URL
+ */
+ public void setDiscoveryService(@Nullable final String url) {
+ checkSetterPreconditions();
+
+ discoverySet = true;
+ discoveryServiceLookupStrategy = FunctionSupport.constant(url);
+ }
+
+ /**
+ * Sets the lookup strategy for the discovery service URL to use in the event a session initiator cannot be executed.
+ *
+ * @param strategy lookup strategy
+ */
+ public void setDiscoveryServiceLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
+ checkSetterPreconditions();
+
+ discoveryServiceLookupStrategy =
+ Constraint.isNotNull(strategy, "Discovery service lookup strategy cannot be null");
+ }
+
/** {@inheritDoc} */
@Nonnull public List<String> getSessionInitiators(@Nullable final ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final List<String> ret = sessionInitiatorLookupStrategy.apply(profileRequestContext);
if (ret != null && !ret.isEmpty()) {
return ret;
@@ -271,36 +318,10 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
"Session initiators lookup strategy cannot be null");
}
- /** [{@inheritDoc} */
- @Nullable public String getDiscoveryService(@Nullable final ProfileRequestContext profileRequestContext) {
- return discoveryServiceLookupStrategy.apply(profileRequestContext);
- }
-
- /**
- * Sets the discovery service URL to use in the event a session initiator cannot be executed.
- *
- * @param url discovery service URL
- */
- public void setDiscoveryService(@Nullable final String url) {
- checkSetterPreconditions();
-
- discoveryServiceLookupStrategy = FunctionSupport.constant(url);
- }
-
- /**
- * Sets the lookup strategy for the discovery service URL to use in the event a session initiator cannot be executed.
- *
- * @param strategy lookup strategy
- */
- public void setDiscoveryServiceLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
- checkSetterPreconditions();
-
- discoveryServiceLookupStrategy =
- Constraint.isNotNull(strategy, "Discovery service lookup strategy cannot be null");
- }
-
/** {@inheritDoc} */
@Nonnull public List<String> getTokenConsumers(@Nullable final ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final List<String> ret = tokenConsumerLookupStrategy.apply(profileRequestContext);
if (ret != null && !ret.isEmpty()) {
return ret;
@@ -343,6 +364,8 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public List<String> getLogoutInitiators(@Nullable final ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final List<String> ret = logoutInitiatorLookupStrategy.apply(profileRequestContext);
if (ret != null && !ret.isEmpty()) {
return ret;
@@ -387,6 +410,8 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public List<String> getLogoutConsumers(@Nullable final ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final List<String> ret = logoutConsumerLookupStrategy.apply(profileRequestContext);
if (ret != null && !ret.isEmpty()) {
return ret;
@@ -430,6 +455,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public StateManager getStateManager() {
checkComponentActive();
+
if (stateManager != null) {
return stateManager;
}
@@ -455,6 +481,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public ReloadableService<AttributeTranscoderRegistry> getAttributeTranscoderRegistry() {
checkComponentActive();
+
if (transcodingRegistry != null) {
return transcodingRegistry;
}
@@ -480,6 +507,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public ReloadableService<AttributeResolver> getAttributeResolver() {
checkComponentActive();
+
if (attributeResolver != null) {
return attributeResolver;
}
@@ -505,6 +533,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Nonnull public ReloadableService<AttributeFilter> getAttributeFilter() {
checkComponentActive();
+
if (attributeFilter != null) {
return attributeFilter;
}
@@ -569,6 +598,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Override
@Nullable public String getIssuer(@Nullable ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
final String ret = super.getIssuer(profileRequestContext);
if (ret != null) {
@@ -585,8 +615,9 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
/** {@inheritDoc} */
@Override
@Nullable public SecurityConfiguration getSecurityConfiguration(
-
@Nullable ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
+
final var ret = super.getSecurityConfiguration(profileRequestContext);
if (ret != null) {
return ret;
@@ -603,6 +634,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
@Override
@Nonnull public Map<String, ProfileConfiguration> getProfileConfigurations(
@Nullable ProfileRequestContext profileRequestContext) {
+ checkComponentActive();
final var ret = super.getProfileConfigurations(profileRequestContext);
if (!ret.isEmpty()) {
@@ -620,6 +652,7 @@ public class BasicApplication extends BasicRelyingPartyConfiguration implements
@Override
@Nullable public ProfileConfiguration getProfileConfiguration(@Nullable ProfileRequestContext profileRequestContext,
@Nullable String profileId) {
+ checkComponentActive();
final var ret = super.getProfileConfiguration(profileRequestContext, profileId);
if (ret != null) {
diff --git a/sp-server-impl/src/test/java/net/shibboleth/sp/profile/impl/ValidateSessionInitiatorRequestTest.java b/sp-server-impl/src/test/java/net/shibboleth/sp/profile/impl/ValidateSessionInitiatorRequestTest.java
index d88be25..0621437 100644
--- a/sp-server-impl/src/test/java/net/shibboleth/sp/profile/impl/ValidateSessionInitiatorRequestTest.java
+++ b/sp-server-impl/src/test/java/net/shibboleth/sp/profile/impl/ValidateSessionInitiatorRequestTest.java
@@ -52,6 +52,7 @@ public class ValidateSessionInitiatorRequestTest extends BaseApplicationActionTe
@BeforeMethod
public void setUp() throws ComponentInitializationException {
super.beforeMethod();
+
prc.removeSubcontext(RelyingPartyContext.class);
}
@@ -126,10 +127,9 @@ public class ValidateSessionInitiatorRequestTest extends BaseApplicationActionTe
}
@Test
- public void testFallbackAuthority() throws ComponentInitializationException {
- createAction(true, false);
-
+ public void testFallbackAuthority() throws ComponentInitializationException {
application.setAuthenticatingAuthority(TEST_VALUE);
+ createAction(true, false);
final DDF input = new DDF(null).structure();
arc.setInput(input);
@@ -144,9 +144,9 @@ public class ValidateSessionInitiatorRequestTest extends BaseApplicationActionTe
@Test
public void testInputAuthority() throws ComponentInitializationException {
+ application.setAuthenticatingAuthority(TEST_VALUE);
createAction(true, false);
- application.setAuthenticatingAuthority(TEST_VALUE);
final DDF input = new DDF(null).structure();
input.addmember(InitiatorConstants.AUTHORITY).string(TEST_VALUE + "/shibboleth");
arc.setInput(input);
@@ -173,6 +173,8 @@ public class ValidateSessionInitiatorRequestTest extends BaseApplicationActionTe
action.setRequireRelyingPartyId(requireAuthority);
action.setRequireDiscoveryURL(requireDisco);
action.initialize();
+
+ application.initialize();
}
}
\ 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