[java-identity-provider] branch main updated: JSPROF-1 - Move RelyingParty "layer" into java-shib-profile

Scott Cantor cantor.2 at osu.edu
Wed Feb 15 20:31:51 UTC 2023


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=dd09f7204da688a716fadc97b646e27ada4f15f4

The following commit(s) were added to refs/heads/main by this push:
     new dd09f7204 JSPROF-1 - Move RelyingParty "layer" into java-shib-profile
dd09f7204 is described below

commit dd09f7204da688a716fadc97b646e27ada4f15f4
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Feb 15 15:31:48 2023 -0500

    JSPROF-1 - Move RelyingParty "layer" into java-shib-profile
    
    https://shibboleth.atlassian.net/browse/JSPROF-1
    
    Move some SAML classes out and delete some unused clases.
---
 .../impl/BuildSAMLMetadataContextActionTest.java   |   3 +-
 .../net/shibboleth/idp/conf/audit-system.xml       |   6 +-
 .../net/shibboleth/idp/conf/functions.xml          |   2 +-
 .../shibboleth/idp/conf/saml-binding-config.xml    |   2 +-
 .../net/shibboleth/idp/conf/soap-client.xml        |   4 +-
 .../idp/flows/admin/resolvertest-beans.xml         |   4 +-
 .../idp/flows/authn/saml-authn-beans.xml           |   2 +-
 .../idp/flows/cas/cas-abstract-beans.xml           |   2 +-
 .../flows/saml/logout/saml2-logoutprop-beans.xml   |   2 +-
 .../idp/flows/saml/saml-abstract-beans.xml         |   2 +-
 .../idp/flows/saml/saml1/sso-abstract-beans.xml    |   2 +-
 .../idp/flows/saml/saml2/sso-abstract-beans.xml    |   2 +-
 .../audit/impl/AttributesAuditExtractor.java       | 100 -------
 idp-saml-api/pom.xml                               |   5 +
 .../idp/saml/authn/context/SAMLContext.java        |  56 ----
 .../idp/saml/authn/context/package-info.java       |  24 --
 .../idp/saml/binding/BindingDescriptor.java        |  51 ----
 .../shibboleth/idp/saml/binding/package-info.java  |  22 --
 .../SAMLArtifactConsumerProfileConfiguration.java  |  48 ----
 .../profile/config/SAMLProfileConfiguration.java   |  23 +-
 .../logic/AllowedSAMLPresentersPredicate.java      |   4 +-
 .../LegacyEncryptionRequirementPredicate.java      |  87 ------
 .../logic/LegacySigningRequirementPredicate.java   |  87 ------
 .../config/logic/SignAssertionsPredicate.java      |   2 +-
 .../config/logic/SignRequestsPredicate.java        | 108 --------
 .../config/logic/SignResponsesPredicate.java       |  46 ----
 .../ClientTLSArtifactRequestsPredicate.java        |  46 ----
 .../messaging/SignArtifactRequestsPredicate.java   |  46 ----
 .../DefaultNameIdentifierFormatStrategy.java       |   2 +-
 .../SAMLMetadataContextLookupFunction.java         |  51 ----
 .../logic/MappedEntityAttributesPredicate.java     | 302 ---------------------
 .../idp/saml/profile/logic/package-info.java       |  22 --
 .../idp/saml/saml1/profile/package-info.java       |  20 --
 ...ractSAML2ArtifactAwareProfileConfiguration.java |   2 +-
 idp-saml-impl/pom.xml                              |   4 +
 .../impl/SpringAwareMessageEncoderFactory.java     |   2 +-
 .../impl/RelyingPartyConfigurationSupport.java     |   4 +-
 .../profile/impl/ValidateSAMLAuthentication.java   |   2 +-
 .../DefaultNameIdentifierFormatStrategyTest.java   |   4 +-
 ...itializeOutboundMessageContextForErrorTest.java |   2 +-
 .../logic/tests/EntityAttributesPredicateTest.java | 181 ------------
 .../profile/logic/attribute-mapping-metadata.xml   |  63 -----
 .../profile/logic/attribute-registry-service.xml   |  41 ---
 .../idp/saml/profile/logic/attribute-registry.xml  |  28 --
 .../idp/saml/profile/logic/rules/subjectid.txt     |   3 -
 .../idp/saml/profile/logic/rules/zorkmids.txt      |   4 -
 .../shibboleth/idp/ui/impl/SetRPUIInformation.java |   2 +-
 idp-war/pom.xml                                    |   4 +
 48 files changed, 47 insertions(+), 1484 deletions(-)

diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
index 7e8831309..5ff5f06ff 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
@@ -22,7 +22,8 @@ import java.util.function.Function;
 
 import net.shibboleth.idp.cas.config.LoginConfiguration;
 import net.shibboleth.idp.cas.service.Service;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
+
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
 import org.opensaml.saml.metadata.EntityGroupName;
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/audit-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/audit-system.xml
index d4e0f1744..3089e9b12 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/audit-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/audit-system.xml
@@ -921,7 +921,7 @@
                     <key>
                         <util:constant static-field="net.shibboleth.idp.profile.IdPAuditFields.ATTRIBUTES"/>
                     </key>
-                    <bean class="net.shibboleth.idp.profile.audit.impl.AttributesAuditExtractor">
+                    <bean class="net.shibboleth.profile.audit.impl.AttributesAuditExtractor">
                         <property name="activationCondition">
                             <bean parent="shibboleth.Conditions.OR">
                                 <constructor-arg>
@@ -1054,7 +1054,7 @@
                     <key>
                         <util:constant static-field="net.shibboleth.idp.profile.IdPAuditFields.ATTRIBUTES"/>
                     </key>
-                    <bean class="net.shibboleth.idp.profile.audit.impl.AttributesAuditExtractor" />
+                    <bean class="net.shibboleth.profile.audit.impl.AttributesAuditExtractor" />
                 </entry>
                 <entry>
                     <key>
@@ -1557,7 +1557,7 @@
                     <key>
                         <util:constant static-field="net.shibboleth.idp.profile.IdPAuditFields.ATTRIBUTES"/>
                     </key>
-                    <bean class="net.shibboleth.idp.profile.audit.impl.AttributesAuditExtractor" />
+                    <bean class="net.shibboleth.profile.audit.impl.AttributesAuditExtractor" />
                 </entry>
             </map>
         </property>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/functions.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/functions.xml
index 152bef735..4a9586e87 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/functions.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/functions.xml
@@ -50,7 +50,7 @@
             <bean class="org.opensaml.saml.common.messaging.context.navigate.EntityDescriptorLookupFunction" />
         </constructor-arg>
         <constructor-arg name="f">
-            <bean class="net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction" />
+            <bean class="net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction" />
         </constructor-arg>
     </bean>
 
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/saml-binding-config.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/saml-binding-config.xml
index 32a6d253a..2c5305dbc 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/saml-binding-config.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/saml-binding-config.xml
@@ -23,7 +23,7 @@
     duplicate bean IDs. 
     -->
         
-    <bean id="shibboleth.BindingDescriptor" class="net.shibboleth.idp.saml.binding.BindingDescriptor" abstract="true" />
+    <bean id="shibboleth.BindingDescriptor" class="net.shibboleth.saml.binding.BindingDescriptor" abstract="true" />
     
     <!-- SAML 1 Bindings -->
     <bean parent="shibboleth.BindingDescriptor" id="shibboleth.Binding.LegacyShibboleth"
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/soap-client.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/soap-client.xml
index 8cf32aac0..e840c4163 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/soap-client.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/soap-client.xml
@@ -196,7 +196,7 @@
         <constructor-arg>
             <map>
                 <entry key="SAML2.ArtifactDecoder">
-                    <bean class="net.shibboleth.idp.saml.profile.config.logic.messaging.ClientTLSArtifactRequestsPredicate" />
+                    <bean class="net.shibboleth.saml.profile.config.logic.messaging.ClientTLSArtifactRequestsPredicate" />
                 </entry>
                 <entry key="SAML2.Logout">
                     <bean class="net.shibboleth.idp.saml.profile.config.logic.messaging.ClientTLSSOAPLogoutRequestsPredicate" />
@@ -210,7 +210,7 @@
         <constructor-arg>
             <map>
                 <entry key="SAML2.ArtifactDecoder">
-                    <bean class="net.shibboleth.idp.saml.profile.config.logic.messaging.SignArtifactRequestsPredicate" />
+                    <bean class="net.shibboleth.saml.profile.config.logic.messaging.SignArtifactRequestsPredicate" />
                 </entry>
                 <entry key="SAML2.Logout">
                     <bean class="net.shibboleth.idp.saml.profile.config.logic.messaging.SignSOAPLogoutRequestsPredicate" />
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/admin/resolvertest-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/admin/resolvertest-beans.xml
index ce7f208a8..dc77a025b 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/admin/resolvertest-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/admin/resolvertest-beans.xml
@@ -141,7 +141,7 @@
     <bean id="AddNameIdentifierToSubjects"
             class="org.opensaml.saml.saml1.profile.impl.AddNameIdentifierToSubjects" scope="prototype">
         <property name="formatLookupStrategy">
-            <bean class="net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy"
+            <bean class="net.shibboleth.idp.saml.profile.context.navigate.DefaultNameIdentifierFormatStrategy"
                     p:defaultFormat="%{idp.nameid.saml1.default:urn:mace:shibboleth:1.0:nameIdentifier}">
                 <property name="profileId">
                     <util:constant static-field="net.shibboleth.idp.saml.saml1.profile.config.BrowserSSOProfileConfiguration.PROFILE_ID" />
@@ -166,7 +166,7 @@
     <bean id="AddNameIDToSubjects"
             class="org.opensaml.saml.saml2.profile.impl.AddNameIDToSubjects" scope="prototype">
         <property name="formatLookupStrategy">
-            <bean class="net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy"
+            <bean class="net.shibboleth.idp.saml.profile.context.navigate.DefaultNameIdentifierFormatStrategy"
                     p:defaultFormat="%{idp.nameid.saml2.default:urn:oasis:names:tc:SAML:2.0:nameid-format:transient}">
                 <property name="profileId">
                     <util:constant static-field="net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration.PROFILE_ID" />
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/authn/saml-authn-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/authn/saml-authn-beans.xml
index 5a653fe9c..10e071749 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/authn/saml-authn-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/authn/saml-authn-beans.xml
@@ -143,7 +143,7 @@
                     p:signatureSigningParametersResolver-ref="shibboleth.SignatureSigningParametersResolver"
                     p:noResultIsError="false">
                 <property name="activationCondition">
-                    <bean class="net.shibboleth.idp.saml.profile.config.logic.SignRequestsPredicate"
+                    <bean class="net.shibboleth.saml.profile.config.logic.SignRequestsPredicate"
                         p:honorMetadata="%{idp.saml.honorWantAuthnRequestsSigned:true}" />
                 </property>
             </bean>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/cas/cas-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/cas/cas-abstract-beans.xml
index 86fc5727f..000ab9101 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/cas/cas-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/cas/cas-abstract-beans.xml
@@ -81,7 +81,7 @@
           p:maskFailures="%{idp.service.attribute.filter.maskFailures:true}"
           p:metadataResolver-ref="shibboleth.MetadataResolver">
         <property name="metadataContextLookupStrategy">
-            <bean class="net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction" />
+            <bean class="net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction" />
         </property>
     </bean>
 
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/logout/saml2-logoutprop-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/logout/saml2-logoutprop-beans.xml
index 564a25277..150274607 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/logout/saml2-logoutprop-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/logout/saml2-logoutprop-beans.xml
@@ -130,7 +130,7 @@
             p:signatureSigningParametersResolver-ref="shibboleth.SignatureSigningParametersResolver"
             p:noResultIsError="true">
         <property name="activationCondition">
-            <bean class="net.shibboleth.idp.saml.profile.config.logic.SignRequestsPredicate" />
+            <bean class="net.shibboleth.saml.profile.config.logic.SignRequestsPredicate" />
         </property>
     </bean>
     
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml-abstract-beans.xml
index d57a27d1e..3d5b0b575 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml-abstract-beans.xml
@@ -134,7 +134,7 @@
             p:signatureSigningParametersResolver-ref="shibboleth.SignatureSigningParametersResolver"
             p:noResultIsError="true">
         <property name="activationCondition">
-            <bean class="net.shibboleth.idp.saml.profile.config.logic.SignResponsesPredicate" />
+            <bean class="net.shibboleth.saml.profile.config.logic.SignResponsesPredicate" />
         </property>
     </bean>
 
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
index d069fe460..4f06929a8 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
@@ -36,7 +36,7 @@
     <bean id="AddNameIdentifierToSubjects"
             class="org.opensaml.saml.saml1.profile.impl.AddNameIdentifierToSubjects" scope="prototype">
         <property name="formatLookupStrategy">
-            <bean class="net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy"
+            <bean class="net.shibboleth.idp.saml.profile.context.navigate.DefaultNameIdentifierFormatStrategy"
                 p:defaultFormat="%{idp.nameid.saml1.default:urn:mace:shibboleth:1.0:nameIdentifier}" />
         </property>
         <property name="nameIdentifierGenerator">
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
index bc0c94716..f96d7bde3 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
@@ -64,7 +64,7 @@
     <bean id="AddNameIDToSubjects"
             class="org.opensaml.saml.saml2.profile.impl.AddNameIDToSubjects" scope="prototype">
         <property name="formatLookupStrategy">
-            <bean class="net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy"
+            <bean class="net.shibboleth.idp.saml.profile.context.navigate.DefaultNameIdentifierFormatStrategy"
                 p:defaultFormat="%{idp.nameid.saml2.default:urn:oasis:names:tc:SAML:2.0:nameid-format:transient}" />
         </property>
         <property name="nameIDGenerator">
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/AttributesAuditExtractor.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/AttributesAuditExtractor.java
deleted file mode 100644
index 7f9d671dd..000000000
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/AttributesAuditExtractor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.profile.audit.impl;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
-
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.Constraint;
-
-/** {@link Function} that returns the attribute IDs from an {@link AttributeContext}. */
-public class AttributesAuditExtractor implements Function<ProfileRequestContext,Collection<String>> {
-
-    /** Extract the unfiltered attribute list instead of the filtered list. */
-    private boolean useUnfiltered;
-    
-    /** A predicate to control whether attributes should be extracted for logging. */
-    @Nullable private Predicate<ProfileRequestContext> activationCondition;
-    
-    /** Lookup strategy for AttributeContext to read from. */
-    @Nonnull private final Function<ProfileRequestContext,AttributeContext> attributeContextLookupStrategy;
-
-    /** Constructor. */
-    public AttributesAuditExtractor() {
-        // Defaults to ProfileRequestContext -> RelyingPartyContext -> AttributeContext.
-        attributeContextLookupStrategy = new ChildContextLookup<>(AttributeContext.class).compose(
-                new ChildContextLookup<>(RelyingPartyContext.class));
-    }
-    
-    /**
-     * Constructor.
-     *
-     * @param strategy lookup strategy for {@link AttributeContext}
-     */
-    public AttributesAuditExtractor(@Nonnull final Function<ProfileRequestContext,AttributeContext> strategy) {
-        attributeContextLookupStrategy = Constraint.isNotNull(strategy,
-                "AttributeContext lookup strategy cannot be null");
-    }
-    
-    /**
-     * Set whether to extract the list of unfiltered attributes instead of the filtered attributes.
-     * 
-     * @param flag  flag to set
-     */
-    public void setUseUnfiltered(final boolean flag) {
-        useUnfiltered = flag;
-    }
-    
-    /**
-     * Set a condition to evaluate to control whether attributes are extracted for logging.
-     * 
-     * <p>This is used primarily to prevent logging of attributes for profiles in which attributes
-     * may be resolved, but not actually disclosed to a relying party.</p> 
-     * 
-     * @param condition condition to evaluate
-     */
-    public void setActivationCondition(@Nullable final Predicate<ProfileRequestContext> condition) {
-        activationCondition = condition;
-    }
-
-    /** {@inheritDoc} */
-    @Nullable public Collection<String> apply(@Nullable final ProfileRequestContext input) {
-        
-        if (activationCondition != null && !activationCondition.test(input)) {
-            return Collections.emptyList();
-        }
-        
-        final AttributeContext attributeCtx = attributeContextLookupStrategy.apply(input);
-        if (attributeCtx != null) {
-            return (useUnfiltered ? attributeCtx.getUnfilteredIdPAttributes()
-                    : attributeCtx.getIdPAttributes()).keySet();
-        }
-        return Collections.emptyList();
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/pom.xml b/idp-saml-api/pom.xml
index 5da8e4666..c072348c8 100644
--- a/idp-saml-api/pom.xml
+++ b/idp-saml-api/pom.xml
@@ -38,6 +38,11 @@
             <version>${project.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-saml-profile-api</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-attribute-api</artifactId>
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/SAMLContext.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/SAMLContext.java
deleted file mode 100644
index 31c03d898..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/SAMLContext.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.authn.context;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.BaseContext;
-import org.opensaml.saml.saml2.core.Assertion;
-
-/**
- * Context, usually attached to {@link net.shibboleth.idp.authn.context.AuthenticationContext},
- * that carries a SAML {@link Assertion} to be validated.
- */
-public final class SAMLContext extends BaseContext {
-
-    /** The assertion to be validated. */
-    @Nullable private Assertion assertion;
-
-    /**
-     * Gets the assertion to be validated.
-     * 
-     * @return the assertion to be validated
-     */
-    @Nullable public Assertion getAssertion() {
-        return assertion;
-    }
-
-    /**
-     * Sets the assertion to be validated.
-     * 
-     * @param newAssertion assertion to be validated
-     * 
-     * @return this context
-     */
-    @Nonnull public SAMLContext setAssertion(@Nullable final Assertion newAssertion) {
-        assertion = newAssertion;
-        return this;
-    }
-    
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/package-info.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/package-info.java
deleted file mode 100644
index 59a689a26..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/authn/context/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Context tree subtypes in support of SAML-related authentication.
- * 
- * <p>NOTE: This is not related to the SAML AuthnContext concept, but concerns the 
- * profile-related state-tracking context tree.</p>
- */
-package net.shibboleth.idp.saml.authn.context;
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/BindingDescriptor.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/BindingDescriptor.java
deleted file mode 100644
index 85b8cd88c..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/BindingDescriptor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.binding;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.shared.primitive.StringSupport;
-
-/**
- * Subclass that adds awareness of a Spring bean ID for a binding's
- * {@link org.opensaml.messaging.encoder.MessageEncoder}.
- */
-public class BindingDescriptor extends org.opensaml.saml.common.binding.BindingDescriptor {
-
-    /** Spring bean ID of message encoder. */
-    @Nullable private String encoderBeanId;
-    
-    /**
-     * Get the Spring bean ID of the binding's {@link org.opensaml.messaging.encoder.MessageEncoder}.
-     * 
-     * @return bean ID of message encoder
-     */
-    @Nullable public String getEncoderBeanId() {
-        return encoderBeanId;
-    }
-
-    /**
-     * Set the Spring bean ID of the binding's {@link org.opensaml.messaging.encoder.MessageEncoder}.
-     * 
-     * @param id bean ID of message encoder
-     */
-    public void setEncoderBeanId(@Nullable final String id) {
-        encoderBeanId = StringSupport.trimOrNull(id);
-    }
-    
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/package-info.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/package-info.java
deleted file mode 100644
index c19f6565c..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/binding/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Classes related to SAML bindings.
- */
-
-package net.shibboleth.idp.saml.binding;
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLArtifactConsumerProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLArtifactConsumerProfileConfiguration.java
deleted file mode 100644
index 5ba65da93..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLArtifactConsumerProfileConfiguration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.MessageContext;
-
-/**
- * Common interface for SAML profile configurations involving artifact consumption, for example artifact
- * resolution requests. 
- */
-public interface SAMLArtifactConsumerProfileConfiguration extends SAMLProfileConfiguration {
-    
-    /**
-     * Get whether artifact resolution requests should be signed.
-     * 
-     * @param messageContext current message context
-     * 
-     * @return whether artifact resolution requests should be signed
-     */
-    boolean isSignArtifactRequests(@Nullable final MessageContext messageContext); 
-
-    /**
-     * Get whether artifact resolution requests should use client TLS.
-     * 
-     * @param messageContext current message context
-     * 
-     * @return whether artifact resolution requests should use client TLS
-     */
-    boolean isClientTLSArtifactRequests(@Nullable final MessageContext messageContext); 
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLProfileConfiguration.java
index edc37c16d..08069a6cf 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLProfileConfiguration.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/SAMLProfileConfiguration.java
@@ -30,8 +30,9 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
-/** Common interface for SAML profile configurations. */
-public interface SAMLProfileConfiguration extends InterceptorAwareProfileConfiguration {
+/** Common interface for IdP SAML profile configurations. */
+public interface SAMLProfileConfiguration extends net.shibboleth.saml.profile.config.SAMLProfileConfiguration,
+        InterceptorAwareProfileConfiguration {
 
     /**
      * Get the predicate used to determine if generated assertions should be signed.
@@ -42,24 +43,6 @@ public interface SAMLProfileConfiguration extends InterceptorAwareProfileConfigu
      */
     boolean isSignAssertions(@Nullable final ProfileRequestContext profileRequestContext);
 
-    /**
-     * Get the predicate used to determine if generated requests should be signed.
-     * 
-     * @param profileRequestContext current profile request context
-     * 
-     * @return predicate used to determine if generated requests should be signed
-     */
-    boolean isSignRequests(@Nullable final ProfileRequestContext profileRequestContext);
-
-    /**
-     * Get the predicate used to determine if generated responses should be signed.
-     * 
-     * @param profileRequestContext current profile request context
-     * 
-     * @return predicate used to determine if generated responses should be signed
-     */
-    boolean isSignResponses(@Nullable final ProfileRequestContext profileRequestContext);
-
     /**
      * Get the lifetime of generated assertions.
      * 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/AllowedSAMLPresentersPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/AllowedSAMLPresentersPredicate.java
index d137744ee..ea33ddf58 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/AllowedSAMLPresentersPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/AllowedSAMLPresentersPredicate.java
@@ -38,8 +38,10 @@ import org.slf4j.Logger;
 /**
  * Predicate which evaluates the inbound {@link SAMLPresenterEntityContext#getEntityId()}
  * against a specified collection of entityIDs.
+ * 
+ * @deprecated
  */
- at SuppressWarnings("removal")
+ at Deprecated(since="5.0.0", forRemoval=true)
 public class AllowedSAMLPresentersPredicate implements Predicate<ProfileRequestContext> {
     
     /** Logger. */
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacyEncryptionRequirementPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacyEncryptionRequirementPredicate.java
deleted file mode 100644
index dc937b225..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacyEncryptionRequirementPredicate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.profile.logic.NoConfidentialityMessageChannelPredicate;
-
-/**
- * A predicate implementation that supports the legacy V2 configuration options of
- * "always", "conditional", and "never" for encryption.
- */
-public class LegacyEncryptionRequirementPredicate extends NoConfidentialityMessageChannelPredicate {
-
-    /** Internal enum for the options supported. */
-    private enum EncryptionRequirementSetting {
-        /** Always encrypt. */
-        ALWAYS,
-        
-        /** Encrypt only if confidentiality is not otherwise assumed. */
-        CONDITIONAL,
-        
-        /** Never encrypt. */
-        NEVER,
-    }
-    
-    /** The setting in effect. */
-    private final EncryptionRequirementSetting settingToApply; 
-    
-    /**
-     * Constructor.
-     * 
-     * @param setting  the setting to apply
-     */
-    public LegacyEncryptionRequirementPredicate(@Nonnull @NotEmpty final String setting) {
-        Constraint.isNotNull(setting, "Encryption requirement setting cannot be null");
-        
-        if ("always".equals(setting)) {
-            settingToApply = EncryptionRequirementSetting.ALWAYS;
-        } else if ("conditional".equals(setting)) {
-            settingToApply = EncryptionRequirementSetting.CONDITIONAL;
-        } else if ("never".equals(setting)) {
-            settingToApply = EncryptionRequirementSetting.NEVER;
-        } else {
-            throw new IllegalArgumentException("Encryption requirement setting not one of the supported values");
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean test(@Nullable final ProfileRequestContext input) {
-        switch (settingToApply) {
-            case ALWAYS:
-                return true;
-                
-            case NEVER:
-                return false;
-                
-            case CONDITIONAL:
-                return super.test(input);
-                
-            default:
-                throw new IllegalArgumentException("Encryption requirement setting not one of the supported values");
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacySigningRequirementPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacySigningRequirementPredicate.java
deleted file mode 100644
index 849c38bf4..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/LegacySigningRequirementPredicate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.profile.logic.NoIntegrityMessageChannelPredicate;
-
-/**
- * A predicate implementation that supports the legacy V2 configuration options of
- * "always", "conditional", and "never" for signing.
- */
-public class LegacySigningRequirementPredicate extends NoIntegrityMessageChannelPredicate {
-
-    /** Internal enum for the options supported. */
-    private enum SigningRequirementSetting {
-        /** Always sign. */
-        ALWAYS,
-        
-        /** Sign only if integrity is not otherwise assumed. */
-        CONDITIONAL,
-        
-        /** Never sign. */
-        NEVER,
-    }
-    
-    /** The setting in effect. */
-    private final SigningRequirementSetting settingToApply; 
-    
-    /**
-     * Constructor.
-     * 
-     * @param setting  the setting to apply
-     */
-    public LegacySigningRequirementPredicate(@Nonnull @NotEmpty final String setting) {
-        Constraint.isNotNull(setting, "Signing requirement setting cannot be null");
-        
-        if ("always".equals(setting)) {
-            settingToApply = SigningRequirementSetting.ALWAYS;
-        } else if ("conditional".equals(setting)) {
-            settingToApply = SigningRequirementSetting.CONDITIONAL;
-        } else if ("never".equals(setting)) {
-            settingToApply = SigningRequirementSetting.NEVER;
-        } else {
-            throw new IllegalArgumentException("Signing requirement setting not one of the supported values");
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean test(@Nullable final ProfileRequestContext input) {
-        switch (settingToApply) {
-            case ALWAYS:
-                return true;
-                
-            case NEVER:
-                return false;
-                
-            case CONDITIONAL:
-                return super.test(input);
-                
-            default:
-                throw new IllegalArgumentException("Signing requirement setting not one of the supported values");
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
index 27799e568..5c9216790 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
@@ -30,8 +30,8 @@ import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
 import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.shared.logic.Constraint;
 
 /** A predicate implementation that forwards to
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java
deleted file mode 100644
index 5d55e3401..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic;
-
-import java.util.function.Function;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
-import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
-import net.shibboleth.shared.logic.Constraint;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
-import org.opensaml.saml.saml2.metadata.IDPSSODescriptor;
-import org.opensaml.saml.saml2.metadata.RoleDescriptor;
-
-/**
- * A predicate implementation that forwards to 
- * {@link SAMLProfileConfiguration#isSignRequests(ProfileRequestContext)}
- * or follows {@link IDPSSODescriptor#getWantAuthnRequestsSigned()} if so configured.
- */
-public class SignRequestsPredicate extends AbstractRelyingPartyPredicate {
-    
-    /** Whether to override the result based on the WantAuthnRequestsSigned flag in SAML metadata. */
-    private boolean honorMetadata;
-    
-    /** Lookup strategy for {@link SAMLMetadataContext}. */
-    private Function<ProfileRequestContext,SAMLMetadataContext> metadataContextLookupStrategy;
-    
-    /** Constructor. */
-    public SignRequestsPredicate() {
-        metadataContextLookupStrategy = new SAMLMetadataContextLookupFunction();
-    }
-    
-    /**
-     * Set whether to override the result based on the WantAuthnRequestsSigned flag in SAML metadata.
-     * 
-     * <p>Defaults to false.</p>
-     * 
-     * @param flag flag to set
-     * 
-     * @since 4.0.0
-     */
-    public void setHonorMetadata(final boolean flag) {
-        honorMetadata = flag;
-    }
-
-    /**
-     * Set lookup strategy for {@link SAMLMetadataContext}.
-     * 
-     * @param strategy lookup strategy
-     * 
-     * @since 4.0.0
-     */
-    public void setMetadataContextLookupStrategy(
-            @Nonnull final Function<ProfileRequestContext,SAMLMetadataContext> strategy) {
-        metadataContextLookupStrategy = Constraint.isNotNull(strategy,
-                "SAMLMetadataContext lookup strategy cannot be null");
-    }
-    
-    /** {@inheritDoc} */
-    public boolean test(@Nullable final ProfileRequestContext input) {
-
-        if (honorMetadata) {
-            final SAMLMetadataContext metadataCtx = metadataContextLookupStrategy.apply(input);
-            if (metadataCtx != null) {
-                final RoleDescriptor role = metadataCtx.getRoleDescriptor();
-                if (role instanceof IDPSSODescriptor) {
-                    final Boolean flag = ((IDPSSODescriptor) role).getWantAuthnRequestsSigned();
-                    if (flag != null && flag.booleanValue()) {
-                        return true;
-                    }
-                }
-            }
-        }
-        
-        final RelyingPartyContext rpc = getRelyingPartyContext(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc instanceof SAMLProfileConfiguration) {
-                return ((SAMLProfileConfiguration) pc).isSignRequests(input);
-            }
-        }
-        
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java
deleted file mode 100644
index c8e1cb234..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
-import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-
-/** A predicate implementation that forwards
- * to {@link SAMLProfileConfiguration#isSignResponses(ProfileRequestContext)}. */
-public class SignResponsesPredicate extends AbstractRelyingPartyPredicate {
-    
-    /** {@inheritDoc} */
-    public boolean test(@Nullable final ProfileRequestContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContext(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc instanceof SAMLProfileConfiguration) {
-                return ((SAMLProfileConfiguration) pc).isSignResponses(input);
-            }
-        }
-        
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java
deleted file mode 100644
index a5244c288..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic.messaging;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.MessageContext;
-
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
-import net.shibboleth.idp.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
-
-/** A predicate implementation that forwards to 
- * {@link SAMLArtifactConsumerProfileConfiguration#isClientTLSArtifactRequests(MessageContext)}. */
-public class ClientTLSArtifactRequestsPredicate extends AbstractRelyingPartyPredicate {
-    
-    /** {@inheritDoc} */
-    public boolean test(@Nullable final MessageContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContext(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc instanceof SAMLArtifactConsumerProfileConfiguration) {
-                return ((SAMLArtifactConsumerProfileConfiguration) pc).isClientTLSArtifactRequests(input);
-            }
-        }
-        
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java
deleted file mode 100644
index ac85ce816..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.config.logic.messaging;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.MessageContext;
-
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
-import net.shibboleth.idp.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
-
-/** A predicate implementation that forwards to 
- * {@link SAMLArtifactConsumerProfileConfiguration#isSignArtifactRequests(MessageContext)}. */
-public class SignArtifactRequestsPredicate extends AbstractRelyingPartyPredicate {
-    
-    /** {@inheritDoc} */
-    public boolean test(@Nullable final MessageContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContext(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc instanceof SAMLArtifactConsumerProfileConfiguration) {
-                return ((SAMLArtifactConsumerProfileConfiguration) pc).isSignArtifactRequests(input);
-            }
-        }
-        
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategy.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/DefaultNameIdentifierFormatStrategy.java
similarity index 99%
rename from idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategy.java
rename to idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/DefaultNameIdentifierFormatStrategy.java
index 7149721a0..dd3c79134 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategy.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/DefaultNameIdentifierFormatStrategy.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.profile.logic;
+package net.shibboleth.idp.saml.profile.context.navigate;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/SAMLMetadataContextLookupFunction.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/SAMLMetadataContextLookupFunction.java
deleted file mode 100644
index 1c8611c09..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/context/navigate/SAMLMetadataContextLookupFunction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.context.navigate;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-
-import org.opensaml.messaging.context.BaseContext;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
-
-/**
- * A function to access a {@link SAMLMetadataContext} underlying a {@link RelyingPartyContext} located via a
- * lookup function, by default a child of the profile request context.
- */
-public class SAMLMetadataContextLookupFunction extends AbstractRelyingPartyLookupFunction<SAMLMetadataContext> {
-
-    /** {@inheritDoc} */
-    @Nullable public SAMLMetadataContext apply(@Nullable final ProfileRequestContext input) {
-        final RelyingPartyContext rpCtx = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpCtx != null) {
-            final BaseContext peer = rpCtx.getRelyingPartyIdContextTree();
-            if (peer != null) {
-                if (peer instanceof SAMLMetadataContext) {
-                    return (SAMLMetadataContext) peer;
-                }
-                return peer.getSubcontext(SAMLMetadataContext.class);    
-            }
-        }
-        
-        return null;
-    }
-    
-}
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/MappedEntityAttributesPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/MappedEntityAttributesPredicate.java
deleted file mode 100644
index 2f80b19c9..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/MappedEntityAttributesPredicate.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.logic;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate;
-import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate;
-import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-
-import net.shibboleth.idp.attribute.AttributesMapContainer;
-import net.shibboleth.idp.attribute.EmptyAttributeValue;
-import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
-import net.shibboleth.shared.annotation.ParameterName;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.primitive.StringSupport;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-
-import java.util.function.Predicate;
-
-/**
- * Extended version of EntityAttributes-driven predicate that uses an optimization to check
- * for mapped attributes in an {@link AttributesMapContainer} structure.
- */
-public class MappedEntityAttributesPredicate extends EntityAttributesPredicate {
-
-    /** Class logger. */
-    @Nonnull private final Logger log = LoggerFactory.getLogger(MappedEntityAttributesPredicate.class);
-    
-    /** Delimiter to build string form of scoped values. */
-    @Nonnull @NotEmpty private String scopeDelimiter = "@";
-    
-    /**
-     * Constructor.
-     * 
-     * @param candidates the {@link Candidate} criteria to check for
-     */
-    public MappedEntityAttributesPredicate(
-            @Nonnull @NonnullElements @ParameterName(name="candidates") final Collection<Candidate> candidates) {
-        super(candidates);
-
-        Constraint.isTrue(Iterables.all(candidates, c -> c.getNameFormat() == null),
-                "Use of nameFormat property is impermissible with MappedEntityAttributesPredicate");
-    }
-
-    /**
-     * Constructor.
-     * 
-     * @param candidates the {@link Candidate} criteria to check for
-     * @param trim true iff the values found in the metadata should be trimmed before comparison
-     */
-    public MappedEntityAttributesPredicate(
-            @Nonnull @NonnullElements @ParameterName(name="candidates") final Collection<Candidate> candidates,
-            @ParameterName(name="trim") final boolean trim) {
-        super(candidates, trim);
-        
-        Constraint.isTrue(Iterables.all(candidates, c -> c.getNameFormat() == null),
-                "Use of nameFormat property is impermissible with MappedEntityAttributesPredicate");
-    }
-    
-    /**
-     * Constructor.
-     * 
-     * @param candidates the {@link Candidate} criteria to check for
-     * @param trim true iff the values found in the metadata should be trimmed before comparison
-     * @param all true iff all the criteria must match to be a successful test
-     */
-    public MappedEntityAttributesPredicate(
-            @Nonnull @NonnullElements @ParameterName(name="candidates") final Collection<Candidate> candidates,
-            @ParameterName(name="trim") final boolean trim,
-            @ParameterName(name="all") final boolean all) {
-        super(candidates, trim, all);
-        
-        Constraint.isTrue(Iterables.all(candidates, c -> c.getNameFormat() == null),
-                "Use of nameFormat property is impermissible with MappedEntityAttributesPredicate");
-    }
-    
-    /**
-     * Set delimiter for constructing scoped values for comparison.
-     * 
-     * <p>Defaults to '@'.</p>
-     * 
-     * @param delimiter delimiter to use
-     */
-    public void setScopeDelimiter(@Nonnull @NotEmpty final String delimiter) {
-        scopeDelimiter = Constraint.isNotNull(StringSupport.trimOrNull(delimiter),
-                "Scope delimiter cannot be null or empty");
-    }
-    
-    /** {@inheritDoc} */
-    @Override
-    public boolean test(@Nullable final EntityDescriptor input) {
-        
-        if (getCandidates().isEmpty()) {
-            return true;
-        } else if (input == null) {
-            return false;
-        }
-        
-        final Collection<Candidate> candidates = new ArrayList<>(getCandidates());
-
-        if (doTest(input, input.getEntityID(), candidates)) {
-            
-            // At least one match. Check if sufficient.
-            if (!getMatchAll() || candidates.isEmpty()) {
-                return true;
-            }
-        }
-        
-        XMLObject parent = input.getParent();
-        while (parent instanceof EntitiesDescriptor) {
-            if (doTest(parent, ((EntitiesDescriptor) parent).getName(), candidates)) {
-                
-                // At least one match. Check if sufficient.
-                if (!getMatchAll() || candidates.isEmpty()) {
-                    return true;
-                }
-            }
-            parent = parent.getParent();
-        }
-        
-        return false;
-    }
-    
-    /**
-     * Evaluate the input object's attached object metadata against the supplied candidates.
-     * 
-     * <p>Any candidates that match will be removed from the input collection.</p>
-     * 
-     * @param input input object
-     * @param name label for logging
-     * @param candidates candidates to check
-     * 
-     * @return true iff the attached object metadata matched at least one input candidate
-     */
-    private boolean doTest(@Nonnull final XMLObject input, @Nullable final String name,
-            @Nonnull @NonnullElements final Collection<Candidate> candidates) {
-        final List<AttributesMapContainer> containerList =
-                input.getObjectMetadata().get(AttributesMapContainer.class);
-        if (null == containerList || containerList.isEmpty() || containerList.get(0).get() == null ||
-                containerList.get(0).get().isEmpty()) {
-            log.trace("No mapped Entity Attributes for {}", name);
-            return false;
-        }
-        
-        final Multimap<String,? extends IdPAttribute> entityAttributes = containerList.get(0).get();
-        
-        log.trace("Checking for match against {} Entity Attributes for {}", entityAttributes.size(),
-                name);
-        
-        // Remove each candidate that matches. Tag values are OR'd for matching purposes.
-        // Return true iff at least one candidate matches.
-        return candidates.removeIf(new EntityAttributesMatcher(entityAttributes));
-    }
-
-    /**
-     * Determines whether an {@link Candidate} criterion is satisfied by the mapped
-     * attributes in an entity's metadata.
-     */
-    private class EntityAttributesMatcher implements Predicate<Candidate> {
-        
-        /** Population to evaluate for a match. */
-        @Nonnull private final Multimap<String,? extends IdPAttribute> attributes;
-        
-        /**
-         * Constructor.
-         *
-         * @param attrs population to evaluate for a match
-         */
-        public EntityAttributesMatcher(@Nonnull @NonnullElements final Multimap<String,? extends IdPAttribute> attrs) {
-            attributes = Constraint.isNotNull(attrs, "Extension attributes cannot be null");
-        }
-
-// Checkstyle: CyclomaticComplexity OFF
-        /** {@inheritDoc} */
-        public boolean test(@Nullable final Candidate input) {
-            
-            if (input == null || input.getNameFormat() != null) {
-                return false;
-            }
-            
-            final List<String> tagvals = input.getValues();
-            final List<Pattern> tagexps = input.getRegexps();
-
-            // Track whether we've found every match we need (possibly with arrays of 0 size).
-            final boolean[] valflags = new boolean[tagvals.size()];
-            final boolean[] expflags = new boolean[tagexps.size()];
-
-            // Check each attribute/tag in the populated set.
-            for (final IdPAttribute a : attributes.get(input.getName())) {
-
-                // Check each tag value's simple content for a value match.
-                for (int tagindex = 0; tagindex < tagvals.size(); ++tagindex) {
-                    final String tagvalstr = tagvals.get(tagindex);
-
-                    for (final IdPAttributeValue cval : a.getValues()) {
-                        assert cval != null;
-                        final String cvalstr = attributeValueToString(cval);
-                        if (tagvalstr != null && cvalstr != null) {
-                            if (tagvalstr.equals(cvalstr)) {
-                                log.trace("Matched mapped Entity Attribute ({}) value {}", a.getId(), tagvalstr);
-                                valflags[tagindex] = true;
-                                break;
-                            } else if (getTrimTags()) {
-                                if (tagvalstr.equals(cvalstr.trim())) {
-                                    log.trace("Matched mapped Entity Attribute ({}) value {}", a.getId(), tagvalstr);
-                                    valflags[tagindex] = true;
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                }
-
-                // Check each tag regular expression for a match.
-                for (int tagindex = 0; tagindex < tagexps.size(); ++tagindex) {
-
-                    for (final IdPAttributeValue cval : a.getValues()) {
-                        assert cval != null;
-                        final String cvalstr = attributeValueToString(cval);
-                        if (tagexps.get(tagindex) != null && cvalstr != null) {
-                            if (tagexps.get(tagindex).matcher(cvalstr).matches()) {
-                                log.trace("Matched mapped Entity Attribute ({}) value {}", a.getId(), cvalstr);
-                                expflags[tagindex] = true;
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-
-            for (final boolean flag : valflags) {
-                if (!flag) {
-                    return false;
-                }
-            }
-
-            for (final boolean flag : expflags) {
-                if (!flag) {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-// Checkstyle: CyclomaticComplexity ON
-     
-        /**
-         * Convert an IdPAttributeValue to a String if the type is recognized.
-         * 
-         * @param value object to convert
-         * @return the converted value, or null
-         */
-        @Nullable private String attributeValueToString(@Nonnull final IdPAttributeValue value) {
-            
-            if (value instanceof ScopedStringAttributeValue) {
-                return ((ScopedStringAttributeValue) value).getValue() + scopeDelimiter +
-                        ((ScopedStringAttributeValue) value).getScope();
-            } else if (value instanceof StringAttributeValue) {
-                return ((StringAttributeValue) value).getValue();
-            } else if (value instanceof EmptyAttributeValue) {
-                final EmptyType empty = ((EmptyAttributeValue) value).getValue();
-                return EmptyType.ZERO_LENGTH_VALUE.equals(empty) ? "" : null;
-            }
-            return null;
-        }
-    }
-
-}
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/package-info.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/package-info.java
deleted file mode 100644
index 5f6bbd260..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/logic/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Functions and predicates supporting SAML profile behavior.
- */
-
-package net.shibboleth.idp.saml.profile.logic;
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml1/profile/package-info.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml1/profile/package-info.java
deleted file mode 100644
index bd2ece482..000000000
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml1/profile/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** SAML 1 profile actions and classes helping to support them. */
-
-package net.shibboleth.idp.saml.saml1.profile;
\ No newline at end of file
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ArtifactAwareProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ArtifactAwareProfileConfiguration.java
index a9c078d65..37f02b378 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ArtifactAwareProfileConfiguration.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ArtifactAwareProfileConfiguration.java
@@ -29,7 +29,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.saml.profile.config.SAMLArtifactAwareProfileConfiguration;
 import net.shibboleth.idp.saml.profile.config.SAMLArtifactConfiguration;
-import net.shibboleth.idp.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
+import net.shibboleth.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.logic.FunctionSupport;
diff --git a/idp-saml-impl/pom.xml b/idp-saml-impl/pom.xml
index 539b08ee5..f614bae3b 100644
--- a/idp-saml-impl/pom.xml
+++ b/idp-saml-impl/pom.xml
@@ -52,6 +52,10 @@
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-profile-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-saml-profile-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-profile-impl</artifactId>
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/SpringAwareMessageEncoderFactory.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/SpringAwareMessageEncoderFactory.java
index 9ca72a0e0..6efb146ff 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/SpringAwareMessageEncoderFactory.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/SpringAwareMessageEncoderFactory.java
@@ -31,7 +31,7 @@ import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 
-import net.shibboleth.idp.saml.binding.BindingDescriptor;
+import net.shibboleth.saml.binding.BindingDescriptor;
 import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
 import net.shibboleth.shared.component.AbstractInitializableComponent;
 
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
index 5405436c8..161f8e22a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
@@ -31,9 +31,9 @@ import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 
 import net.shibboleth.idp.profile.relyingparty.RelyingPartyConfiguration;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
-import net.shibboleth.idp.saml.profile.logic.MappedEntityAttributesPredicate;
 import net.shibboleth.profile.context.logic.RelyingPartyIdPredicate;
+import net.shibboleth.saml.profile.context.logic.MappedEntityAttributesPredicate;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
index e6530aee5..e2638843d 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
@@ -67,9 +67,9 @@ import net.shibboleth.idp.profile.IdPEventIds;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextDeclRefPrincipal;
 import net.shibboleth.idp.saml.authn.principal.NameIDPrincipal;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.shared.annotation.constraint.Live;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/context/navigate/tests/DefaultNameIdentifierFormatStrategyTest.java
similarity index 98%
rename from idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java
rename to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/context/navigate/tests/DefaultNameIdentifierFormatStrategyTest.java
index 819ca00fb..d05a8020a 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/context/navigate/tests/DefaultNameIdentifierFormatStrategyTest.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.profile.logic.tests;
+package net.shibboleth.idp.saml.profile.context.navigate.tests;
 
 import java.util.Arrays;
 import java.util.List;
 
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy;
+import net.shibboleth.idp.saml.profile.context.navigate.DefaultNameIdentifierFormatStrategy;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/InitializeOutboundMessageContextForErrorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/InitializeOutboundMessageContextForErrorTest.java
index 108bd18aa..d9e83068d 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/InitializeOutboundMessageContextForErrorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/InitializeOutboundMessageContextForErrorTest.java
@@ -20,8 +20,8 @@ package net.shibboleth.idp.saml.profile.impl;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.binding.BindingDescriptor;
 import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.saml.binding.BindingDescriptor;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java
deleted file mode 100644
index d68abb83e..000000000
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.saml.profile.logic.tests;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-
-import org.opensaml.core.criterion.EntityIdCriterion;
-import org.opensaml.core.testing.XMLObjectBaseTestCase;
-import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate;
-import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate;
-import org.opensaml.saml.metadata.resolver.MetadataResolver;
-import org.opensaml.saml.metadata.resolver.filter.MetadataNodeProcessor;
-import org.opensaml.saml.metadata.resolver.filter.impl.NodeProcessingMetadataFilter;
-import org.opensaml.saml.metadata.resolver.impl.DOMMetadataResolver;
-import org.opensaml.saml.saml2.core.Attribute;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.springframework.context.support.ConversionServiceFactoryBean;
-import org.springframework.context.support.GenericApplicationContext;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.w3c.dom.Document;
-
-import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
-import net.shibboleth.idp.saml.attribute.impl.AttributeMappingNodeProcessor;
-import net.shibboleth.idp.saml.profile.logic.MappedEntityAttributesPredicate;
-import net.shibboleth.shared.resolver.CriteriaSet;
-import net.shibboleth.shared.resolver.ResolverException;
-import net.shibboleth.shared.service.ReloadableService;
-import net.shibboleth.shared.spring.config.StringToDurationConverter;
-import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
-
-/**
- * Unit test for {@link EntityAttributesPredicate} and {@link MappedEntityAttributesPredicate}.
- */
- at SuppressWarnings("javadoc")
-public class EntityAttributesPredicateTest extends XMLObjectBaseTestCase {
-    
-    private String fooEntityID = "http://foo.example.org/shibboleth";
-    
-    private String barEntityID = "http://bar.example.org/shibboleth";
-    
-    private String bazEntityID = "http://baz.example.org/shibboleth";
-    
-    private GenericApplicationContext pendingTeardownContext = null;
-    
-    private MetadataResolver resolver = null;
-    
-    @BeforeClass
-    protected void setUp() throws Exception {
-        String mdFileName = "/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml";
-        
-        final Document mdDoc = parserPool.parse(getClass().getResourceAsStream(mdFileName));
-        final DOMMetadataResolver mdProvider = new DOMMetadataResolver(mdDoc.getDocumentElement());
-        
-        List<MetadataNodeProcessor> processors = new ArrayList<>();
-        processors.add(new AttributeMappingNodeProcessor(getService()));
-        
-        final NodeProcessingMetadataFilter nodeFilter =  new NodeProcessingMetadataFilter();
-        nodeFilter.setNodeProcessors(processors);
-        nodeFilter.initialize();
-        
-        mdProvider.setMetadataFilter(nodeFilter);
-        mdProvider.setId("Test");
-        mdProvider.initialize();
-
-        resolver = mdProvider;
-    }
-    
-    @AfterClass public void tearDownTestContext() {
-        if (null == pendingTeardownContext ) {
-            return;
-        }
-        pendingTeardownContext.close();
-        pendingTeardownContext = null;
-    }
-    
-    private void setTestContext(GenericApplicationContext context) {
-        tearDownTestContext();
-        pendingTeardownContext = context;
-    }
-    
-    private EntityDescriptor getEntity(final String entityID) throws ResolverException {
-        return resolver.resolveSingle(new CriteriaSet(new EntityIdCriterion(entityID)));
-    }
-    
-    private ReloadableService<AttributeTranscoderRegistry> getService() {
-        final GenericApplicationContext context = new GenericApplicationContext();
-        setTestContext(context);
-        context.setDisplayName("ApplicationContext: ");
-
-        final ConversionServiceFactoryBean service = new ConversionServiceFactoryBean();
-        service.setConverters(new HashSet<>(Arrays.asList(new StringToDurationConverter())));
-        service.afterPropertiesSet();
-
-        context.getBeanFactory().setConversionService(service.getObject());
-        
-        final SchemaTypeAwareXMLBeanDefinitionReader beanDefinitionReader =
-                new SchemaTypeAwareXMLBeanDefinitionReader(context);
-
-        beanDefinitionReader.loadBeanDefinitions("/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml");
-        context.refresh();
-
-        return context.getBean(ReloadableService.class);
-    }
-
-    @Test
-    public void testSimpleMatch() throws ResolverException {
-        
-        final Candidate tag = new Candidate("zorkmids", Attribute.BASIC);
-        tag.setValues(Collections.singletonList("10"));
-        
-        final EntityAttributesPredicate predicate = new EntityAttributesPredicate(Collections.singletonList(tag));
-        Assert.assertFalse(predicate.test(getEntity(fooEntityID)));
-        Assert.assertTrue(predicate.test(getEntity(barEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(bazEntityID)));
-    }    
-    
-    @Test
-    public void testMultiLevelMatch() throws ResolverException {
-        final Candidate tag1 = new Candidate("http://macedir.org/entity-category", Attribute.URI_REFERENCE);
-        tag1.setValues(Collections.singletonList("http://refeds.org/category/research-and-scholarship"));
-
-        final Candidate tag2 = new Candidate("urn:oasis:names:tc:SAML:profiles:subject-id:req", Attribute.URI_REFERENCE);
-        tag2.setValues(Collections.singletonList("none"));
-
-        final EntityAttributesPredicate predicate =
-                new EntityAttributesPredicate(Arrays.asList(tag1, tag2), false, true);
-        Assert.assertTrue(predicate.test(getEntity(fooEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(barEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(bazEntityID)));
-    }
-    
-    @Test
-    public void testSimpleMatchMapped() throws ResolverException {
-        
-        final Candidate tag = new Candidate("zorkmids");
-        tag.setValues(Collections.singletonList("10"));
-        
-        final MappedEntityAttributesPredicate predicate = new MappedEntityAttributesPredicate(Collections.singletonList(tag));
-        Assert.assertFalse(predicate.test(getEntity(fooEntityID)));
-        Assert.assertTrue(predicate.test(getEntity(barEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(bazEntityID)));
-    }
-
-    @Test
-    public void testMultiLevelMappedMatch() throws ResolverException {
-        final Candidate tag1 = new Candidate("http://macedir.org/entity-category");
-        tag1.setValues(Collections.singletonList("http://refeds.org/category/research-and-scholarship"));
-
-        final Candidate tag2 = new Candidate("subject-id-req");
-        tag2.setValues(Collections.singletonList("none"));
-
-        final MappedEntityAttributesPredicate predicate =
-                new MappedEntityAttributesPredicate(Arrays.asList(tag1, tag2), false, true);
-        Assert.assertTrue(predicate.test(getEntity(fooEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(barEntityID)));
-        Assert.assertFalse(predicate.test(getEntity(bazEntityID)));
-    }
-
-}
\ No newline at end of file
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml
deleted file mode 100644
index a9850f5a0..000000000
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<EntitiesDescriptor Name="example.org"
-    xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
-    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
-    xmlns:mdattr="urn:oasis:names:tc:SAML:metadata:attribute">
-    
-    <Extensions>
-        <mdattr:EntityAttributes>
-            <saml:Attribute Name="http://macedir.org/entity-category"
-                NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
-                <saml:AttributeValue>http://refeds.org/category/research-and-scholarship</saml:AttributeValue>
-            </saml:Attribute>
-        </mdattr:EntityAttributes>
-    </Extensions>
-   
-    <EntityDescriptor entityID="http://foo.example.org/shibboleth">
-      
-      <Extensions>
-        <mdattr:EntityAttributes>
-            <saml:Attribute Name="urn:oasis:names:tc:SAML:profiles:subject-id:req"
-                NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
-                <saml:AttributeValue>none</saml:AttributeValue>
-            </saml:Attribute>
-        </mdattr:EntityAttributes>
-      </Extensions>
-      
-      <IDPSSODescriptor protocolSupportEnumeration="foo">
-         <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://foo.example.org/shibboleth/SSO_BAR"/>
-      </IDPSSODescriptor>
-      
-   </EntityDescriptor>
-   
-
-   <EntityDescriptor entityID="http://bar.example.org/shibboleth">
-
-      <Extensions>
-        <mdattr:EntityAttributes>
-            <saml:Attribute Name="zorkmids"
-                NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
-                <saml:AttributeValue>10</saml:AttributeValue>
-            </saml:Attribute>
-            <saml:Attribute Name="babelfish"
-                NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
-                <saml:AttributeValue>10</saml:AttributeValue>
-            </saml:Attribute>
-        </mdattr:EntityAttributes>
-      </Extensions>
-      
-      <SPSSODescriptor protocolSupportEnumeration="foo">
-         <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" Location="https://bar.example.org/Shibboleth.sso/POST" index="0"/>
-      </SPSSODescriptor>
-      
-   </EntityDescriptor>
-
-   <EntityDescriptor entityID="http://baz.example.org/shibboleth">
-
-      <SPSSODescriptor protocolSupportEnumeration="foo">
-         <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" Location="https://baz.example.org/Shibboleth.sso/POST" index="0"/>
-      </SPSSODescriptor>
-      
-   </EntityDescriptor>
-
-</EntitiesDescriptor>
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml
deleted file mode 100644
index ecbf29ad0..000000000
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml
+++ /dev/null
@@ -1,41 +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:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns:util="http://www.springframework.org/schema/util"
-        xmlns:p="http://www.springframework.org/schema/p"
-        xmlns:c="http://www.springframework.org/schema/c"
-        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">
-
-    <!-- Needed to allow for auto-wiring of descriptors and other componnents. -->
-    <context:annotation-config />
-        
-    <bean id="SAML2NamingFunction" destroy-method=""
-            class="net.shibboleth.idp.attribute.transcoding.BasicNamingFunction"
-            c:claz="org.opensaml.saml.saml2.core.Attribute">
-        <constructor-arg name="function">
-            <bean destroy-method=""
-                class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
-        </constructor-arg>
-    </bean>
-    
-    <bean id="RegistryServiceStrategy" class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy"
-        p:id="shibboleth.AttributeRegistryService" />
-
-    <bean id="shibboleth.AttributeRegistryService" class="net.shibboleth.shared.spring.service.ReloadableSpringService"
-            c:claz="net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry"
-            c:strategy-ref="RegistryServiceStrategy"
-            p:failFast="true"
-            p:reloadCheckDelay="0">
-        <property name="serviceConfigurations">
-            <util:list>
-                <value>net/shibboleth/idp/saml/profile/logic/attribute-registry.xml</value>
-            </util:list>
-        </property>
-    </bean>
-
-</beans>
\ No newline at end of file
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml
deleted file mode 100644
index 9c6fbfda8..000000000
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml
+++ /dev/null
@@ -1,28 +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">
-
-    <bean id="SAML2StringTranscoder"
-        class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder" />
-    <bean id="SAML2ScopedStringTranscoder"
-        class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ScopedStringAttributeTranscoder" />
-    <bean id="SAML2ByteTranscoder"
-        class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ByteAttributeTranscoder" />
-    <bean id="SAML2XMLObjectTranscoder"
-        class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2XMLObjectAttributeTranscoder" />
-
-    <bean id="shibboleth.TranscodingRuleLoader" destroy-method=""
-        class="net.shibboleth.idp.attribute.transcoding.impl.TranscodingRuleLoader"
-        c:dir="net/shibboleth/idp/saml/profile/logic/rules" />
-    
-</beans>
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt
deleted file mode 100644
index 17d1ceb29..000000000
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-id = subject-id-req
-transcoder = SAML2StringTranscoder
-saml2.name = urn:oasis:names:tc:SAML:profiles:subject-id:req
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt
deleted file mode 100644
index 1b25004df..000000000
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-id = zorkmids
-transcoder = SAML2StringTranscoder
-saml2.name = zorkmids
-saml2.nameFormat = urn:oasis:names:tc:SAML:2.0:attrname-format:basic
diff --git a/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java b/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
index 9e5035bbc..0567dad88 100644
--- a/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
+++ b/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
@@ -40,8 +40,8 @@ import org.slf4j.Logger;
 
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.LoggerFactory;
diff --git a/idp-war/pom.xml b/idp-war/pom.xml
index 56576aae1..cce542636 100644
--- a/idp-war/pom.xml
+++ b/idp-war/pom.xml
@@ -122,6 +122,10 @@
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-profile-impl</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-saml-profile-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-attribute-api</artifactId>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list