[java-idp-plugin-duo] branch main updated: Add conditional resource resolver to spring test custom flowbuilders
Phil Smart
philip.smart at jisc.ac.uk
Mon Oct 5 09:44:58 UTC 2020
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch main
in repository java-idp-plugin-duo.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-duo.git;a=commit;h=2914af744c4943e258e70933e76a6df25dd8f766
The following commit(s) were added to refs/heads/main by this push:
new 2914af7 Add conditional resource resolver to spring test custom flowbuilders
2914af7 is described below
commit 2914af744c4943e258e70933e76a6df25dd8f766
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Mon Oct 5 10:44:52 2020 +0100
Add conditional resource resolver to spring test custom flowbuilders
allows use of the conditional: import
---
.../plugin/authn/duo/impl/ValidateTokenClaims.java | 1 +
.../flows/authn/DuoOIDC/duo-oidc-authn-beans.xml | 4 ++--
.../authn/spring/CustomFlowModelFlowBuilder.java | 9 ++++++--
.../spring/CustomFlowRelativeResourceLoader.java | 25 ++++++++++++++++++++++
4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
index 8c372a7..80f3075 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
@@ -86,6 +86,7 @@ import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
*
* @event {@link org.opensaml.profile.action.EventIds#PROCEED_EVENT_ID}
* @event {@link net.shibboleth.idp.authn.AuthnEventIds#AUTHN_EXCEPTION}
+ * @event {@link net.shibboleth.idp.authn.AuthnEventIds#NO_CREDENTIALS}
*/
public class ValidateTokenClaims extends AbstractDuoAuthenticationAction {
diff --git a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
index 7514a71..4c027bb 100644
--- a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
+++ b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
@@ -50,8 +50,8 @@
<!-- Can override one or more of the beans above. Note, the property override is mostly to allow tests
to change the location of the user config file. -->
- <!-- FIXME: Add this back in as conditional import
- <import resource="%{idp.home}%{idp.duo.oidc.user.config.home:/conf/authn/duo-authn-config.xml}" />-->
+ <!-- FIXME: Add this back in as conditional import-->
+ <import resource="conditional:%{idp.home}%{idp.duo.oidc.user.config.home:/conf/authn/duo-authn-config.xml}" />
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
index 4b28d89..6b91918 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
@@ -114,8 +114,11 @@ import org.springframework.webflow.scope.FlowScope;
import org.springframework.webflow.scope.ViewScope;
import org.springframework.webflow.security.SecurityRule;
+import net.shibboleth.ext.spring.resource.ConditionalResourceResolver;
+
/**
- * Copy of {@link FlowModelFlowBuilder} for setting the property placeholder prefix of <code>%{</code>.
+ * Copy of {@link FlowModelFlowBuilder} for setting the property placeholder prefix of <code>%{</code>, and
+ * inclusion of a conditional resource resolver for resolving {@literal conditional:} resources.
*/
public class CustomFlowModelFlowBuilder extends AbstractFlowBuilder {
@@ -369,7 +372,9 @@ public class CustomFlowModelFlowBuilder extends AbstractFlowBuilder {
flowContext.setClassLoader(classLoaderToUse);
Resource flowResource = flowModelHolder.getFlowModelResource();
- flowContext.setResourceLoader(new CustomFlowRelativeResourceLoader(flowResource));
+ CustomFlowRelativeResourceLoader loader = new CustomFlowRelativeResourceLoader(flowResource);
+ loader.addProtocolResolver(new ConditionalResourceResolver());
+ flowContext.setResourceLoader(loader);
AnnotationConfigUtils.registerAnnotationConfigProcessors(flowContext);
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowRelativeResourceLoader.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowRelativeResourceLoader.java
index 46eb616..957c4f0 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowRelativeResourceLoader.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowRelativeResourceLoader.java
@@ -17,14 +17,29 @@
package net.shibboleth.idp.plugin.authn.spring;
import java.io.IOException;
+import java.util.LinkedHashSet;
+import java.util.Set;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.ProtocolResolver;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
+import org.springframework.util.Assert;
+/**
+ * Custom FlowRelativeResourceLoader which allows the addition of protocol resolvers.
+ * Of particular importance allowing {@literal conditional:} resources.
+ */
public class CustomFlowRelativeResourceLoader implements ResourceLoader {
+
+ private final Set<ProtocolResolver> protocolResolvers = new LinkedHashSet<>(4);
private Resource flowResource;
+
+ public void addProtocolResolver(ProtocolResolver resolver) {
+ Assert.notNull(resolver, "ProtocolResolver must not be null");
+ this.protocolResolvers.add(resolver);
+ }
public CustomFlowRelativeResourceLoader(Resource resource) {
this.flowResource = resource;
@@ -35,6 +50,16 @@ public class CustomFlowRelativeResourceLoader implements ResourceLoader {
}
public Resource getResource(String location) {
+ Assert.notNull(location, "Location must not be null");
+
+ for (ProtocolResolver protocolResolver : protocolResolvers) {
+ Resource resource = protocolResolver.resolve(location, this);
+ if (resource != null) {
+ return resource;
+ }
+ }
+
+ //maintain old behaviour for classpath resources
if (location.startsWith(CLASSPATH_URL_PREFIX)) {
return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader());
} else {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list