[java-identity-provider] branch main updated: IDP-1642 - Migrate configuration into jars where feasible
Scott Cantor
cantor.2 at osu.edu
Tue Sep 29 14:40:30 UTC 2020
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=4652bea2c89c0a084df9915ddcb7b2a86e0d6268
The following commit(s) were added to refs/heads/main by this push:
new 4652bea2c IDP-1642 - Migrate configuration into jars where feasible
4652bea2c is described below
commit 4652bea2c89c0a084df9915ddcb7b2a86e0d6268
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Sep 29 10:40:27 2020 -0400
IDP-1642 - Migrate configuration into jars where feasible
https://issues.shibboleth.net/jira/browse/IDP-1642
Use properties for most c14n config.
---
.../AbstractSubjectCanonicalizationAction.java | 25 ++++++------
.../authn/impl/X500SubjectCanonicalization.java | 14 ++++---
.../c14n/attribute-sourced-subject-c14n-beans.xml | 16 +++++---
.../idp/flows/c14n/simple-subject-c14n-beans.xml | 13 ++++---
.../idp/flows/c14n/x500-subject-c14n-beans.xml | 19 +++++++---
.../c14n/attribute-sourced-subject-c14n-config.xml | 44 ----------------------
.../conf/c14n/simple-subject-c14n-config.xml | 27 -------------
.../resources/conf/c14n/subject-c14n.properties | 29 ++++++++++++++
.../src/main/resources/conf/c14n/subject-c14n.xml | 9 +++--
.../conf/c14n/x500-subject-c14n-config.xml | 37 ------------------
idp-conf/src/test/resources/conf/idp.properties | 2 +-
.../idp/profile/impl/ResolveAttributes.java | 3 +-
12 files changed, 89 insertions(+), 149 deletions(-)
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
index f94f33ac7..9f73bd5d4 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
@@ -108,15 +108,18 @@ public abstract class AbstractSubjectCanonicalizationAction
*
* @param newTransforms collection of replacement transforms
*/
- public void setTransforms(@Nonnull @NonnullElements final Collection<Pair<String, String>> newTransforms) {
+ public void setTransforms(@Nullable @NonnullElements final Collection<Pair<String, String>> newTransforms) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- Constraint.isNotNull(newTransforms, "Transforms collection cannot be null");
-
- transforms = new ArrayList<>();
- for (final Pair<String,String> p : newTransforms) {
- final Pattern pattern = Pattern.compile(StringSupport.trimOrNull(p.getFirst()));
- transforms.add(new Pair<>(pattern, Constraint.isNotNull(
- StringSupport.trimOrNull(p.getSecond()), "Replacement expression cannot be null")));
+
+ if (newTransforms != null) {
+ transforms = new ArrayList<>();
+ for (final Pair<String,String> p : newTransforms) {
+ final Pattern pattern = Pattern.compile(StringSupport.trimOrNull(p.getFirst()));
+ transforms.add(new Pair<>(pattern, Constraint.isNotNull(
+ StringSupport.trimOrNull(p.getSecond()), "Replacement expression cannot be null")));
+ }
+ } else {
+ transforms = Collections.emptyList();
}
}
@@ -227,11 +230,7 @@ public abstract class AbstractSubjectCanonicalizationAction
s = s.toUpperCase();
}
- if (transforms.isEmpty()) {
- return s;
- }
-
- for (final Pair<Pattern,String> p : transforms) {
+ for (final Pair<Pattern,String> p : transforms) {
final Matcher m = p.getFirst().matcher(s);
log.debug("{} applying replacement expression '{}' against input '{}'", getLogPrefix(),
p.getFirst().pattern(), s);
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
index 71761f460..33f1c9abf 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
@@ -34,7 +34,6 @@ import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
import org.cryptacular.x509.dn.Attribute;
@@ -101,10 +100,14 @@ public class X500SubjectCanonicalization extends AbstractSubjectCanonicalization
*
* @param types types to search for
*/
- public void setSubjectAltNameTypes(@Nonnull @NonnullElements final List<Integer> types) {
+ public void setSubjectAltNameTypes(@Nullable @NonnullElements final List<Integer> types) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- subjectAltNameTypes = List.copyOf(Constraint.isNotNull(types, "Type list cannot be null"));
+ if (types != null) {
+ subjectAltNameTypes = List.copyOf(types);
+ } else {
+ subjectAltNameTypes = Collections.emptyList();
+ }
}
/**
@@ -112,11 +115,10 @@ public class X500SubjectCanonicalization extends AbstractSubjectCanonicalization
*
* @param ids RDN OIDs to search for
*/
- public void setObjectIds(@Nonnull @NonnullElements final List<String> ids) {
+ public void setObjectIds(@Nullable @NonnullElements final List<String> ids) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- objectIds = List.copyOf(StringSupport.normalizeStringCollection(
- Constraint.isNotNull(ids, "OID list cannot be null")));
+ objectIds = List.copyOf(StringSupport.normalizeStringCollection(ids));
}
/** {@inheritDoc} */
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/attribute-sourced-subject-c14n-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/attribute-sourced-subject-c14n-beans.xml
index f66f465ef..4337e4e12 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/attribute-sourced-subject-c14n-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/attribute-sourced-subject-c14n-beans.xml
@@ -15,7 +15,13 @@
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
p:placeholderPrefix="%{" p:placeholderSuffix="}" />
- <import resource="%{idp.home}/conf/c14n/attribute-sourced-subject-c14n-config.xml" />
+ <!-- Property-driven defaults to be overridden. -->
+ <bean id="shibboleth.c14n.attribute.AttributesToResolve" parent="shibboleth.CommaDelimStringArray"
+ c:_0="#{'%{idp.c14n.attribute.attributesToResolve:}'.trim()}" />
+ <bean id="shibboleth.c14n.attribute.AttributeSourceIds" parent="shibboleth.CommaDelimStringArray"
+ c:_0="#{'%{idp.c14n.attribute.attributeSourceIds:}'.trim()}" />
+
+ <import resource="conditional:%{idp.home}/conf/c14n/attribute-sourced-subject-c14n-config.xml" />
<bean class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />
<bean class="net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor" />
@@ -35,9 +41,9 @@
<bean id="AttributeSourcedSubjectCanonicalization"
class="net.shibboleth.idp.authn.impl.AttributeSourcedSubjectCanonicalization" scope="prototype"
p:attributeSourceIds-ref="shibboleth.c14n.attribute.AttributeSourceIds"
- p:lowercase-ref="shibboleth.c14n.attribute.Lowercase"
- p:uppercase-ref="shibboleth.c14n.attribute.Uppercase"
- p:trim-ref="shibboleth.c14n.attribute.Trim"
- p:transforms-ref="shibboleth.c14n.attribute.Transforms" />
+ p:lowercase="#{getObject('shibboleth.c14n.attribute.Lowercase') ?: %{idp.c14n.attribute.lowercase:false}}"
+ p:uppercase="#{getObject('shibboleth.c14n.attribute.Uppercase') ?: %{idp.c14n.attribute.uppercase:false}}"
+ p:trim="#{getObject('shibboleth.c14n.attribute.Trim') ?: %{idp.c14n.attribute.trim:true}}"
+ p:transforms="#{getObject('shibboleth.c14n.attribute.Transforms')}" />
</beans>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/simple-subject-c14n-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/simple-subject-c14n-beans.xml
index 336049011..7b4a689d3 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/simple-subject-c14n-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/simple-subject-c14n-beans.xml
@@ -12,16 +12,19 @@
default-init-method="initialize"
default-destroy-method="destroy">
- <import resource="%{idp.home}/conf/c14n/simple-subject-c14n-config.xml" />
+ <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
+ p:placeholderPrefix="%{" p:placeholderSuffix="}" />
+
+ <import resource="conditional:%{idp.home}/conf/c14n/simple-subject-c14n-config.xml" />
<bean class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />
<bean class="net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor" />
<bean id="SimpleSubjectCanonicalization"
class="net.shibboleth.idp.authn.impl.SimpleSubjectCanonicalization" scope="prototype"
- p:lowercase-ref="shibboleth.c14n.simple.Lowercase"
- p:uppercase-ref="shibboleth.c14n.simple.Uppercase"
- p:trim-ref="shibboleth.c14n.simple.Trim"
- p:transforms-ref="shibboleth.c14n.simple.Transforms" />
+ p:lowercase="#{getObject('shibboleth.c14n.simple.Lowercase') ?: %{idp.c14n.simple.lowercase:false}}"
+ p:uppercase="#{getObject('shibboleth.c14n.simple.Uppercase') ?: %{idp.c14n.simple.uppercase:false}}"
+ p:trim="#{getObject('shibboleth.c14n.simple.Trim') ?: %{idp.c14n.simple.trim:true}}"
+ p:transforms="#{getObject('shibboleth.c14n.simple.Transforms')}" />
</beans>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/x500-subject-c14n-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/x500-subject-c14n-beans.xml
index b9f819e8a..8b675bc4b 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/x500-subject-c14n-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/c14n/x500-subject-c14n-beans.xml
@@ -12,7 +12,16 @@
default-init-method="initialize"
default-destroy-method="destroy">
- <import resource="%{idp.home}/conf/c14n/x500-subject-c14n-config.xml" />
+ <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
+ p:placeholderPrefix="%{" p:placeholderSuffix="}" />
+
+ <!-- Property-driven defaults to be overridden. -->
+ <bean id="shibboleth.c14n.x500.SubjectAltNameTypes" parent="shibboleth.CommaDelimStringArray"
+ c:_0="#{'%{idp.c14n.x500.subjectAltNameTypes:}'.trim()}" />
+ <bean id="shibboleth.c14n.x500.ObjectIDs" parent="shibboleth.CommaDelimStringArray"
+ c:_0="#{'%{idp.c14n.x500.objectIDs:}'.trim()}" />
+
+ <import resource="conditional:%{idp.home}/conf/c14n/x500-subject-c14n-config.xml" />
<bean class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />
<bean class="net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor" />
@@ -21,9 +30,9 @@
class="net.shibboleth.idp.authn.impl.X500SubjectCanonicalization" scope="prototype"
p:subjectAltNameTypes-ref="shibboleth.c14n.x500.SubjectAltNameTypes"
p:objectIds-ref="shibboleth.c14n.x500.ObjectIDs"
- p:lowercase-ref="shibboleth.c14n.x500.Lowercase"
- p:uppercase-ref="shibboleth.c14n.x500.Uppercase"
- p:trim-ref="shibboleth.c14n.x500.Trim"
- p:transforms-ref="shibboleth.c14n.x500.Transforms" />
+ p:lowercase="#{getObject('shibboleth.c14n.x500.Lowercase') ?: %{idp.c14n.x500.lowercase:false}}"
+ p:uppercase="#{getObject('shibboleth.c14n.x500.Uppercase') ?: %{idp.c14n.x500.uppercase:false}}"
+ p:trim="#{getObject('shibboleth.c14n.x500.Trim') ?: %{idp.c14n.x500.trim:true}}"
+ p:transforms="#{getObject('shibboleth.c14n.x500.Transforms')}" />
</beans>
diff --git a/idp-conf/src/main/resources/conf/c14n/attribute-sourced-subject-c14n-config.xml b/idp-conf/src/main/resources/conf/c14n/attribute-sourced-subject-c14n-config.xml
deleted file mode 100644
index 938b30f11..000000000
--- a/idp-conf/src/main/resources/conf/c14n/attribute-sourced-subject-c14n-config.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-
- default-init-method="initialize"
- default-destroy-method="destroy">
-
- <!--
- A list of attributes to resolve for normalizing the subject. For example, you might
- intend to lookup a uid in a directory based on what the user entered. You can make this
- an empty list if you just want to resolve everything you normally would.
- -->
- <util:list id="shibboleth.c14n.attribute.AttributesToResolve">
- <value>altuid</value>
- </util:list>
-
- <!--
- A list of attributes to search for a value to produce as the normalized subject name.
- This will normally be something you resolve above.
- -->
- <util:list id="shibboleth.c14n.attribute.AttributeSourceIds">
- <value>altuid</value>
- </util:list>
-
- <!-- Simple transforms to apply to attribute value used for canonicalization result. -->
- <util:constant id="shibboleth.c14n.attribute.Lowercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.attribute.Uppercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.attribute.Trim" static-field="java.lang.Boolean.TRUE"/>
-
- <!-- Apply any regular expression replacement pairs. -->
- <util:list id="shibboleth.c14n.attribute.Transforms">
- <!--
- <bean parent="shibboleth.Pair" p:first="^(.+)@example\.edu$" p:second="$1" />
- -->
- </util:list>
-
-</beans>
diff --git a/idp-conf/src/main/resources/conf/c14n/simple-subject-c14n-config.xml b/idp-conf/src/main/resources/conf/c14n/simple-subject-c14n-config.xml
deleted file mode 100644
index 3cddfa67a..000000000
--- a/idp-conf/src/main/resources/conf/c14n/simple-subject-c14n-config.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-
- default-init-method="initialize"
- default-destroy-method="destroy">
-
- <!-- Simple transforms to apply to username after authentication. -->
- <util:constant id="shibboleth.c14n.simple.Lowercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.simple.Uppercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.simple.Trim" static-field="java.lang.Boolean.TRUE"/>
-
- <!-- Apply any regular expression replacement pairs after authentication. -->
- <util:list id="shibboleth.c14n.simple.Transforms">
- <!--
- <bean parent="shibboleth.Pair" p:first="^(.+)@example\.edu$" p:second="$1" />
- -->
- </util:list>
-
-</beans>
diff --git a/idp-conf/src/main/resources/conf/c14n/subject-c14n.properties b/idp-conf/src/main/resources/conf/c14n/subject-c14n.properties
new file mode 100644
index 000000000..617348bc1
--- /dev/null
+++ b/idp-conf/src/main/resources/conf/c14n/subject-c14n.properties
@@ -0,0 +1,29 @@
+# Properties that control the behavior of post-login subject c14n flows.
+# A few more advanced settings require XML configuration, see flow-specific docs.
+
+
+# Simple username -> principal name c14n
+#idp.c14n.simple.lowercase = false
+#idp.c14n.simple.uppercase = false
+#idp.c14n.simple.trim = true
+
+
+# Attribute resolution -> principal name c14n
+#idp.c14n.attribute.lowercase = false
+#idp.c14n.attribute.uppercase = false
+#idp.c14n.attribute.trim = true
+# Lists of attributes to resolve...
+#idp.c14n.attribute.attributesToResolve =
+# and then select a principal name from
+#idp.c14n.attribute.attributeSourceIds =
+
+# X.509 certificate -> principal name c14n
+#idp.c14n.x500.lowercase = false
+#idp.c14n.x500.uppercase = false
+#idp.c14n.x500.trim = true
+# Precedence is to check for a subjectAltName and then an OID RDN
+# Comma-delimited list of subjectAltName type numbers
+# (See https://tools.ietf.org/html/rfc5280#section-4.2.1.6)
+#idp.c14n.x500.subjectAltNameTypes =
+# Comma-delimited list of OIDS
+#idp.c14n.x500.objectIDs =
diff --git a/idp-conf/src/main/resources/conf/c14n/subject-c14n.xml b/idp-conf/src/main/resources/conf/c14n/subject-c14n.xml
index e4b772f1f..b354535d2 100644
--- a/idp-conf/src/main/resources/conf/c14n/subject-c14n.xml
+++ b/idp-conf/src/main/resources/conf/c14n/subject-c14n.xml
@@ -21,6 +21,8 @@
principal name.
Flows are identified with an ID that corresponds to a Spring Web Flow subflow name.
+
+ Most of the simple settings that configure these flows are in subject-c14n.properties.
-->
<!--
@@ -31,9 +33,8 @@
<util:list id="shibboleth.PostLoginSubjectCanonicalizationFlows">
<!--
This is an advanced post-login step that performs attribute resolution and then produces a username
- from an attribute value. Most of this configuration is handled by attribute-sourced-c14n-config.xml.
- To enable universally, just uncomment, but if you want it to run under more specific conditions,
- set an activationCondition property to a condition function to use to control when it should run.
+ from an attribute value. To enable universally, just uncomment, but if you want it to run under more
+ specific conditions, set an activationCondition property to a condition to apply.
-->
<!-- <bean id="c14n/attribute" parent="shibboleth.PostLoginSubjectCanonicalizationFlow" /> -->
@@ -54,7 +55,7 @@
<!--
This is the standard post-login step that returns a username derived from the login process. If you
have more complex needs such as mapping a certificate DN into a principal name, an alternative may
- be required such as that above, but you can configure simple transforms in simple-subject-c14n-config.xml
+ be required such as that above, but you can use this for simple transforms.
-->
<ref bean="c14n/simple" />
</util:list>
diff --git a/idp-conf/src/main/resources/conf/c14n/x500-subject-c14n-config.xml b/idp-conf/src/main/resources/conf/c14n/x500-subject-c14n-config.xml
deleted file mode 100644
index 1ae25e405..000000000
--- a/idp-conf/src/main/resources/conf/c14n/x500-subject-c14n-config.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-
- default-init-method="initialize"
- default-destroy-method="destroy">
-
- <!-- First priority is given to any subjectAltNames specified (emailAddress is 1) -->
- <util:list id="shibboleth.c14n.x500.SubjectAltNameTypes">
- <!-- <value>1</value> -->
- </util:list>
-
- <!-- Second priority is a list of Certificate Subject RDN OIDs to look for. -->
- <util:list id="shibboleth.c14n.x500.ObjectIDs">
- <value>2.5.4.3</value>
- </util:list>
-
- <!-- Simple transforms to apply to username after authentication. -->
- <util:constant id="shibboleth.c14n.x500.Lowercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.x500.Uppercase" static-field="java.lang.Boolean.FALSE"/>
- <util:constant id="shibboleth.c14n.x500.Trim" static-field="java.lang.Boolean.TRUE"/>
-
- <!-- Apply any regular expression replacement pairs after authentication. -->
- <util:list id="shibboleth.c14n.x500.Transforms">
- <!--
- <bean parent="shibboleth.Pair" p:first="^(.+)@example\.edu$" p:second="$1" />
- -->
- </util:list>
-
-</beans>
diff --git a/idp-conf/src/test/resources/conf/idp.properties b/idp-conf/src/test/resources/conf/idp.properties
index 7721cb91f..80b4146d5 100644
--- a/idp-conf/src/test/resources/conf/idp.properties
+++ b/idp-conf/src/test/resources/conf/idp.properties
@@ -3,7 +3,7 @@
#idp.searchForProperties = false
# Load any additional property resources from a comma-delimited list
-idp.additionalProperties = /conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/admin/admin.properties, /conf/authn/authn.properties, /conf/authn/duo.properties, /credentials/secrets.properties
+idp.additionalProperties = /conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/admin/admin.properties, /conf/authn/authn.properties, /conf/authn/duo.properties, /conf/c14n/subject-c14n.properties, /credentials/secrets.properties
# In most cases (and unless noted in the surrounding comments) the
# commented settings in the distributed files document default behavior.
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
index cfdf95378..1d0283f60 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
@@ -198,8 +198,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
Constraint.isNotNull(attributeIds, "Attribute ID collection cannot be null");
- attributesLookupStrategy = FunctionSupport.<ProfileRequestContext,Collection<String>>constant(
- StringSupport.normalizeStringCollection(attributeIds));
+ attributesLookupStrategy = FunctionSupport.constant(StringSupport.normalizeStringCollection(attributeIds));
}
/**
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list