[java-idp-oidc] branch main updated: JOIDC-182 - Spurious warning "File resource is null, no bytes will be returned"
Henri Mikkonen
henri.mikkonen at iki.fi
Fri Mar 8 11:17:29 UTC 2024
This is an automated email from the git hooks/post-receive script.
hjmikkon pushed a commit to branch main
in repository java-idp-oidc.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-oidc.git;a=commit;h=457f65d3ae564abf166f1041cf296bbe5883f21e
The following commit(s) were added to refs/heads/main by this push:
new 457f65d3 JOIDC-182 - Spurious warning "File resource is null, no bytes will be returned"
457f65d3 is described below
commit 457f65d3ae564abf166f1041cf296bbe5883f21e
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Mar 8 13:16:06 2024 +0200
JOIDC-182 - Spurious warning "File resource is null, no bytes will be returned"
https://shibboleth.atlassian.net/browse/JOIDC-182
Restored the wiring of idp.oidc.dynreg.defaultMetadataPolicyFile -property to not
contain a default value. If it's not set, then the default contents for the metadata
policy is empty (JSON {}).
If any value is set to the property, then the corresponding file resource must exist
or an error stack trace is included to the logs.
Also refactored the SWF actions to require metadata policy to exist, as the profile
policy cannot be null anymore.
---
.../InitializeRegistrationMetadataPolicyContext.java | 8 +++++++-
.../impl/ValidateRegistrationRequestMetadata.java | 11 ++++++++---
.../logic/DefaultMetadataPolicyMergingStrategy.java | 3 ++-
.../shibboleth/idp/service/relying-party/postconfig.xml | 17 +++++------------
.../oidc/op/profile/flow/RegistrationFlowTest.java | 2 +-
5 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/InitializeRegistrationMetadataPolicyContext.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/InitializeRegistrationMetadataPolicyContext.java
index 1f650623..3bf0dae1 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/InitializeRegistrationMetadataPolicyContext.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/InitializeRegistrationMetadataPolicyContext.java
@@ -181,7 +181,13 @@ public class InitializeRegistrationMetadataPolicyContext extends AbstractProfile
final Map<String, MetadataPolicy> profileMetadataPolicy =
profileMetadataPolicyLookupStrategy.apply(profileRequestContext);
-
+
+ if (profileMetadataPolicy == null) {
+ log.warn("{} Metadata policy in profile is not set", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ return;
+ }
+
final Map<String, MetadataPolicy> tokenMetadataPolicy =
tokenMetadataPolicyLookupStrategy.apply(profileRequestContext);
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
index d0260607..aff96bad 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/impl/ValidateRegistrationRequestMetadata.java
@@ -133,15 +133,20 @@ public class ValidateRegistrationRequestMetadata extends AbstractProfileAction {
return false;
}
metadataPolicy = registrationMetadataPolicyContext.getMetadataPolicy();
-
+ if (metadataPolicy == null) {
+ log.debug("{} No metadata policy associated with this request", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ return false;
+ }
+
return true;
}
/** {@inheritDoc} */
@Override
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
- if (metadataPolicy == null || metadataPolicy.isEmpty()) {
- log.debug("{} No metadata policy found, setting the request as policy enforced", getLogPrefix());
+ if (metadataPolicy.isEmpty()) {
+ log.debug("{} No metadata policy content found, setting the request as policy enforced", getLogPrefix());
registrationMetadataPolicyContext.setPolicyEnforcedMetadata(request.getOIDCClientMetadata());
return;
}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/logic/DefaultMetadataPolicyMergingStrategy.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/logic/DefaultMetadataPolicyMergingStrategy.java
index fb6e99dd..f8c6dfc4 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/logic/DefaultMetadataPolicyMergingStrategy.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/plugin/oidc/op/profile/logic/DefaultMetadataPolicyMergingStrategy.java
@@ -14,6 +14,7 @@
package net.shibboleth.idp.plugin.oidc.op.profile.logic;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -75,7 +76,7 @@ public class DefaultMetadataPolicyMergingStrategy implements
public Pair<Map<String, MetadataPolicy>, Boolean> apply(@Nullable final Map<String,MetadataPolicy> first,
@Nullable final Map<String,MetadataPolicy> second) {
if (first == null || first.isEmpty()) {
- return new Pair<>(second, Boolean.TRUE);
+ return new Pair<>(second == null ? (first == null ? null : Collections.emptyMap()) : second , Boolean.TRUE);
} else if (second == null || second.isEmpty()) {
return new Pair<>(first, Boolean.TRUE);
}
diff --git a/idp-oidc-extension-impl/src/main/resources/META-INF/net/shibboleth/idp/service/relying-party/postconfig.xml b/idp-oidc-extension-impl/src/main/resources/META-INF/net/shibboleth/idp/service/relying-party/postconfig.xml
index 71d77b25..784eb2af 100644
--- a/idp-oidc-extension-impl/src/main/resources/META-INF/net/shibboleth/idp/service/relying-party/postconfig.xml
+++ b/idp-oidc-extension-impl/src/main/resources/META-INF/net/shibboleth/idp/service/relying-party/postconfig.xml
@@ -756,21 +756,14 @@
</bean>
<bean id="shibboleth.oidc.dyngreg.DefaultMetadataPolicyFilename" class="java.lang.String" factory-method="valueOf">
- <constructor-arg value="%{idp.oidc.dynreg.defaultMetadataPolicyFile:%{idp.home}/conf/oidc-dynreg-profile-policy.json}" />
+ <constructor-arg value="%{idp.oidc.dynreg.defaultMetadataPolicyFile:}" />
</bean>
<bean id="shibboleth.oidc.dynreg.DefaultMetadataPolicyLookupStrategy"
parent="shibboleth.oidc.dynreg.MetadataPolicyLookupStrategy"
- c:id="DefaultProfileMetadataPolicyCache">
- <constructor-arg name="resource">
- <bean class="net.shibboleth.shared.spring.resource.ConditionalResource" p:defaultContent="{}">
- <constructor-arg>
- <bean class="org.springframework.core.io.FileSystemResource"
- c:path-ref="shibboleth.oidc.dyngreg.DefaultMetadataPolicyFilename" />
- </constructor-arg>
- </bean>
- </constructor-arg>
- </bean>
+ c:resource-ref="shibboleth.oidc.dyngreg.DefaultMetadataPolicyFilename"
+ c:id="DefaultProfileMetadataPolicyCache"
+ c:defaultContents="{}"/>
<bean id="shibboleth.oidc.dynreg.BatchMetadataCacheBuilderSpec"
class="net.shibboleth.oidc.metadata.cache.impl.BatchMetadataCacheBuilderSpec"
@@ -798,7 +791,7 @@
<bean id="shibboleth.oidc.dynreg.MetadataPolicyLookupStrategy" abstract="true"
factory-bean="shibboleth.oidc.dynreg.MetadataPolicyLookupStrategyFactory"
- factory-method="buildResourceLoadingMetadataPolicyResolver"
+ factory-method="buildFileLoadingMetadataPolicyResolver"
c:cacheSpec-ref="shibboleth.oidc.dynreg.BatchMetadataCacheBuilderSpec"
c:criteriaSetLookupStrategy="#{null}"/>
diff --git a/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java b/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
index 6a34b070..d53f578a 100644
--- a/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
+++ b/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
@@ -224,7 +224,7 @@ public class RegistrationFlowTest extends AbstractOidcFlowTest {
request.addHeader("Authorization", buildRegistrationAccessToken(false, (String) null,
(String[]) null).toAuthorizationHeader());
final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
- assertErrorCode(result, RegistrationError.INVALID_REDIRECT_URI.getCode());
+ assertErrorCode(result, "invalid_client_metadata");
}
@Test
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list