[java-idp-plugin-oidc-rp] branch main updated: JOIDCRP-41 - Upgrade for IdP V5 compatibility

Phil Smart philip.smart at jisc.ac.uk
Mon Jul 17 13:30:35 UTC 2023


This is an automated email from the git hooks/post-receive script.

philsmart pushed a commit to branch main
in repository java-idp-plugin-oidc-rp.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-oidc-rp.git;a=commit;h=d0b5b619e96b776b8cbf852ad2a834a58ed9a372

The following commit(s) were added to refs/heads/main by this push:
     new d0b5b61  JOIDCRP-41 - Upgrade for IdP V5 compatibility
d0b5b61 is described below

commit d0b5b619e96b776b8cbf852ad2a834a58ed9a372
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Mon Jul 17 14:30:27 2023 +0100

    JOIDCRP-41 - Upgrade for IdP V5 compatibility
    
     - Update HttpClient to V5
     - Change to jakarta namespace
     - net.shibboleth.utilities.java.support -> net.shibboleth.shared
     - net.shibboleth.ext.spring -> net.shibboleth.shared.spring
     - Update internal dependencies
     - Update Relying Party configuration for tests
     - Remove repositories from POM
    
    Still need to upgrade deprecated method calls.
    
    https://shibboleth.atlassian.net/browse/JOIDCRP-41
---
 idp-oidc-rp-api/pom.xml                            |  16 +-
 .../navigate/ExtraAudiencesLookupStrategy.java     |   8 +-
 .../rp/config/navigate/MaxAgeLookupFunction.java   |  10 +-
 ...viderMetadataStringListValueLookupFunction.java |   4 +-
 .../config/navigate/RedirectUriLookupFunction.java |   6 +-
 .../UserInfoHttpRequestMethodLookupStrategy.java   |   6 +-
 .../oidc/rp/context/EndUserClaimsContext.java      |   2 +-
 .../authn/oidc/rp/context/OAuth2ClientContext.java |   4 +-
 .../authn/oidc/rp/context/OIDCAuthnContext.java    |   2 +-
 .../rp/context/OutboundMessageHandlerContext.java  |   2 +-
 .../AbstractTokenResponseLookupStrategy.java       |   2 +-
 ...bstractUserInfoTokenResponseLookupStrategy.java |   2 +-
 .../navigate/AccessTokenLookupStrategy.java        |   2 +-
 .../AuthenticationRequestTimeLookupFunction.java   |   2 +-
 .../ClientIDFromOAuth2ClientContextFunction.java   |   4 +-
 .../DefaultEndUserClaimsLookupStrategy.java        |   4 +-
 .../navigate/DefaultIDTokenLookupStrategy.java     |   2 +-
 .../navigate/DefaultUserInfoJWTLookupStrategy.java |   2 +-
 .../navigate/EncryptedIDTokenLookupStrategy.java   |   2 +-
 .../EncryptedUserInfoJWTLookupStrategy.java        |   2 +-
 .../IDTokenInAccessTokenUpdateStrategy.java        |   4 +-
 .../navigate/IDTokenJOSEHeaderLookupStrategy.java  |   2 +-
 .../navigate/RequestObjectTokenUpdateStrategy.java |   2 +-
 .../navigate/SubFromIDTokenLookupFunction.java     |   2 +-
 ...nfoInUserInfoResponseContextUpdateStrategy.java |   2 +-
 .../AbstractUserInfoResponseTypeCondition.java     |   2 +-
 ...earerTokenForClientAuthenticationPredicate.java |   6 +-
 .../logic/RequestObjectRequiredAndSupported.java   |   6 +-
 .../RequiresSignatureVerificationPredicate.java    |   8 +-
 .../context/logic/UserInfoLookupCondition.java     |   2 +-
 ...WTClaimsSetFromRequestObjectLookupFunction.java |   2 +-
 .../PayloadFromRequestObjectLookupFunction.java    |   2 +-
 .../rp/principal/OAuth2AccessTokenPrincipal.java   |   6 +-
 .../rp/principal/OAuth2RefreshTokenPrincipal.java  |   6 +-
 .../principal/OIDCSubjectIdentifierPrincipal.java  |   9 +-
 .../navigate/DefaultIssuerIDLookupFunction.java    |  47 --
 .../RequestObjectRequiredAndSupportedTest.java     |   2 +-
 ...RequiresSignatureVerificationPredicateTest.java |   2 +-
 idp-oidc-rp-dist/pom.xml                           |   2 +-
 idp-oidc-rp-impl/pom.xml                           |  90 ++--
 .../idp/plugin/authn/oidc/rp/OIDCRPModule.java     |   2 +-
 .../idp/plugin/authn/oidc/rp/OIDCRPPlugin.java     |   4 +-
 .../rp/audit/impl/FixedStringAuditExtractor.java   |   6 +-
 .../impl/AbstractJSONResponseDecoderFunction.java  |  14 +-
 .../impl/DefaultAccessTokenResponseDecoder.java    |  16 +-
 .../impl/DefaultUserInfoResponseDecoder.java       |  25 +-
 .../impl/AbstractRequestEncoderFunction.java       |  16 +-
 .../impl/DefaultAuthCodeTokenRequestEncoder.java   |  11 +-
 .../impl/DefaultUserInfoRequestEncoder.java        |  29 +-
 .../impl/AbstractHttpOIDCAuthenticationAction.java |  45 +-
 .../AbstractOIDCAuthenticationResponseAction.java  |   4 +-
 ...ssTokenToPrivateCredentialsMappingStrategy.java |   2 +-
 .../oidc/rp/impl/AuthorizationController.java      |  16 +-
 .../authn/oidc/rp/impl/BuildRequestObject.java     |   6 +-
 .../impl/DefaultRedirectUriCreationFunction.java   |  18 +-
 .../oidc/rp/impl/ExchangeCodeForAccessToken.java   |   4 +-
 .../rp/impl/InitializeAuthorizationRequest.java    |   4 +-
 ...nitializeOAuth2ClientAuthenticationContext.java |   4 +-
 ...izeOAuth2ClientAuthenticationMethodHandler.java |   6 +-
 .../rp/impl/InitializeOAuth2ClientContext.java     |   8 +-
 ...OutboundAuthorizationRequestMessageContext.java |   6 +-
 .../rp/impl/InitializeRelyingPartyContext.java     |   6 +-
 .../InitializeUnverifiedRelyingPartyContext.java   |   6 +-
 .../authn/oidc/rp/impl/OIDCProxySupport.java       |   2 +-
 .../rp/impl/PrepareOIDCInboundMessageContext.java  |   8 +-
 .../authn/oidc/rp/impl/ProcessEndUserClaims.java   |   4 +-
 ...impleOIDCSubjectIdentifierCanonicalization.java |   2 +-
 .../authn/oidc/rp/impl/UserInfoEndpointLookup.java |   4 +-
 .../rp/impl/ValidateOAuthAccessTokenResponse.java  |   6 +-
 .../oidc/rp/impl/ValidateOIDCAuthentication.java   | 100 ++---
 .../authn/oidc/rp/impl/ValidateResponseState.java  |   2 +-
 .../authn/oidc/rp/impl/ValidateTokenClaims.java    |   8 +-
 .../rp/impl/ValidateUserInfoJSONObjectClaims.java  |   4 +-
 ...CAuthenticationRequestActionMessageHandler.java |  10 +-
 ...actOIDCAuthenticationRequestMessageHandler.java |   4 +-
 .../oidc/rp/messaging/impl/AddNonceHandler.java    |   4 +-
 .../rp/messaging/impl/AddRedirectURIHandler.java   |  10 +-
 .../messaging/impl/AddRequestedClaimsHandler.java  |   2 +-
 .../oidc/rp/messaging/impl/AddStateHandler.java    |   4 +-
 .../impl/OIDCProviderMetadataLookupHandler.java    |  12 +-
 ...henticationRequestNonceClaimLookupStrategy.java |   2 +-
 ...tAuthenticationConfigurationLookupFunction.java |  44 +-
 .../impl/NonceValidationActivationCondition.java   |   2 +-
 .../META-INF/net.shibboleth.idp/postconfig.xml     |   8 +-
 .../oidc-relying-party-authn-beans.xml             |  30 +-
 .../idp/flows/oidc/rp/keyset/keyset-beans.xml      |   2 +-
 .../DefaultAccessTokenResponseDecoderTest.java     |  38 +-
 .../impl/DefaultUserInfoResponseDecoderTest.java   | 110 ++---
 .../NimbusAuthCodeTokenRequestEncoderTest.java     |  32 +-
 .../authn/oidc/rp/impl/AbstractOIDCTest.java       |  16 +-
 .../oidc/rp/impl/AuthorizationControllerTest.java  |  25 +-
 .../authn/oidc/rp/impl/BuildRequestObjectTest.java |  11 +-
 .../rp/impl/DefaultClaimMergingStrategyTest.java   |   2 +-
 .../DefaultRedirectUriCreationFunctionTest.java    |   4 +-
 .../rp/impl/ExchangeCodeForAccessTokenTest.java    |  58 +--
 ...MockAsymmetricJOSEObjectCredentialResolver.java |   4 +-
 .../idp/plugin/authn/oidc/rp/impl/MockMatcher.java |   7 +-
 .../authn/oidc/rp/impl/MockReloadableService.java  |  55 ---
 .../oidc/rp/impl/MockSimpleStringTranscoder.java   |   2 +-
 .../plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java  |  46 +-
 .../oidc/rp/impl/ProcessEndUserClaimsTest.java     |  11 +-
 ...eOIDCSubjectIdentifierCanonicalizationTest.java |  19 +-
 .../oidc/rp/impl/UserInfoEndpointLookupTest.java   |  52 +--
 .../impl/ValidateOAuthAccessTokenResponseTest.java |  15 +-
 .../rp/impl/ValidateOIDCAuthenticationTest.java    |   9 +-
 .../oidc/rp/impl/ValidateResponseStateTest.java    |  11 +-
 ...nticationContextClassReferencesHandlerTest.java |   9 +-
 .../messaging/impl/AddEndpointURIHandlerTest.java  |   9 +-
 .../AddForceAuthenticationPromptHandlerTest.java   |   9 +-
 .../impl/AddPassiveAuthenticationHandlerTest.java  |   4 +-
 .../messaging/impl/AddRedirectURIHandlerTest.java  |   9 +-
 .../impl/AddRequestedClaimsHandlerTest.java        |   9 +-
 .../impl/AddResponseTypeAndModeHandlerTest.java    |   9 +-
 .../rp/messaging/impl/AddScopesHandlerTest.java    |   9 +-
 .../OIDCProviderMetadataLookupHandlerTest.java     |   4 +-
 .../flow/AbstractAuthnXmlFlowExecutionTests.java   |  75 ++--
 .../authn/test/flow/mock/MockFlowBuilder.java      |   2 +-
 .../test/spring/CustomFlowModelFlowBuilder.java    |   6 +-
 .../authn/test/spring/MockApplicationContext.java  | 482 ---------------------
 .../attribute/filter/attribute-filter-system.xml   |   2 +-
 .../resources/attribute/registry/postconfig.xml    |   2 +-
 .../resources/conf/additional-system-beans.xml     |   2 +-
 .../conf/test-relying-party-postconfig.xml         |  20 +-
 .../resources/conf/test-relying-party-system.xml   |  13 +-
 .../conf/test-relyingparty-resolver-service.xml    |  40 +-
 pom.xml                                            |  62 +--
 126 files changed, 737 insertions(+), 1387 deletions(-)

diff --git a/idp-oidc-rp-api/pom.xml b/idp-oidc-rp-api/pom.xml
index 15d103e..e770688 100644
--- a/idp-oidc-rp-api/pom.xml
+++ b/idp-oidc-rp-api/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>net.shibboleth.idp.plugin.authn</groupId>
 		<artifactId>idp-plugin-oidc-rp-parent</artifactId>
-		<version>1.1.1-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>idp-plugin-oidc-rp-api</artifactId>
@@ -21,11 +21,6 @@
 
 	<dependencies>        
 		<!-- Provided dependencies -->
-		 <dependency>
-            <groupId>net.shibboleth.utilities</groupId>
-            <artifactId>java-support</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>net.minidev</groupId>
             <artifactId>json-smart</artifactId>     
@@ -65,6 +60,11 @@
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-profile-api</artifactId>
             <scope>provided</scope>
+        </dependency>
+         <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-profile-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.nimbusds</groupId>
@@ -72,8 +72,8 @@
             <scope>provided</scope>
         </dependency>  
 		 <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
          <dependency>
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
index 1fa7932..0bff712 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ExtraAudiencesLookupStrategy.java
@@ -28,11 +28,11 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Locate additional accepted audiences from the ID Token profile config value.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
index d17aedc..e03d00b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/MaxAgeLookupFunction.java
@@ -25,13 +25,13 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationProfileConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Locate the maximum authentication age from the authentication request (first) or profile configuration (second). 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
index 808a5c5..7d2afe0 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/ProviderMetadataStringListValueLookupFunction.java
@@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Fetches the value for the configured key as List of {@link String}s. May be {@code null} if the value is not found 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
index 429bcb4..74bf760 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/RedirectUriLookupFunction.java
@@ -24,10 +24,10 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 
 /**
  * Pull a redirect_uri from the Relying Party profile config if present. Returns {@literal null} otherwise. 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
index dd0850f..0cedd0b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/config/navigate/UserInfoHttpRequestMethodLookupStrategy.java
@@ -21,11 +21,11 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 
 /** 
  * Locate the HTTP request method to use for the UserInfo request. Returns {@link HttpRequestMethod#GET} if not 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/EndUserClaimsContext.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/EndUserClaimsContext.java
index 7a4d135..ce97a52 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/EndUserClaimsContext.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/EndUserClaimsContext.java
@@ -25,7 +25,7 @@ import org.opensaml.messaging.context.BaseContext;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** A context to hold the final set of claims associated with an authenticated end-user.*/
 public class EndUserClaimsContext extends BaseContext {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OAuth2ClientContext.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OAuth2ClientContext.java
index 5562378..efdc513 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OAuth2ClientContext.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OAuth2ClientContext.java
@@ -25,8 +25,8 @@ import javax.annotation.Nullable;
 import org.opensaml.messaging.context.BaseContext;
 
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A context to store information pertaining to the OAuth2 client (Relying Party) to use in communication
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OIDCAuthnContext.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OIDCAuthnContext.java
index 8c28713..e7563ea 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OIDCAuthnContext.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OIDCAuthnContext.java
@@ -27,7 +27,7 @@ import org.opensaml.messaging.decoder.MessageDecoder;
 import org.opensaml.messaging.handler.MessageHandler;
 import org.opensaml.profile.action.ProfileAction;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Manages state during proxied OIDC authentication via a Spring Controller.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OutboundMessageHandlerContext.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OutboundMessageHandlerContext.java
index fbeb67e..5e0820c 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OutboundMessageHandlerContext.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/OutboundMessageHandlerContext.java
@@ -22,7 +22,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.messaging.context.BaseContext;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * A context to stash controller parameters for use by message handlers.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractTokenResponseLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractTokenResponseLookupStrategy.java
index 0adfde2..f26d52e 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractTokenResponseLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractTokenResponseLookupStrategy.java
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Base class for looking up the token response context.*/
 public abstract class AbstractTokenResponseLookupStrategy {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractUserInfoTokenResponseLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractUserInfoTokenResponseLookupStrategy.java
index a722c91..337932b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractUserInfoTokenResponseLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AbstractUserInfoTokenResponseLookupStrategy.java
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Base class for looking up the UserInfo token response context.*/
 public abstract class AbstractUserInfoTokenResponseLookupStrategy {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AccessTokenLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AccessTokenLookupStrategy.java
index 856dbe8..82f492a 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AccessTokenLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AccessTokenLookupStrategy.java
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.oauth2.sdk.token.AccessToken;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** Function that extracts the access_token from the {@link AccessTokenResponseContext}.*/
 @ThreadSafe
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
index e300367..65bf593 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/AuthenticationRequestTimeLookupFunction.java
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Lookup function that returns the time at which the RP sent the authentication request, as taken from the 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/ClientIDFromOAuth2ClientContextFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/ClientIDFromOAuth2ClientContextFunction.java
index ac50a8e..b026aae 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/ClientIDFromOAuth2ClientContextFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/ClientIDFromOAuth2ClientContextFunction.java
@@ -29,8 +29,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.OAuth2ClientContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A function that pulls the client_id out of the {@link OAuth2ClientContext}.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultEndUserClaimsLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultEndUserClaimsLookupStrategy.java
index c23dbb8..984b136 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultEndUserClaimsLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultEndUserClaimsLookupStrategy.java
@@ -30,8 +30,8 @@ import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.EndUserClaimsContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Function that extracts the end-user's claims from the {@link EndUserClaimsContext}.*/
 @ThreadSafe
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIDTokenLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIDTokenLookupStrategy.java
index 625dfba..55c70b2 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIDTokenLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIDTokenLookupStrategy.java
@@ -28,7 +28,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.nimbusds.jwt.JWT;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** Function that extracts the id_token from the {@link AccessTokenResponseContext}.*/
 @ThreadSafe
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultUserInfoJWTLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultUserInfoJWTLookupStrategy.java
index e5e0919..9e1f12f 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultUserInfoJWTLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultUserInfoJWTLookupStrategy.java
@@ -31,7 +31,7 @@ import com.nimbusds.common.contenttype.ContentType;
 import com.nimbusds.jwt.JWT;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Function that extracts the UserInfo claims as a JWT from the {@link UserInfoResponseContext}. If not found, returns
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedIDTokenLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedIDTokenLookupStrategy.java
index cfa3793..deb8632 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedIDTokenLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedIDTokenLookupStrategy.java
@@ -32,7 +32,7 @@ import com.nimbusds.jwt.JWT;
 import com.nimbusds.jwt.SignedJWT;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** 
  * Function that extracts the id_token from the {@link AccessTokenResponseContext} iff it is an {@link EncryptedJWT} 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedUserInfoJWTLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedUserInfoJWTLookupStrategy.java
index 4f38650..973ee8c 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedUserInfoJWTLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/EncryptedUserInfoJWTLookupStrategy.java
@@ -33,7 +33,7 @@ import com.nimbusds.jwt.SignedJWT;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** 
  * Function that extracts the UserInfo JWT from the {@link UserInfoResponseContext} iff it is an {@link EncryptedJWT} 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenInAccessTokenUpdateStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenInAccessTokenUpdateStrategy.java
index 5c79f27..4d4020b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenInAccessTokenUpdateStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenInAccessTokenUpdateStrategy.java
@@ -34,8 +34,8 @@ import com.nimbusds.openid.connect.sdk.OIDCTokenResponse;
 
 import net.minidev.json.JSONObject;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Consumer to update the id_token in the {@link AccessTokenResponseContext}.*/
 public class IDTokenInAccessTokenUpdateStrategy implements BiConsumer<ProfileRequestContext, JWT> {
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
index a38ea34..8842e16 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/IDTokenJOSEHeaderLookupStrategy.java
@@ -29,7 +29,7 @@ import com.nimbusds.jose.Header;
 import com.nimbusds.jose.JWSHeader;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** Function that extracts the JWS JOSE header from the id_token inside the {@link AccessTokenResponseContext}.*/
 @ThreadSafe
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
index a2cc682..cf5e786 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/RequestObjectTokenUpdateStrategy.java
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jwt.JWT;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Consumer that adds the {@link JWT} back to the Request Object in the {@link OIDCAuthenticationRequest}.*/
 public class RequestObjectTokenUpdateStrategy implements BiConsumer<JWT, MessageContext> {   
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/SubFromIDTokenLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/SubFromIDTokenLookupFunction.java
index 5c3dafd..e5f12dd 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/SubFromIDTokenLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/SubFromIDTokenLookupFunction.java
@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /**
  * A function that pulls the subject 'sub' out of the id_token in the {@link AccessTokenResponseContext}.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/UserInfoInUserInfoResponseContextUpdateStrategy.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/UserInfoInUserInfoResponseContextUpdateStrategy.java
index bd3a355..10804bc 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/UserInfoInUserInfoResponseContextUpdateStrategy.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/UserInfoInUserInfoResponseContextUpdateStrategy.java
@@ -32,7 +32,7 @@ import com.nimbusds.openid.connect.sdk.UserInfoSuccessResponse;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /** 
  * Consumer strategy to update the UserInfo JWT in the {@link UserInfoResponseContext}.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/AbstractUserInfoResponseTypeCondition.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/AbstractUserInfoResponseTypeCondition.java
index 7fa0623..130831d 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/AbstractUserInfoResponseTypeCondition.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/AbstractUserInfoResponseTypeCondition.java
@@ -28,7 +28,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Abstract predicate for pulling out the {@link UserInfoResponseContext}. If either the
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
index cc294b5..c415d9b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/JWTBearerTokenForClientAuthenticationPredicate.java
@@ -28,10 +28,10 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
 
 /** 
  * A predicate that determines if the client authentication method chosen is a JWT type.
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
index 51af12c..eccfee3 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupported.java
@@ -29,12 +29,12 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * A predicate that tests whether a request object should be built based on what is configured in the profile 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
index 5648436..aba8dea 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicate.java
@@ -28,11 +28,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AbstractAuthenticatableOIDCContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import  net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Is successful TLS credential verification enough to validate the JWT in question or should JWT signature validation 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
index 7cb71cc..abd9c64 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/UserInfoLookupCondition.java
@@ -23,8 +23,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
 
 /**
  * Checks whether the UserInfo endpoint should be accessed to retrieve claims about the
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
index 19530e6..09f829b 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/JWTClaimsSetFromRequestObjectLookupFunction.java
@@ -31,7 +31,7 @@ import com.nimbusds.jose.Payload;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Extract the {@link Payload} from the Request Object inside the {@link OIDCAuthenticationRequest}. 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
index 9d06189..c57abd4 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/navigate/PayloadFromRequestObjectLookupFunction.java
@@ -33,7 +33,7 @@ import com.nimbusds.jwt.PlainJWT;
 import com.nimbusds.jwt.SignedJWT;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Extract the {@link Payload} from the Request Object inside the {@link OIDCAuthenticationRequest}. 
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
index f59032f..2323582 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2AccessTokenPrincipal.java
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
 import com.google.common.base.MoreObjects;
 
 import net.shibboleth.idp.authn.principal.CloneablePrincipal;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Principal based on an OAuth 2.0 access token.*/
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
index 3a99d5b..af15ed3 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OAuth2RefreshTokenPrincipal.java
@@ -22,9 +22,9 @@ import javax.annotation.Nonnull;
 import com.google.common.base.MoreObjects;
 
 import net.shibboleth.idp.authn.principal.CloneablePrincipal;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /** Principal based on an OAuth 2.0 refresh token.*/
diff --git a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
index a386341..7fc00ea 100644
--- a/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
+++ b/idp-oidc-rp-api/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/principal/OIDCSubjectIdentifierPrincipal.java
@@ -22,10 +22,11 @@ import javax.annotation.Nonnull;
 import com.google.common.base.MoreObjects;
 
 import net.shibboleth.idp.authn.principal.CloneablePrincipal;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+
 
 /** Principal based on an OIDC 'sub' (subject) identifier.*/
 public class OIDCSubjectIdentifierPrincipal implements CloneablePrincipal {
diff --git a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIssuerIDLookupFunction.java b/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIssuerIDLookupFunction.java
deleted file mode 100644
index 7f9928a..0000000
--- a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/context/navigate/DefaultIssuerIDLookupFunction.java
+++ /dev/null
@@ -1,47 +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.plugin.authn.oidc.rp.context.navigate;
-
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.ThreadSafe;
-
-import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.messaging.context.navigate.ContextDataLookupFunction;
-
-import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-
-/**
- * Strategy to pull out the ID of the OIDC proxy issuer/provider from the {@link OIDCPeerEntityContext}.
- */
- at ThreadSafe
-public class DefaultIssuerIDLookupFunction implements ContextDataLookupFunction<MessageContext, String> {
-
-    /** {@inheritDoc} */
-    @Override
-    @Nullable public String apply(@Nullable final MessageContext input) {
-        if (input == null) {
-            return null;
-        }
-        
-        final OIDCPeerEntityContext context = input.getSubcontext(OIDCPeerEntityContext.class);
-        if (context == null) {
-            return null;
-        }
-        return context.getIdentifier();
-    }
-}
diff --git a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupportedTest.java b/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupportedTest.java
index 391bdf0..c7adab9 100644
--- a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupportedTest.java
+++ b/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequestObjectRequiredAndSupportedTest.java
@@ -33,9 +33,9 @@ import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.openid.connect.sdk.SubjectType;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
 
 /** Tests for the {@link RequestObjectRequiredAndSupported}.*/
 public class RequestObjectRequiredAndSupportedTest {
diff --git a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicateTest.java b/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicateTest.java
index 342d6c5..52bbd6e 100644
--- a/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicateTest.java
+++ b/idp-oidc-rp-api/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/context/logic/RequiresSignatureVerificationPredicateTest.java
@@ -26,8 +26,8 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AbstractAuthenticatableOIDCContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
 
 /** Tests for the {@link RequiresSignatureVerificationPredicate}.*/
 public class RequiresSignatureVerificationPredicateTest {
diff --git a/idp-oidc-rp-dist/pom.xml b/idp-oidc-rp-dist/pom.xml
index 8e3c24b..ccb836a 100644
--- a/idp-oidc-rp-dist/pom.xml
+++ b/idp-oidc-rp-dist/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.idp.plugin.authn</groupId>
         <artifactId>idp-plugin-oidc-rp-parent</artifactId>
-        <version>1.1.1-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>idp-plugin-oidc-rp-dist</artifactId>
diff --git a/idp-oidc-rp-impl/pom.xml b/idp-oidc-rp-impl/pom.xml
index eb63d0d..efaed6d 100644
--- a/idp-oidc-rp-impl/pom.xml
+++ b/idp-oidc-rp-impl/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.idp.plugin.authn</groupId>
         <artifactId>idp-plugin-oidc-rp-parent</artifactId>
-        <version>1.1.1-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>idp-plugin-oidc-rp-impl</artifactId>
@@ -30,11 +30,6 @@
             <artifactId>idp-plugin-oidc-config-impl</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-attribute-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-xmlsec-impl</artifactId>
@@ -75,17 +70,6 @@
             <artifactId>jsr305</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>net.shibboleth.utilities</groupId>
-            <artifactId>java-support</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpcore</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        
         <dependency>
             <groupId>${idp.oidc.groupId}</groupId>
             <artifactId>oidc-common-crypto-impl</artifactId>
@@ -167,8 +151,8 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-attribute-filter-api</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-attribute-filter-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -176,16 +160,6 @@
             <artifactId>oidc-common-profile-impl</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-core</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>net.minidev</groupId>
             <artifactId>json-smart</artifactId>     
@@ -207,8 +181,8 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
          <dependency>
@@ -265,11 +239,6 @@
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-beans</artifactId>
             <scope>provided</scope>
-        </dependency>
-        <dependency>
-           <groupId>net.shibboleth.ext</groupId>
-           <artifactId>spring-extensions</artifactId>
-           <scope>provided</scope>
         </dependency>
          <dependency>
             <groupId>${spring-webflow.groupId}</groupId>
@@ -277,19 +246,25 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-attribute-impl</artifactId>
-            <version>${idp.version}</version>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-profile-api</artifactId>
             <scope>provided</scope>
         </dependency>
-         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-attribute-filter-impl</artifactId>
-            <version>${idp.version}</version>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-profile-impl</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-service</artifactId>
             <scope>provided</scope>
         </dependency>
-       
-
         <!-- Test dependency -->
         <dependency>
             <groupId>${spring.groupId}</groupId>
@@ -298,23 +273,23 @@
         </dependency>
         <dependency>
             <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-conf</artifactId>
+            <artifactId>idp-testing</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-attribute-filter-spring</artifactId>
+            <artifactId>idp-conf-impl</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>${idp.oidc.groupId}</groupId>
-            <artifactId>oidc-common-crypto-impl</artifactId>
-            <type>test-jar</type>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-attribute-filter-spring</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-conf-impl</artifactId>
+            <groupId>${idp.oidc.groupId}</groupId>
+            <artifactId>oidc-common-crypto-impl</artifactId>
+            <type>test-jar</type>
             <scope>test</scope>
         </dependency>
          <dependency>
@@ -323,8 +298,8 @@
             <scope>test</scope>
         </dependency>        
         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-profile-spring</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-profile-testing</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -339,11 +314,16 @@
             <scope>test</scope>
             <type>test-jar</type>
         </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-testing</artifactId>
+            <scope>test</scope>
+        </dependency>        
         <!-- Spring webflow tests require Junit4, runs in TestNG bridge -->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPModule.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPModule.java
index b8c75dc..eaf7fe4 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPModule.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPModule.java
@@ -20,7 +20,7 @@ package net.shibboleth.idp.plugin.authn.oidc.rp;
 import java.io.IOException;
 
 import net.shibboleth.idp.module.IdPModule;
-import net.shibboleth.idp.module.ModuleException;
+import net.shibboleth.profile.module.ModuleException;
 import net.shibboleth.idp.module.impl.PluginIdPModule;
 
 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPPlugin.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPPlugin.java
index a5dd33f..9209dfb 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPPlugin.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/OIDCRPPlugin.java
@@ -21,9 +21,9 @@ import java.io.IOException;
 import java.util.Collections;
 
 import net.shibboleth.idp.module.IdPModule;
-import net.shibboleth.idp.module.ModuleException;
-import net.shibboleth.idp.plugin.PluginException;
 import net.shibboleth.idp.plugin.impl.FirstPartyIdPPlugin;
+import net.shibboleth.profile.module.ModuleException;
+import net.shibboleth.profile.plugin.PluginException;
 
 /**
  * Plugin description about the OIDC-RP plugin.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/FixedStringAuditExtractor.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/FixedStringAuditExtractor.java
index 4c75062..0b38d45 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/FixedStringAuditExtractor.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/audit/impl/FixedStringAuditExtractor.java
@@ -23,9 +23,9 @@ import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
 
 /** A simple audit extractor that allows a fixed string to be logged.*/
 public class FixedStringAuditExtractor implements Function<ProfileRequestContext, String> {
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/AbstractJSONResponseDecoderFunction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/AbstractJSONResponseDecoderFunction.java
index 2d48fe7..2dc0dfb 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/AbstractJSONResponseDecoderFunction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/AbstractJSONResponseDecoderFunction.java
@@ -21,15 +21,15 @@ import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Abstract class for JSON based response decoders. 
@@ -37,7 +37,7 @@ import net.shibboleth.utilities.java.support.logic.Constraint;
  * @param <T> the return type of the function.
  */
 public abstract class AbstractJSONResponseDecoderFunction<T> extends AbstractInitializableComponent 
-                                                    implements Function<HttpResponse, T> {
+                                                    implements Function<ClassicHttpResponse, T> {
     
     /** JSON object mapper. */
     @NonnullAfterInit private ObjectMapper objectMapper;
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoder.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoder.java
index 565f6a2..5ea53fc 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoder.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoder.java
@@ -24,9 +24,9 @@ import java.util.Map;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
@@ -49,16 +49,16 @@ public class DefaultAccessTokenResponseDecoder extends AbstractJSONResponseDecod
     @Nonnull private final Logger log = LoggerFactory.getLogger(DefaultAccessTokenResponseDecoder.class);
 
     @Override
-    @Nullable public TokenResponse apply(@Nonnull final HttpResponse httpResponse) {
+    @Nullable public TokenResponse apply(@Nonnull final ClassicHttpResponse httpResponse) {
         
         try {            
             
-            if (httpResponse.getStatusLine() == null) {
-                log.warn("HTTP Response did not contain a status line");
+            if (httpResponse.getEntity() == null) {
+                log.warn("HTTP Response did not contain an entity");
                 return null;
             }
             
-            final ContentType contentType = ContentType.get(httpResponse.getEntity());
+            final ContentType contentType = ContentType.parse(httpResponse.getEntity().getContentType());
             if (contentType == null || contentType.getMimeType() == null) {
                 log.warn("HTTP response did not contain a content-type, must contain a content-type");
                 return null;
@@ -75,7 +75,7 @@ public class DefaultAccessTokenResponseDecoder extends AbstractJSONResponseDecod
                 if (log.isTraceEnabled()) {
                     log.trace("Token Response: {}", tokenResponseAsMap);
                 }
-                final int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
+                final int httpStatusCode = httpResponse.getCode();
                 
                 if (httpStatusCode != HttpStatus.SC_OK) {
                     return TokenErrorResponse.parse(new JSONObject(tokenResponseAsMap));                
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoder.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoder.java
index a66cdb5..a19c3a5 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoder.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoder.java
@@ -22,9 +22,9 @@ import java.util.Map;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -58,20 +58,15 @@ public class DefaultUserInfoResponseDecoder extends AbstractJSONResponseDecoderF
     
  // Checkstyle: CyclomaticComplexity|ReturnCount|MethodLength OFF
     @Override
-    public UserInfoResponse apply(@Nonnull final HttpResponse httpResponse) {
-        
-        if (httpResponse.getStatusLine() == null) {
-            log.warn("HTTP Response did not contain a status line");
-            return null;
-        }               
+    public UserInfoResponse apply(@Nonnull final ClassicHttpResponse httpResponse) {
+                     
         try {
-            final int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
+            final int httpStatusCode = httpResponse.getCode();
             
             if (httpStatusCode != HttpStatus.SC_OK) {  
-                if (httpResponse.getHeaders(USERINFO_ERROR_RESPONSE_HEADER) != null &&
-                        httpResponse.getHeaders(USERINFO_ERROR_RESPONSE_HEADER).length == 1) {
-                    
-                    final Header errorHeader = httpResponse.getHeaders(USERINFO_ERROR_RESPONSE_HEADER)[0];
+                if (httpResponse.getHeader(USERINFO_ERROR_RESPONSE_HEADER) != null) {
+
+                    final Header errorHeader = httpResponse.getHeader(USERINFO_ERROR_RESPONSE_HEADER);
                     
                     if (errorHeader == null) {
                         log.warn("HTTP status code implies error response, but no error given");
@@ -97,7 +92,7 @@ public class DefaultUserInfoResponseDecoder extends AbstractJSONResponseDecoderF
                     return null;
                 } 
                 
-                final ContentType contentType = ContentType.parse(httpResponse.getEntity().getContentType().getValue());
+                final ContentType contentType = ContentType.parse(httpResponse.getEntity().getContentType());
                 if (contentType == null) {
                     log.warn("HTTP response did not contain a valid content-type");
                     return null;
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/AbstractRequestEncoderFunction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/AbstractRequestEncoderFunction.java
index d365d84..ecff570 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/AbstractRequestEncoderFunction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/AbstractRequestEncoderFunction.java
@@ -22,7 +22,7 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -36,13 +36,13 @@ import net.shibboleth.oidc.authn.context.OAuth2ClientAuthenticationContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Abstract request encoder function that pulls out various contexts and request/response messages.*/
 public abstract class AbstractRequestEncoderFunction extends AbstractInitializableComponent 
-                                implements Function<ProfileRequestContext, HttpUriRequest> {
+                                implements Function<ProfileRequestContext, ClassicHttpRequest> {
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractRequestEncoderFunction.class);
@@ -152,7 +152,7 @@ public abstract class AbstractRequestEncoderFunction extends AbstractInitializab
      * failure.</p>
      */
     @Override
-    @Nullable public HttpUriRequest apply(@Nonnull final ProfileRequestContext profileRequestContext) {
+    @Nullable public ClassicHttpRequest apply(@Nonnull final ProfileRequestContext profileRequestContext) {
 
 
         final MessageContext inboundMessageCtx = profileRequestContext.getInboundMessageContext();
@@ -199,13 +199,13 @@ public abstract class AbstractRequestEncoderFunction extends AbstractInitializab
     }
 
     /**
-     * Encode a HttpUriRequest from the given context. Implementations should override this method.
+     * Encode a ClassicHttpRequest from the given context. Implementations should override this method.
      * 
      * @param profileRequestContext the profile request context.
      * 
      * @return the request to execute.
      */
-    @Nullable protected abstract HttpUriRequest doApply(@Nonnull ProfileRequestContext profileRequestContext);
+    @Nullable protected abstract ClassicHttpRequest doApply(@Nonnull ProfileRequestContext profileRequestContext);
 
     
 }
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultAuthCodeTokenRequestEncoder.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultAuthCodeTokenRequestEncoder.java
index 2d04aec..2b3e2a7 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultAuthCodeTokenRequestEncoder.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultAuthCodeTokenRequestEncoder.java
@@ -20,8 +20,9 @@ package net.shibboleth.idp.plugin.authn.oidc.rp.encoding.impl;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.methods.RequestBuilder;
+import org.apache.hc.client5.http.classic.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +44,7 @@ public class DefaultAuthCodeTokenRequestEncoder extends AbstractRequestEncoderFu
     private final Logger log = LoggerFactory.getLogger(DefaultAuthCodeTokenRequestEncoder.class);
     
     @Override
-    @Nullable public HttpUriRequest doApply(@Nonnull final ProfileRequestContext profileRequestContext) {
+    @Nullable public ClassicHttpRequest doApply(@Nonnull final ProfileRequestContext profileRequestContext) {
 
         try {
             if (getClientAuthenticationContext() == null) {
@@ -73,14 +74,14 @@ public class DefaultAuthCodeTokenRequestEncoder extends AbstractRequestEncoderFu
      * 
      * @return the convert HTTP request
      */
-    @Nullable private HttpUriRequest convertHttpRequest(@Nonnull final HTTPRequest request) {
+    @Nullable private ClassicHttpRequest convertHttpRequest(@Nonnull final HTTPRequest request) {
         
         if (request.getMethod() != HTTPRequest.Method.POST) {
             // Should never happen as HTTPRequest should always use POST
             log.warn("Token Request must use the HTTP POST method, is trying to use '{}'", request.getMethod());
             return null;
         }
-        final RequestBuilder rb = RequestBuilder.post().setUri(request.getURI()).setHeader(
+        final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(request.getURI()).setHeader(
                 "Content-Type", request.getEntityContentType().toString())
                 .setCharset(StandardCharset.UTF_8);
         
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultUserInfoRequestEncoder.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultUserInfoRequestEncoder.java
index 4295e67..3da1521 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultUserInfoRequestEncoder.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/DefaultUserInfoRequestEncoder.java
@@ -21,11 +21,12 @@ import java.net.URI;
 import java.util.function.Function;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.methods.RequestBuilder;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
+import org.apache.hc.core5.net.URIBuilder;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
@@ -40,9 +41,9 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.config.navigate.UserInfoHttpReque
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCRPException;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Default encoder for UserInfo requests. Supports either GET or POST requests.
@@ -101,7 +102,7 @@ public class DefaultUserInfoRequestEncoder extends AbstractRequestEncoderFunctio
    
     
     @Override
-    public HttpUriRequest doApply(@Nonnull final ProfileRequestContext profileRequestContext) {
+    @Nullable public ClassicHttpRequest doApply(@Nonnull final ProfileRequestContext profileRequestContext) {
         
         try {
             final HttpRequestMethod requestMethod = httpMethodLookupStrategy.apply(profileRequestContext);
@@ -124,16 +125,16 @@ public class DefaultUserInfoRequestEncoder extends AbstractRequestEncoderFunctio
                     .build();                 
             
             // Add headers and create request. 
-            RequestBuilder rb = null;
+            ClassicRequestBuilder rb = null;
             if (requestMethod == HttpRequestMethod.GET) {
-                rb = RequestBuilder.get().setUri(uri)
+                rb = ClassicRequestBuilder.get().setUri(uri)
                         .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                         .setCharset(StandardCharset.UTF_8);
                  
                 addBearerTokenToGet(rb, responseCtx);      
             } else if (requestMethod == HttpRequestMethod.POST) {
 
-                rb = RequestBuilder.post().setUri(uri)
+                rb = ClassicRequestBuilder.post().setUri(uri)
                         .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                         .setCharset(StandardCharset.UTF_8);
 
@@ -143,7 +144,7 @@ public class DefaultUserInfoRequestEncoder extends AbstractRequestEncoderFunctio
                 return null;
             }
 
-            final HttpUriRequest request = rb.build();                  
+            final ClassicHttpRequest request = rb.build();                  
             log.debug("UserInfo request URL '{}'",request);            
             return request;
             
@@ -161,7 +162,7 @@ public class DefaultUserInfoRequestEncoder extends AbstractRequestEncoderFunctio
      * 
      * @throws OIDCRPException if there is an issue adding the bearer token to the 'access_token' parameter.
      */
-    private void addBearerTokenToPost(@Nonnull final RequestBuilder rb, 
+    private void addBearerTokenToPost(@Nonnull final ClassicRequestBuilder rb, 
         @Nonnull final AccessTokenResponseContext responseCtx) throws OIDCRPException {
     
         if (responseCtx.getTokenResponse() == null) {
@@ -182,7 +183,7 @@ public class DefaultUserInfoRequestEncoder extends AbstractRequestEncoderFunctio
      * 
      * @throws OIDCRPException if there is an issue adding the bearer token to the Authorization header.
      */
-    private void addBearerTokenToGet(@Nonnull final RequestBuilder rb, 
+    private void addBearerTokenToGet(@Nonnull final ClassicRequestBuilder rb, 
             @Nonnull final AccessTokenResponseContext responseCtx) throws OIDCRPException {
         
         if (responseCtx.getTokenResponse() == null) {
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractHttpOIDCAuthenticationAction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractHttpOIDCAuthenticationAction.java
index f5b22f6..2ba9c5d 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractHttpOIDCAuthenticationAction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractHttpOIDCAuthenticationAction.java
@@ -23,10 +23,11 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpUriRequest;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
 import org.opensaml.security.httpclient.HttpClientSecuritySupport;
@@ -39,11 +40,11 @@ import com.nimbusds.oauth2.sdk.Response;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AbstractAuthenticatableOIDCContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCRPException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * An abstract class for OIDC actions that make synchronous HTTP requests and return {@link Response responses}.
@@ -58,10 +59,10 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractHttpOIDCAuthenticationAction.class);
     
     /** The message encoder to encode the HTTP request into a {@link HttpUriRequest}.*/
-    @NonnullAfterInit private Function<ProfileRequestContext, HttpUriRequest> httpRequestEncoderStrategy;
+    @NonnullAfterInit private Function<ProfileRequestContext, ClassicHttpRequest> httpRequestEncoderStrategy;
     
     /** The message decoder to decode the HTTP response.*/
-    @NonnullAfterInit private Function<HttpResponse, T> httpResponseDecoderStrategy;
+    @NonnullAfterInit private Function<ClassicHttpResponse, T> httpResponseDecoderStrategy;
     
     /** HttpClient for contacting the endpoint. */
     @NonnullAfterInit private HttpClient httpClient;
@@ -90,7 +91,7 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
      * 
      * @return the request encoder.
      */
-    @NonnullAfterInit public Function<ProfileRequestContext, HttpUriRequest> getHttpRequestEncoderStrategy() {
+    @NonnullAfterInit public Function<ProfileRequestContext, ClassicHttpRequest> getHttpRequestEncoderStrategy() {
         return httpRequestEncoderStrategy;
     }
     
@@ -99,7 +100,7 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
      * 
      * @return the response decoder.
      */
-    @NonnullAfterInit public Function<HttpResponse, T> getHttpResponseDecoderStrategy() {
+    @NonnullAfterInit public Function<ClassicHttpResponse, T> getHttpResponseDecoderStrategy() {
         return httpResponseDecoderStrategy;
     }
     
@@ -108,7 +109,7 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
      * 
      * @param strategy the strategy
      */
-    public void setHttpResponseDecoderStrategy(@Nonnull final Function<HttpResponse, T> strategy) {
+    public void setHttpResponseDecoderStrategy(@Nonnull final Function<ClassicHttpResponse, T> strategy) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
         ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
         
@@ -116,12 +117,12 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
     }
     
     /**
-     * Set the strategy used to map a HTTP request to a {@link HttpUriRequest} object.
+     * Set the strategy used to map a HTTP request to a {@link ClassicHttpRequest} object.
      * 
      * @param strategy the strategy
      */
     public void setHttpRequestEncoderStrategy(
-            @Nonnull final Function<ProfileRequestContext, HttpUriRequest> strategy) {
+            @Nonnull final Function<ProfileRequestContext, ClassicHttpRequest> strategy) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
         ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
         
@@ -170,11 +171,11 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
     @Nonnull protected T handleRequest(@Nonnull final ProfileRequestContext profileRequestContext, 
                 @Nullable final AbstractAuthenticatableOIDCContext authenticatableContext) throws OIDCRPException {
         try {              
-            final HttpUriRequest request = getHttpRequestEncoderStrategy().apply(profileRequestContext);
+            final ClassicHttpRequest request = getHttpRequestEncoderStrategy().apply(profileRequestContext);
             if (request == null) {
                 throw new OIDCRPException("Unable to encode HTTP request");
             }
-            final HttpResponse response = executeHttpRequest(request, authenticatableContext);
+            final ClassicHttpResponse response = executeHttpRequest(request, authenticatableContext);
             final T responseObject = getHttpResponseDecoderStrategy().apply(response);
             if (responseObject == null) {
                 throw new OIDCRPException("Unable to process HTTP response");                
@@ -216,7 +217,7 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
      * 
      * @throws IOException if there is an error producing a response
      */
-    @Nonnull protected HttpResponse executeHttpRequest(@Nonnull final HttpUriRequest request,
+    @Nonnull protected ClassicHttpResponse executeHttpRequest(@Nonnull final ClassicHttpRequest request,
             @Nullable final AbstractAuthenticatableOIDCContext authenticatableContext) throws IOException {
         
         Constraint.isNotNull(request, "Request can not be null");
@@ -224,8 +225,10 @@ public abstract class AbstractHttpOIDCAuthenticationAction<T extends Response>
         final HttpClientContext clientContext = HttpClientContext.create();
         HttpClientSecuritySupport.marshalSecurityParameters(clientContext, httpClientSecurityParameters, true);
         HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
-        final HttpResponse httpResponse = httpClient.execute(request, clientContext);
-        HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getURI().getScheme());
+        final ClassicHttpResponse httpResponse = httpClient.executeOpen(null, request, clientContext);
+        final String scheme = request.getScheme();
+        assert scheme != null;
+        HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, scheme);
         // Will have thrown prior to this if TLS credential had not been evaluated.
         if (authenticatableContext != null) {
             authenticatableContext.setAuthenticated(true);
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCAuthenticationResponseAction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCAuthenticationResponseAction.java
index 2f29044..ac2380e 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCAuthenticationResponseAction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCAuthenticationResponseAction.java
@@ -39,8 +39,8 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Abstract class for actions based on the {@link AuthenticationResponse} located under
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AccessTokenToPrivateCredentialsMappingStrategy.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AccessTokenToPrivateCredentialsMappingStrategy.java
index b126beb..cbdbfb6 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AccessTokenToPrivateCredentialsMappingStrategy.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AccessTokenToPrivateCredentialsMappingStrategy.java
@@ -37,7 +37,7 @@ import com.nimbusds.oauth2.sdk.token.RefreshToken;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OAuth2AccessTokenPrincipal;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OAuth2RefreshTokenPrincipal;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A mapping strategy that locates the {@link AccessTokenResponseContext} from the {@link ProfileRequestContext} and 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
index 49e7c9a..2fd70b0 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationController.java
@@ -22,9 +22,6 @@ import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
@@ -41,6 +38,9 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.idp.authn.ExternalAuthentication;
 import net.shibboleth.idp.authn.ExternalAuthenticationException;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
@@ -50,11 +50,11 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.context.OutboundMessageHandlerCon
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCProxyException;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Servlet compatible with the {@link ExternalAuthentication} interface that begins, by HTTP redirect, an 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
index 4d9e0c5..c686989 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObject.java
@@ -45,13 +45,13 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 import net.shibboleth.idp.authn.AbstractAuthenticationAction;
 import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.encoding.AuthenticationContextClassReferenceSupport;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 
 /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunction.java
index 0573a43..5c2b4aa 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunction.java
@@ -26,24 +26,24 @@ import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.servlet.http.HttpServletRequest;
 
-import org.apache.http.client.utils.URIBuilder;
+import org.apache.hc.core5.net.URIBuilder;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.OutboundMessageContextLookup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.OAuth2ClientContext;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
index 1469094..61980b0 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessToken.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCRPException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 
 /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeAuthorizationRequest.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeAuthorizationRequest.java
index cb6da7e..a2a1994 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeAuthorizationRequest.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeAuthorizationRequest.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * An action that creates an {@link OIDCAuthenticationRequest} shell to populate in future steps,
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationContext.java
index 8364a9e..a22dabe 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationContext.java
@@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.authn.context.OAuth2ClientAuthenticationContext;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * An {@link AbstractMessageHandler action} that initializes an {@link OAuth2ClientAuthenticationContext} for later use.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
index 0ac3ae1..d6d6c15 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientAuthenticationMethodHandler.java
@@ -62,7 +62,6 @@ import com.nimbusds.oauth2.sdk.id.ClientID;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.authn.context.OAuth2ClientAuthenticationContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
@@ -72,8 +71,9 @@ import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.credential.JWKCredential;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * An {@link AbstractMessageHandler action} that resolves the Client Authentication method for the chosen 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
index 1031ebb..d44175f 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOAuth2ClientContext.java
@@ -35,12 +35,12 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.config.navigate.RedirectUriLookup
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.OAuth2ClientContext;
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOutboundAuthorizationRequestMessageContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOutboundAuthorizationRequestMessageContext.java
index 864442c..8c21859 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOutboundAuthorizationRequestMessageContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeOutboundAuthorizationRequestMessageContext.java
@@ -34,12 +34,12 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.context.OIDCMetadataContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Initialize an outbound message context with an OIDC peer entity context ready for an authorization/authentication 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeRelyingPartyContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeRelyingPartyContext.java
index bfe6e6c..4f9f203 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeRelyingPartyContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeRelyingPartyContext.java
@@ -33,12 +33,12 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.context.OIDCMetadataContext;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Action that adds a {@link RelyingPartyContext} to the current {@link ProfileRequestContext} tree via a creation
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeUnverifiedRelyingPartyContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeUnverifiedRelyingPartyContext.java
index b933460..38478fb 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeUnverifiedRelyingPartyContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/InitializeUnverifiedRelyingPartyContext.java
@@ -29,9 +29,9 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Action that adds an unverified {@link RelyingPartyContext} to the current {@link ProfileRequestContext} tree via a 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCProxySupport.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCProxySupport.java
index cb5e108..ab0bbee 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCProxySupport.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCProxySupport.java
@@ -25,7 +25,7 @@ import org.apache.commons.codec.DecoderException;
 import org.apache.commons.codec.binary.Hex;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCProxyException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** Support class for OIDC proxy related implementations.*/
 public final class OIDCProxySupport {
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/PrepareOIDCInboundMessageContext.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/PrepareOIDCInboundMessageContext.java
index 7eab3c2..f84380b 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/PrepareOIDCInboundMessageContext.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/PrepareOIDCInboundMessageContext.java
@@ -35,10 +35,10 @@ import com.google.common.base.Predicates;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Action that adds an inbound {@link MessageContext} and a {@link OIDCPeerEntityContext} to the
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaims.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaims.java
index 0fca92e..cd9e93a 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaims.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaims.java
@@ -42,8 +42,8 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.EndUserClaimsContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Process the end-user claims from the id_token and possible UserInfo claims sets.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalization.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalization.java
index 7c951c5..b2d5dc5 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalization.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalization.java
@@ -33,7 +33,7 @@ import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.SubjectCanonicalizationException;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OIDCSubjectIdentifierPrincipal;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.shared.annotation.ParameterName;
 
 /**
  * An action that operates on a {@link SubjectCanonicalizationContext} child of the current
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookup.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookup.java
index c910cb6..ce6891a 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookup.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookup.java
@@ -37,8 +37,8 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContex
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCRPException;
 import net.shibboleth.oidc.profile.core.OidcEventIds;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Request information from the UserInfo OAuth2.0 endpoint using the access_token already present
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponse.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponse.java
index b292d73..bc57212 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponse.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponse.java
@@ -37,9 +37,9 @@ import net.shibboleth.idp.authn.AbstractAuthenticationAction;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.oidc.profile.core.OidcEventIds;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Validation action that validates the OAuth Access Token Response against RFC 6749 section 5.1
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
index 031fc81..40a2c80 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthentication.java
@@ -67,18 +67,19 @@ import net.shibboleth.idp.authn.principal.ProxyAuthenticationPrincipal;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.EndUserClaimsContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OIDCSubjectIdentifierPrincipal;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.Live;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+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.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.service.ServiceableComponent;
 
 /**
  * An action that builds an {@link AuthenticationResult} based on an inbound OIDC authentication response.
@@ -475,36 +476,32 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
         
         final Multimap<String,IdPAttribute> mapped = HashMultimap.create();
 
-        ServiceableComponent<AttributeTranscoderRegistry> component = null;
-        try {
-            component = transcoderRegistry.getServiceableComponent();
-            if (component == null) {
-                log.error("Attribute transcoder service unavailable");
-                return;
-            }
-            
-            for (final Map.Entry<String, Object> claim : 
-                            endUserContext.getEndUserClaims().toJSONObject().entrySet()) {                
-                try {    
-                    final JSONObject jsonClaim = new JSONObject();
-                    jsonClaim.put(claim.getKey(), claim.getValue());                
-                    decodeAttribute(component.getComponent(), profileRequestContext, jsonClaim, mapped);
-                } catch (final AttributeDecodingException e) {
-                    log.error("{} Error decoding inbound claim", getLogPrefix(), e);
-                }                    
-            }
-        } finally {
-            if (component != null) {
-                component.unpinComponent();
-            }
+        assert transcoderRegistry!= null;
+        
+        try (final ServiceableComponent<AttributeTranscoderRegistry> component =
+                transcoderRegistry.getServiceableComponent()) {
+        	 assert endUserContext.getEndUserClaims() != null;
+        	 for (final Map.Entry<String, Object> claim : 
+                 endUserContext.getEndUserClaims().toJSONObject().entrySet()) {                
+			     try {    
+			         final JSONObject jsonClaim = new JSONObject();
+			         jsonClaim.put(claim.getKey(), claim.getValue());                
+			         decodeAttribute(component.getComponent(), profileRequestContext, jsonClaim, mapped);
+			     } catch (final AttributeDecodingException e) {
+			         log.error("{} Error decoding inbound claim", getLogPrefix(), e);
+			     }                    
+        	 }        	
+        } catch (final ServiceException e) {
+            log.error("Attribute transcoder service unavailable", e);
+            return;
         }
-                
+                       
         log.debug("{} Incoming OIDC Attributes mapped to attribute IDs: {}", getLogPrefix(), mapped.keySet());
         
         if (!mapped.isEmpty()) {
             attributeContext = profileRequestContext
                     .getSubcontext(RelyingPartyContext.class)
-                    .getSubcontext(AttributeContext.class, true);
+                    .ensureSubcontext(AttributeContext.class);
             attributeContext.setUnfilteredIdPAttributes(mapped.values());
             attributeContext.setIdPAttributes(null);
             filterAttributes(profileRequestContext);
@@ -517,36 +514,27 @@ public class ValidateOIDCAuthentication extends AbstractValidationAction {
      * @param profileRequestContext current profile request context
      */
     private void filterAttributes(@Nonnull final ProfileRequestContext profileRequestContext) {
-        if (attributeFilterService == null) {
+    	final ReloadableService<AttributeFilter> service = attributeFilterService;
+        if (service == null) {
             log.warn("{} No AttributeFilter service provided", getLogPrefix());
             return;
         }
                 
         final AttributeFilterContext filterContext =
-                profileRequestContext.getSubcontext(AttributeFilterContext.class, true);
-        
+                profileRequestContext.ensureSubcontext(AttributeFilterContext.class);        
         populateFilterContext(profileRequestContext, filterContext);
         
-        ServiceableComponent<AttributeFilter> component = null;
-
-        try {
-            component = attributeFilterService.getServiceableComponent();
-            if (null == component) {
-                log.error("{} Error while filtering inbound attributes: Invalid Attribute Filter configuration",
-                        getLogPrefix());
-            } else {
-                final AttributeFilter filter = component.getComponent();
-                filter.filterAttributes(filterContext);
-                filterContext.getParent().removeSubcontext(filterContext);
-                attributeContext.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
-            }
+        try (final ServiceableComponent<AttributeFilter> component = service.getServiceableComponent()) {
+        	final AttributeFilter filter = component.getComponent();
+            filter.filterAttributes(filterContext);
+            filterContext.removeFromParent();
+            assert attributeContext!=null;
+            attributeContext.setIdPAttributes(filterContext.getFilteredIdPAttributes().values());
         } catch (final AttributeFilterException e) {
             log.error("{} Error while filtering inbound attributes", getLogPrefix(), e);
-        } finally {
-            if (null != component) {
-                component.unpinComponent();
-            }
-        }        
+        } catch (final ServiceException e) {
+            log.error("{} Invalid AttributeFilter configuration", getLogPrefix(), e);
+        } 
     }
     
     /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseState.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseState.java
index 5f3ba96..4385a05 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseState.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseState.java
@@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Authentication action that validates the authentication response state parameter 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateTokenClaims.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateTokenClaims.java
index 4736b52..baf5357 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateTokenClaims.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateTokenClaims.java
@@ -40,10 +40,10 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.exception.OIDCRPException;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
 import net.shibboleth.oidc.profile.core.OidcEventIds;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Action that validates the claims of a JWT using the supplied 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateUserInfoJSONObjectClaims.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateUserInfoJSONObjectClaims.java
index d257af5..ca5a0a8 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateUserInfoJSONObjectClaims.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateUserInfoJSONObjectClaims.java
@@ -42,8 +42,8 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
 import net.shibboleth.oidc.profile.core.OidcEventIds;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Validate a successful UserInfo JSON Object Response according to section 5.3.2 of OpenID Connect Core 1.0. 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
index fa895d5..5535f4a 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestActionMessageHandler.java
@@ -22,7 +22,6 @@ import java.util.function.Predicate;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.servlet.http.HttpServletRequest;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
@@ -36,15 +35,16 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Predicates;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
+import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.idp.profile.impl.WebFlowMessageHandlerAdaptor;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.NonnullSupplier;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.NonnullSupplier;
 
 /** 
  * An abstract message handler that runs inside an {@link WebFlowMessageHandlerAdaptor}
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
index ae024ae..d0f10ac 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AbstractOIDCAuthenticationRequestMessageHandler.java
@@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.OutboundMessageHandlerContext;
 import net.shibboleth.idp.profile.impl.WebFlowMessageHandlerAdaptor;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * An abstract message handler that does *not* run inside an {@link WebFlowMessageHandlerAdaptor}. Makes available the
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddNonceHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddNonceHandler.java
index 3e107ab..5e2baff 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddNonceHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddNonceHandler.java
@@ -30,8 +30,8 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.Nonce;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.OIDCProxySupport;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * A message handler that adds a nonce from a lookup strategy to the authentication request.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandler.java
index a58e927..e2b03c5 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandler.java
@@ -22,7 +22,6 @@ import java.util.function.BiFunction;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.servlet.http.HttpServletRequest;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.handler.MessageHandlerException;
@@ -30,10 +29,11 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * A message handler that adds a redirect_uri to the authentication request.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandler.java
index 4ff01ac..79ba3c5 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandler.java
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.OIDCClaimsRequest;
 
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.shared.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
 
 /** 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddStateHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddStateHandler.java
index 1aa88a6..1b6386e 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddStateHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddStateHandler.java
@@ -31,8 +31,8 @@ import com.nimbusds.oauth2.sdk.id.State;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.OIDCProxySupport;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
 
 /** 
  * Add state to the authentication request URL and the request object claims (if present).
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandler.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandler.java
index 20e0995..10e5228 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandler.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandler.java
@@ -41,12 +41,12 @@ import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.profile.messaging.context.AbstractOIDCEntityContext;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 
 /**
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
index e4ba941..c7f5212 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/AuthenticationRequestNonceClaimLookupStrategy.java
@@ -30,7 +30,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Lookup strategy that finds the nonce from the {@link OIDCAuthenticationRequest}. Returns {@code null} if not found.
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
index 4c23e9c..a69c174 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/ClientAuthenticationConfigurationLookupFunction.java
@@ -34,6 +34,7 @@ import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.messaging.context.navigate.ContextDataLookupFunction;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.context.navigate.ParentProfileRequestContextLookup;
+import org.opensaml.security.config.SecurityConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,18 +42,17 @@ import com.nimbusds.jose.Algorithm;
 import com.nimbusds.jose.JWSAlgorithm;
 import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod;
 
-import net.shibboleth.idp.profile.config.ProfileConfiguration;
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 import net.shibboleth.oidc.security.jose.impl.BasicSignatureSigningConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A function that returns a {@link SignatureSigningConfiguration} list for signing client authentication JWTs. 
@@ -118,25 +118,21 @@ public class ClientAuthenticationConfigurationLookupFunction
         
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc.getSecurityConfiguration(PRC_LOOKUP.apply(input)) instanceof JSONSecurityConfiguration
-                    && ((JSONSecurityConfiguration) pc.getSecurityConfiguration(PRC_LOOKUP.apply(input)))
-                            .getJwtSignatureSigningConfiguration() != null) {
+            if (pc != null && pc.getSecurityConfiguration(PRC_LOOKUP.apply(input)) instanceof JSONSecurityConfiguration jsonSecConfig
+                    && jsonSecConfig.getJwtSignatureSigningConfiguration() != null) {
                 configs.add(((JSONSecurityConfiguration) pc.getSecurityConfiguration(PRC_LOOKUP.apply(input)))
                         .getJwtSignatureSigningConfiguration());                
             }
-            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration) {
-                tokenEndpointAuthMethod = ((OIDCAuthenticationRelyingPartyProfileConfiguration) pc)
-                        .getTokenEndpointAuthMethod(PRC_LOOKUP.apply(input));
-            }            
-        }
-
-        // Check for a per-profile default (relying party independent) config.
-        if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig = rpResolver
-                    .getDefaultSecurityConfiguration(PRC_LOOKUP.apply(input).getProfileId());
-            if (defaultConfig instanceof JSONSecurityConfiguration
-                    && ((JSONSecurityConfiguration) defaultConfig).getJwtSignatureSigningConfiguration() != null) {
-                configs.add(((JSONSecurityConfiguration) defaultConfig).getJwtSignatureSigningConfiguration());
+            if (pc instanceof OIDCAuthenticationRelyingPartyProfileConfiguration oidcRpConfig) {
+                tokenEndpointAuthMethod = oidcRpConfig.getTokenEndpointAuthMethod(PRC_LOOKUP.apply(input));
+            }      
+            // Check for a per-profile default (relying party independent) config.
+            if (rpc.getConfiguration() != null) {
+            	final SecurityConfiguration defaultConfig = rpc.getConfiguration().getSecurityConfiguration(PRC_LOOKUP.apply(input));
+            	if (defaultConfig instanceof JSONSecurityConfiguration jsonSecConfig
+                        && jsonSecConfig.getJwtSignatureSigningConfiguration() != null) {
+                    configs.add(jsonSecConfig.getJwtSignatureSigningConfiguration());
+                }
             }
         }
 
diff --git a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
index 6ca196b..18d4e5e 100644
--- a/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
+++ b/idp-oidc-rp-impl/src/main/java/net/shibboleth/idp/plugin/authn/oidc/rp/security/impl/NonceValidationActivationCondition.java
@@ -29,7 +29,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Determines if nonce validation should occur. True iff a nonce is present in the authentication request, 
diff --git a/idp-oidc-rp-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml b/idp-oidc-rp-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
index 314efaf..96dc9e0 100644
--- a/idp-oidc-rp-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
+++ b/idp-oidc-rp-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
@@ -85,7 +85,7 @@
     </bean>
 
     <bean id="shibboleth.ChildLookup.ProviderMetadataFromProviderContext" 
-    class="net.shibboleth.idp.profile.context.navigate.SpringExpressionContextLookupFunction"
+    class="net.shibboleth.profile.context.navigate.SpringExpressionContextLookupFunction"
         c:_0="#{ T(net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext) }" 
         c:outputType="#{T(com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata)}"
         c:expression="#input.getProviderInformation()" />
@@ -296,7 +296,7 @@
         c:resolverService-ref="shibboleth.authn.oidc.rp.ProviderMetadataResolverService" />
 
     <bean id="shibboleth.authn.oidc.rp.ProviderMetadataResolverService"
-        class="net.shibboleth.ext.spring.service.ReloadableSpringService"
+        class="net.shibboleth.shared.spring.service.ReloadableSpringService"
         p:serviceConfigurations-ref="ExtendedProviderMetadataResolverResources"
         p:failFast="%{idp.service.providermetadata.failFast:%{idp.service.failFast:false}}"
         p:reloadCheckDelay="%{idp.service.providermetadata.checkInterval:PT0S}"
@@ -314,7 +314,7 @@
     </util:list>
     <!-- Auto-append system config file to resource set. -->
     <bean id="ExtendedProviderMetadataResolverResources"
-        class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
+        class="net.shibboleth.shared.spring.factory.CombiningListFactoryBean"
         p:firstList="#{getObject('%{idp.service.providermetadata.resources:shibboleth.ProviderMetadataResolverResources}'.trim()) ?:
                 getObject('shibboleth.DefaultProviderMetadataResolverResources')}">
         <property name="secondList">
@@ -351,7 +351,7 @@
                     <key>
                         <util:constant static-field="net.shibboleth.oidc.profile.audit.AuditFields.PROXY_CLIENT_ID"/>
                     </key>
-                    <ref bean="shibboleth.ResponderIdLookup.Simple" />
+                    <ref bean="shibboleth.IssuerLookup.Simple" />
                 </entry>
             </map>
         </property>
diff --git a/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/OIDCRelyingParty/oidc-relying-party-authn-beans.xml b/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/OIDCRelyingParty/oidc-relying-party-authn-beans.xml
index 5256fac..ace2305 100644
--- a/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/OIDCRelyingParty/oidc-relying-party-authn-beans.xml
+++ b/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/OIDCRelyingParty/oidc-relying-party-authn-beans.xml
@@ -8,7 +8,7 @@
                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
 
     default-init-method="initialize" default-destroy-method="destroy">
-
+    
     <!-- Initial discovery step -->
     
     <bean id="PropertyDrivenDiscovery" parent="shibboleth.Functions.Constant"
@@ -82,7 +82,7 @@
     <bean id="SelectRelyingPartyConfiguration"
         class="net.shibboleth.idp.profile.impl.SelectRelyingPartyConfiguration" scope="prototype"
         p:profileContextLookupStrategy-ref="shibboleth.ChildLookup.ProxyProfileRequestContext"
-        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyResolverService" />
 
     <bean id="SelectProfileConfiguration" class="net.shibboleth.idp.profile.impl.SelectProfileConfiguration"
         scope="prototype" p:profileContextLookupStrategy-ref="shibboleth.ChildLookup.ProxyProfileRequestContext" />
@@ -178,8 +178,7 @@
         class="net.shibboleth.idp.plugin.authn.oidc.rp.messaging.context.navigate.RequestObjectSupportedSignatureSigningAlgorithms" />
 
     <bean id="RequestObjectSignatureSigningConfigurationLookup" lazy-init="true" scope="prototype"
-        class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureSigningConfigurationLookupFunction"
-        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+        class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureSigningConfigurationLookupFunction" />
 
     <!-- if the activation condition succeeds, encryption is not optional -->
     <bean id="PopulateRequestObjectEncryptionParameters"
@@ -199,8 +198,7 @@
     </bean>
 
     <bean id="RequestObjectEncryptionConfigurationLookup" lazy-init="true" scope="prototype"
-        class="net.shibboleth.oidc.profile.config.navigate.JWTEncryptionConfigurationLookupFunction"
-        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+        class="net.shibboleth.oidc.profile.config.navigate.JWTEncryptionConfigurationLookupFunction" />
 
     <bean id="EncryptionParametersResolver" scope="prototype"
         class="net.shibboleth.oidc.security.jose.impl.DefaultEncryptionParametersResolver">
@@ -442,8 +440,7 @@
         class="net.shibboleth.oidc.security.jose.impl.DefaultDecryptionParametersResolver" />
 
     <bean id="IDTokenDecryptionConfigurationLookup" lazy-init="true" scope="prototype"
-        class="net.shibboleth.oidc.profile.config.navigate.JWTDecryptionConfigurationLookupFunction"
-        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+        class="net.shibboleth.oidc.profile.config.navigate.JWTDecryptionConfigurationLookupFunction"/>
 
     <bean id="DecryptIDTokenJWE" class="net.shibboleth.oidc.security.impl.DecryptJWE" scope="prototype"
         p:profileContextLookupStrategy-ref="shibboleth.ChildLookup.ProxyProfileRequestContext">
@@ -475,8 +472,7 @@
                             <property name="configurationLookupStrategy">
                                 <bean class="net.shibboleth.oidc.profile.config.navigate.MessageContextLookupFunctionAdaptor">
                                     <constructor-arg>
-                                        <bean class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureValidationConfigurationLookupFunction"
-                                            p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+                                        <bean class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureValidationConfigurationLookupFunction"/>
                                     </constructor-arg>
                                 </bean>                                
                             </property>                            
@@ -491,7 +487,7 @@
                             scope="prototype">
                             <property name="jwtTokenLookupStrategy">
                                 <bean
-                                    class="net.shibboleth.idp.profile.context.navigate.SpringExpressionContextLookupFunction"
+                                    class="net.shibboleth.profile.context.navigate.SpringExpressionContextLookupFunction"
                                     c:_0="#{ T(org.opensaml.messaging.context.MessageContext) }"
                                     c:outputType="#{T(com.nimbusds.jwt.SignedJWT)}"
                                     c:expression="#input.getSubcontext(T(net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext)).getTokenResponse().getOIDCTokens().getIDToken()" />
@@ -705,8 +701,7 @@
         p:decryptionParametersResolver-ref="JWTDecryptionParametersResolver">
         <property name="configurationLookupStrategy">
 	        <bean id="UserInfoTokenDecryptionConfigurationLookup" scope="prototype"
-	           class="net.shibboleth.oidc.profile.config.navigate.JWTDecryptionConfigurationLookupFunction"
-	           p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+	           class="net.shibboleth.oidc.profile.config.navigate.JWTDecryptionConfigurationLookupFunction"/>
         </property>
     </bean>
     
@@ -739,8 +734,7 @@
                             <property name="configurationLookupStrategy">
                                  <bean class="net.shibboleth.oidc.profile.config.navigate.MessageContextLookupFunctionAdaptor">
                                     <constructor-arg>
-                                        <bean class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureValidationConfigurationLookupFunction"
-                                            p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+                                        <bean class="net.shibboleth.oidc.profile.config.navigate.JWTSignatureValidationConfigurationLookupFunction"/>
                                     </constructor-arg>
                                 </bean>
                             </property>                            
@@ -755,7 +749,7 @@
                             scope="prototype">
                             <property name="jwtTokenLookupStrategy">
                                 <bean
-                                    class="net.shibboleth.idp.profile.context.navigate.SpringExpressionContextLookupFunction"
+                                    class="net.shibboleth.profile.context.navigate.SpringExpressionContextLookupFunction"
                                     c:_0="#{ T(org.opensaml.messaging.context.MessageContext) }"
                                     c:outputType="#{T(com.nimbusds.jwt.SignedJWT)}"
                                     c:expression="#input.getSubcontext(T(net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext)).getUserInfo().getUserInfoJWT()" />
@@ -855,7 +849,7 @@
         p:authenticationContextLookupStrategy-ref="ParentAuthenticiationContextLookup"
         p:addDefaultPrincipals="#{getObject('idp.authn.oidc.rp.supportedPrincipals.addDefaultPrincipals') ?: %{idp.authn.oidc.rp.addDefaultPrincipals:false}}"
         p:responderLookupStrategy-ref="shibboleth.RelyingPartyIdLookup.Simple"
-        p:requesterLookupStrategy-ref="shibboleth.ResponderIdLookup.Simple"
+        p:requesterLookupStrategy-ref="shibboleth.IssuerLookup.Simple"
         p:cleanupHook="#{getObject('shibboleth.authn.oidc.rp.CleanUpHook')}"
         p:contextToPrivateCredentialsMappingStrategy="#{getObject('shibboleth.authn.oidc.rp.ContextToPrivateCredentialsMappingStrategy')}"
         p:attributeExtractionStrategy="#{getObject('shibboleth.authn.oidc.rp.AttributeExtractionStrategy')}"
@@ -867,7 +861,7 @@
         p:availableFlows-ref="shibboleth.authn.oidc.rp.c14n.PostLoginSubjectCanonicalizationFlows" />
 
     <bean id="shibboleth.authn.oidc.rp.c14n.PostLoginSubjectCanonicalizationFlows"
-        class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
+        class="net.shibboleth.shared.spring.factory.CombiningListFactoryBean"
         p:firstList-ref="InbuiltPostLoginSubjectCanonicalizationFlows"
         p:secondList-ref="shibboleth.PostLoginSubjectCanonicalizationFlows" />
 
diff --git a/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/oidc/rp/keyset/keyset-beans.xml b/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/oidc/rp/keyset/keyset-beans.xml
index 192db95..252fb8c 100644
--- a/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/oidc/rp/keyset/keyset-beans.xml
+++ b/idp-oidc-rp-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/oidc/rp/keyset/keyset-beans.xml
@@ -27,7 +27,7 @@
         
     <bean id="SelectRelyingPartyConfiguration"
         class="net.shibboleth.idp.profile.impl.SelectRelyingPartyConfiguration" scope="prototype"
-        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyConfigurationResolver" />
+        p:relyingPartyConfigurationResolver-ref="shibboleth.RelyingPartyResolverService" />
     
     <bean id="SelectProfileConfiguration" class="net.shibboleth.idp.profile.impl.SelectProfileConfiguration"
         scope="prototype" />
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoderTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoderTest.java
index 5f537ae..0ff5b67 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoderTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultAccessTokenResponseDecoderTest.java
@@ -25,10 +25,9 @@ import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.io.entity.StringEntity;
 import org.mockito.Mockito;
 import org.springframework.http.MediaType;
 import org.testng.annotations.BeforeMethod;
@@ -41,7 +40,7 @@ import com.nimbusds.oauth2.sdk.TokenResponse;
 import com.nimbusds.openid.connect.sdk.OIDCTokenResponse;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the DefaultAccessTokenResponseDecoder.*/
 public class DefaultAccessTokenResponseDecoderTest extends AbstractOIDCTest {
@@ -61,12 +60,11 @@ public class DefaultAccessTokenResponseDecoderTest extends AbstractOIDCTest {
     @Test
     public void testEncoder_Success() throws ComponentInitializationException, UnsupportedOperationException, IOException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);
         Mockito.when(response.getEntity()).thenReturn(new StringEntity(ACCESS_TOKEN_RESPONSE, 
-                ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
+                ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));        
+        Mockito.when(response.getCode()).thenReturn(200);
 
         final TokenResponse decodedResponse = decoder.apply(response);        
         assertNotNull(decodedResponse);
@@ -81,7 +79,7 @@ public class DefaultAccessTokenResponseDecoderTest extends AbstractOIDCTest {
     @Test
     public void testEncoder_NullResponseFields() throws ComponentInitializationException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);
         
         final TokenResponse decodedResponse = decoder.apply(response);
         assertNull(decodedResponse);
@@ -90,13 +88,12 @@ public class DefaultAccessTokenResponseDecoderTest extends AbstractOIDCTest {
     @Test
     public void testEncoder_InternalServerErrorResponse() throws ComponentInitializationException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(500);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
-        Mockito.when(response.getEntity()).thenReturn(new StringEntity(TOKEN_RESPONSE_ERROR, 
-                ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
         
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(response.getEntity()).thenReturn(new StringEntity(TOKEN_RESPONSE_ERROR, 
+                ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));        
+        Mockito.when(response.getCode()).thenReturn(500);
+                
         final TokenResponse decodedResponse = decoder.apply(response);
         
         assertNotNull(decodedResponse);
@@ -108,10 +105,9 @@ public class DefaultAccessTokenResponseDecoderTest extends AbstractOIDCTest {
     @Test
     public void testEncoder_NoMessageEntity() throws ComponentInitializationException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);       
+        Mockito.when(response.getCode()).thenReturn(200);
         when(response.getEntity()).thenReturn(null);
         
         final TokenResponse decodedResponse = decoder.apply(response);        
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoderTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoderTest.java
index c4b0406..176e3b7 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoderTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/decoding/impl/DefaultUserInfoResponseDecoderTest.java
@@ -26,11 +26,12 @@ import static org.testng.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
 
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.message.BasicHeader;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.ProtocolException;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.message.BasicHeader;
 import org.mockito.Mockito;
 import org.springframework.http.MediaType;
 import org.testng.annotations.BeforeMethod;
@@ -45,7 +46,7 @@ import com.nimbusds.openid.connect.sdk.UserInfoErrorResponse;
 import com.nimbusds.openid.connect.sdk.UserInfoResponse;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link DefaultUserInfoResponseDecoder}.*/
 public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
@@ -62,23 +63,21 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     }
     
     @Test
-    public void testEncoder_InternalServerErrorResponse() throws ComponentInitializationException {
+    public void testEncoder_InternalServerErrorResponse() throws ComponentInitializationException, ProtocolException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(500);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);       
+        Mockito.when(response.getCode()).thenReturn(500);
 
-        final Header[] headers = new Header[1];
-        headers[0] = new BasicHeader(
+        final Header header = new BasicHeader(
                 DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER,"Bearer realm=\"example\",\n"
                 + "                       error=\"invalid_token\",\n"
                 + "                       error_description=\"The access token expired\"");
-        when(response.getHeaders(DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER))
-            .thenReturn(headers);
+        when(response.getHeader(DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER))
+            .thenReturn(header);
         
         final UserInfoResponse userInfoResponse = decoder.apply(response);
+        assertNotNull(userInfoResponse);
         assertFalse(userInfoResponse.indicatesSuccess());
         final ErrorObject errorMsg = ((UserInfoErrorResponse)userInfoResponse).getErrorObject();
         assertNotNull(errorMsg);
@@ -87,10 +86,9 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_NoMessageEntity() throws ComponentInitializationException {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(200);
         when(response.getEntity()).thenReturn(null);
         
         final UserInfoResponse userInfoResponse = decoder.apply(response);
@@ -101,14 +99,11 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_PlainResponse_Success() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);       
+        Mockito.when(response.getCode()).thenReturn(200);        
         final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
         when(response.getEntity()).thenReturn(mockHttpEntity);
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type",MediaType.APPLICATION_JSON_VALUE));
+        when(mockHttpEntity.getContentType()).thenReturn(MediaType.APPLICATION_JSON_VALUE);
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE.getBytes()));
         final UserInfoResponse userInfoResponse = decoder.apply(response);
         
@@ -127,15 +122,13 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_JWSResponse_PlainJSONContentType_Fail() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+
         final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);     
+        Mockito.when(response.getCode()).thenReturn(200);
         when(response.getEntity()).thenReturn(mockHttpEntity);
         // Set the WRONG content type here
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type",MediaType.APPLICATION_JSON_VALUE));
+        when(mockHttpEntity.getContentType()).thenReturn(MediaType.APPLICATION_JSON_VALUE);
         
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE_JWS.getBytes()));
         final UserInfoResponse userInfoResponse = decoder.apply(response);
@@ -145,15 +138,12 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_PlainResponse_JWTContentType_Fail() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(200);
         final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
         when(response.getEntity()).thenReturn(mockHttpEntity);
         // Set the WRONG content type here
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type",ContentType.APPLICATION_JWT.getType()));
+        when(mockHttpEntity.getContentType()).thenReturn(ContentType.APPLICATION_JWT.getType());
         
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE.getBytes()));
         final UserInfoResponse userInfoResponse = decoder.apply(response);
@@ -163,15 +153,12 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_UnknownContentType() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(200);
         final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
         when(response.getEntity()).thenReturn(mockHttpEntity);
         // Set the WRONG content type here
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type","application/unknown"));
+        when(mockHttpEntity.getContentType()).thenReturn("application/unknown");
         
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE_JWS.getBytes()));
         final UserInfoResponse userInfoResponse = decoder.apply(response);
@@ -181,14 +168,11 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_JWSResponse_Success() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(200);
+        final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);        
         when(response.getEntity()).thenReturn(mockHttpEntity);
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type",ContentType.APPLICATION_JWT.getType()));
+        when(mockHttpEntity.getContentType()).thenReturn(ContentType.APPLICATION_JWT.getType());
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE_JWS.getBytes()));
         
         final UserInfoResponse userInfoResponse = decoder.apply(response);
@@ -206,19 +190,16 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_ErrorResponse() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(401);
         final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(401);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
         when(response.getEntity()).thenReturn(mockHttpEntity);
-        final Header[] headers = new Header[1];
-        headers[0] = new BasicHeader(
+        final Header header = new BasicHeader(
                 DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER,"Bearer realm=\"example\",\n"
                 + "                       error=\"invalid_token\",\n"
                 + "                       error_description=\"The access token expired\"");
-        when(response.getHeaders(DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER))
-            .thenReturn(headers);
+        when(response.getHeader(DefaultUserInfoResponseDecoder.USERINFO_ERROR_RESPONSE_HEADER))
+            .thenReturn(header);
 
         final UserInfoResponse userInfoResponse = decoder.apply(response);
         
@@ -229,14 +210,11 @@ public class DefaultUserInfoResponseDecoderTest extends AbstractOIDCTest  {
     @Test
     public void testEncoder_JWEAndJWSResponse_Success() throws Exception {
         decoder.initialize();
-        final HttpResponse response = Mockito.mock(HttpResponse.class);
-        final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);
-        final StatusLine mockStatusLine = Mockito.mock(StatusLine.class);
-        when(mockStatusLine.getStatusCode()).thenReturn(200);
-        when(response.getStatusLine()).thenReturn(mockStatusLine);
+        final ClassicHttpResponse response = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(response.getCode()).thenReturn(200);
+        final HttpEntity mockHttpEntity = Mockito.mock(HttpEntity.class);       
         when(response.getEntity()).thenReturn(mockHttpEntity);
-        when(mockHttpEntity.getContentType()).thenReturn(
-                new BasicHeader("Content-Type",ContentType.APPLICATION_JWT.getType()));
+        when(mockHttpEntity.getContentType()).thenReturn(ContentType.APPLICATION_JWT.getType());
         when(mockHttpEntity.getContent()).thenReturn(new ByteArrayInputStream(USERINFO_RESPONSE_JWE.getBytes()));
         
         final UserInfoResponse userInfoResponse = decoder.apply(response);        
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/NimbusAuthCodeTokenRequestEncoderTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/NimbusAuthCodeTokenRequestEncoderTest.java
index 7264872..49e2012 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/NimbusAuthCodeTokenRequestEncoderTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/encoding/impl/NimbusAuthCodeTokenRequestEncoderTest.java
@@ -25,8 +25,7 @@ import java.net.URI;
 import java.nio.charset.StandardCharsets;
 import java.security.interfaces.RSAPrivateKey;
 
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -67,13 +66,12 @@ public class NimbusAuthCodeTokenRequestEncoderTest extends AbstractOIDCTest {
         peerEntityCtx.addSubcontext(clientAuthContext);
         
         encoder.initialize();
-        final HttpUriRequest request = encoder.apply(prc);
+        final ClassicHttpRequest request = encoder.apply(prc);
         assertNotNull(request);
-        assertTrue(request instanceof HttpEntityEnclosingRequest);
         assertNotNull(request.getFirstHeader("Authorization"));
-        assertNotNull(((HttpEntityEnclosingRequest)request).getEntity().getContent());
+        assertNotNull(request.getEntity().getContent());
         final String content = new String(
-                ((HttpEntityEnclosingRequest)request).getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
+                (request.getEntity().getContent().readAllBytes()), StandardCharsets.UTF_8);
         assertTrue("grant_type expected in request", content.contains("grant_type"));
         assertTrue("authorization_code expected in request", content.contains("authorization_code"));
         assertTrue("code expected in request", content.contains("code"));
@@ -89,13 +87,11 @@ public class NimbusAuthCodeTokenRequestEncoderTest extends AbstractOIDCTest {
         peerEntityCtx.addSubcontext(clientAuthContext);
         
         encoder.initialize();
-        final HttpUriRequest request = encoder.apply(prc);
+        final ClassicHttpRequest request = encoder.apply(prc);
         assertNotNull(request);
-        assertTrue(request instanceof HttpEntityEnclosingRequest);
         assertNull(request.getFirstHeader("Authorization"));
-        assertNotNull(((HttpEntityEnclosingRequest)request).getEntity().getContent());
-        final String content = new String(
-                ((HttpEntityEnclosingRequest)request).getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
+        assertNotNull(request.getEntity().getContent());
+        final String content = new String(request.getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
         assertTrue("grant_type expected in request", content.contains("grant_type"));
         assertTrue("client_secret expected in request", content.contains("client_secret"));
         assertTrue("client_id expected in request", content.contains("client_id"));
@@ -115,13 +111,12 @@ public class NimbusAuthCodeTokenRequestEncoderTest extends AbstractOIDCTest {
         peerEntityCtx.addSubcontext(clientAuthContext);
         
         encoder.initialize();
-        final HttpUriRequest request = encoder.apply(prc);
+        final ClassicHttpRequest request = encoder.apply(prc);
         assertNotNull(request);
-        assertTrue(request instanceof HttpEntityEnclosingRequest);
         assertNull(request.getFirstHeader("Authorization"));
-        assertNotNull(((HttpEntityEnclosingRequest)request).getEntity().getContent());
+        assertNotNull(request.getEntity().getContent());
         final String content = new String(
-                ((HttpEntityEnclosingRequest)request).getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
+                (request.getEntity().getContent().readAllBytes()), StandardCharsets.UTF_8);
         assertTrue("grant_type expected in request", content.contains("grant_type"));
         assertTrue("client_assertion_type expected in request", content.contains("client_assertion_type"));
         assertTrue("client_assertion expected in request", content.contains("client_assertion"));
@@ -151,13 +146,12 @@ public class NimbusAuthCodeTokenRequestEncoderTest extends AbstractOIDCTest {
         peerEntityCtx.addSubcontext(clientAuthContext);
         
         encoder.initialize();
-        final HttpUriRequest request = encoder.apply(prc);
+        final ClassicHttpRequest request = encoder.apply(prc);
         assertNotNull(request);
-        assertTrue(request instanceof HttpEntityEnclosingRequest);
         assertNull(request.getFirstHeader("Authorization"));
-        assertNotNull(((HttpEntityEnclosingRequest)request).getEntity().getContent());
+        assertNotNull(request.getEntity().getContent());
         final String content = new String(
-                ((HttpEntityEnclosingRequest)request).getEntity().getContent().readAllBytes(), StandardCharsets.UTF_8);
+                (request.getEntity().getContent().readAllBytes()), StandardCharsets.UTF_8);
         assertTrue("grant_type expected in request", content.contains("grant_type"));
         assertTrue("client_assertion_type expected in request", content.contains("client_assertion_type"));
         assertTrue("client_assertion expected in request", content.contains("client_assertion"));
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCTest.java
index 07e1c12..95a615f 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AbstractOIDCTest.java
@@ -23,7 +23,7 @@ import java.util.Map;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.webflow.execution.RequestContext;
@@ -40,16 +40,16 @@ import net.minidev.json.parser.JSONParser;
 import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.impl.DefaultAuthenticationResultSerializer;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Abstract class for tests that require context setup appropriate for an OIDC request/response.*/
 public abstract class AbstractOIDCTest {
@@ -288,12 +288,12 @@ public abstract class AbstractOIDCTest {
         partyConfig.setTokenEndpointAuthMethod("client_secret_basic");
         partyConfig.setClientId(CLIENT_ID);
         partyConfig.setRedirectUriOverride(REDIRECT_URI_OVERRIDE);
-        final RelyingPartyConfiguration rPartyConfig = new RelyingPartyConfiguration();
-        rPartyConfig.setResponderId("http://idp.example.com/");
+        final BasicRelyingPartyConfiguration rPartyConfig = new BasicRelyingPartyConfiguration();
+        rPartyConfig.setIssuer("http://idp.example.com/");
         partyContext.setConfiguration(rPartyConfig);
         prc.addSubcontext(partyContext);
         
-        peerEntityCtx = outMsgCtx.getSubcontext(OIDCPeerEntityContext.class,true);
+        peerEntityCtx = outMsgCtx.ensureSubcontext(OIDCPeerEntityContext.class);
         providerCtx = new OIDCProviderMetadataContext();
         providerCtx.setProviderInformation(
                         OIDCProviderMetadata.parse((JSONObject)parser.parse(GOOD_PROVIDER_CONFIGURATION_INFO)));
@@ -311,7 +311,7 @@ public abstract class AbstractOIDCTest {
     }
     
     
-    protected JSONObject convertHttpResponseToJSONObject(final HttpResponse response) throws Exception {
+    protected JSONObject convertHttpResponseToJSONObject(final ClassicHttpResponse response) throws Exception {
         final ObjectMapper mapper = new ObjectMapper();
         final Map<String, Object> tokenResponseAsMap = mapper.readValue(
                 response.getEntity().getContent(), new TypeReference<Map<String, Object>>() {});
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationControllerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationControllerTest.java
index 9b4957f..b9d6c92 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationControllerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/AuthorizationControllerTest.java
@@ -35,12 +35,9 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
+import org.apache.hc.core5.http.NameValuePair;
+import org.apache.hc.core5.net.URLEncodedUtils;
 import org.mockito.Mockito;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -80,6 +77,9 @@ import com.nimbusds.oauth2.sdk.id.ClientID;
 import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
 import net.shibboleth.idp.authn.ExternalAuthentication;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
@@ -107,9 +107,10 @@ import net.shibboleth.oidc.security.impl.SignJWTHandler;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.net.HttpServletSupport;
-import net.shibboleth.utilities.java.support.net.URLBuilder;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.net.URLBuilder;
+import net.shibboleth.shared.primitive.NonnullSupplier;
+import net.shibboleth.shared.servlet.HttpServletSupport;
 
 /** Integration tests, using other 'live' actions, for the AuthorizationController.*/
 @ContextConfiguration(classes = {AuthorizationController.class, IdPPropertyConfigurer.class})
@@ -327,7 +328,8 @@ public class AuthorizationControllerTest extends AbstractTestNGSpringContextTest
         final var encrypter = new EncryptJWTHandler();
         encrypter.setPayloadToEncryptLookupStrategy(new PayloadFromRequestObjectLookupFunction());
         encrypter.setJwtUpdateConsumer(new RequestObjectTokenUpdateStrategy());
-        encrypter.initialize();        
+        encrypter.initialize(); 
+        chainingMsgHandler.initialize();
         
         handlers.add(addState);
         handlers.add(buildRequestObjectJwt);
@@ -379,9 +381,10 @@ public class AuthorizationControllerTest extends AbstractTestNGSpringContextTest
         ac.addSubcontext(ec);
         
         final MockRedirectEncoder encoder = new MockRedirectEncoder();
-        encoder.setHttpServletResponse(response);
+        encoder.setHttpServletResponseSupplier(NonnullSupplier.of(response));       
         final MockEncodeMessage encode = new MockEncodeMessage(encoder);
-        encode.setHttpServletResponse(response);
+        encode.setHttpServletResponseSupplier(NonnullSupplier.of(response));
+        encode.initialize();
         final OIDCAuthnContext oidcContext = new OIDCAuthnContext(encode, 
                 decoder -> new NoOpMockRedirectResponseDecoder());
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
index 19ee888..3d8c459 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/BuildRequestObjectTest.java
@@ -45,12 +45,13 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 
 import net.shibboleth.idp.authn.context.AuthenticationContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link BuildRequestObject} action.*/
 public class BuildRequestObjectTest extends AbstractOIDCTest {
@@ -70,9 +71,9 @@ public class BuildRequestObjectTest extends AbstractOIDCTest {
         super.setup();
         action = new BuildRequestObject(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultClaimMergingStrategyTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultClaimMergingStrategyTest.java
index cddca0f..fcc93a2 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultClaimMergingStrategyTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultClaimMergingStrategyTest.java
@@ -31,7 +31,7 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 import net.minidev.json.JSONObject;
 import net.minidev.json.parser.JSONParser;
 import net.minidev.json.parser.ParseException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Test for the DefaultClaimMergingStrategy.*/
 public class DefaultClaimMergingStrategyTest {
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunctionTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunctionTest.java
index 133be01..e2a6e5e 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunctionTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/DefaultRedirectUriCreationFunctionTest.java
@@ -59,8 +59,8 @@ public class DefaultRedirectUriCreationFunctionTest {
         prc = new ProfileRequestContext();
         prc.setOutboundMessageContext(new MessageContext());
         final OIDCPeerEntityContext peerCtx = 
-                prc.getOutboundMessageContext().getSubcontext(OIDCPeerEntityContext.class, true);
-        clientContext = peerCtx.getSubcontext(OAuth2ClientContext.class, true);
+                prc.getOutboundMessageContext().ensureSubcontext(OIDCPeerEntityContext.class);
+        clientContext = peerCtx.ensureSubcontext(OAuth2ClientContext.class);
         
     }
     
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessTokenTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessTokenTest.java
index 9db95bc..ac55c91 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessTokenTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ExchangeCodeForAccessTokenTest.java
@@ -28,15 +28,15 @@ import java.net.URISyntaxException;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.methods.RequestBuilder;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.net.URIBuilder;
 import org.mockito.Mockito;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.messaging.context.navigate.ParentContextLookup;
@@ -88,12 +88,8 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
     public void testTokenExchange() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(httpResponse.getCode()).thenReturn(200);
         Mockito.when(httpResponse.getEntity()).thenReturn(
                 new StringEntity(ACCESS_TOKEN_RESPONSE, ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
         Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
@@ -114,7 +110,7 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
@@ -140,15 +136,11 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
     public void testTokenExchange_WrongTokenType() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(httpResponse.getCode()).thenReturn(200);
         Mockito.when(httpResponse.getEntity()).thenReturn(
                 new StringEntity(ACCESS_TOKEN_RESPONSE_NO_IDTOKEN, ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
+        Mockito.when(httpClient.executeOpen((HttpHost)Mockito.any(), (HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
                 .thenReturn(httpResponse);
 
         // create new client with mock response
@@ -166,7 +158,7 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
@@ -192,12 +184,8 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
     public void testTokenExchange_ErrorResponse() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
-        Mockito.when(statusLine.getStatusCode()).thenReturn(400);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(httpResponse.getCode()).thenReturn(400);
         Mockito.when(httpResponse.getEntity()).thenReturn(
                 new StringEntity(TOKEN_RESPONSE_ERROR, ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
         Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
@@ -218,7 +206,7 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
@@ -244,10 +232,8 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
     public void testNullTokenResponse() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);       
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(httpResponse.getCode()).thenReturn(200);       
 
         // create new client with mock response
         exchangeAction.setHttpClient(httpClient);
@@ -264,7 +250,7 @@ public class ExchangeCodeForAccessTokenTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_FORM_URLENCODED.getMimeType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockAsymmetricJOSEObjectCredentialResolver.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockAsymmetricJOSEObjectCredentialResolver.java
index 4075798..ee7ddc8 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockAsymmetricJOSEObjectCredentialResolver.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockAsymmetricJOSEObjectCredentialResolver.java
@@ -29,8 +29,8 @@ import com.nimbusds.jose.jwk.AsymmetricJWK;
 
 import net.shibboleth.oidc.security.credential.BasicJWKCredential;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** Mock credential resolvers which builds a credential from the given key.*/
 public class MockAsymmetricJOSEObjectCredentialResolver implements JOSEObjectCredentialResolver {
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockMatcher.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockMatcher.java
index 507500b..cab0364 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockMatcher.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockMatcher.java
@@ -27,9 +27,10 @@ import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.filter.Matcher;
 import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+
 
 /** A simple, mock implementation of {@link Matcher}. */
 @SuppressWarnings("javadoc")
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockReloadableService.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockReloadableService.java
deleted file mode 100644
index be37c85..0000000
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockReloadableService.java
+++ /dev/null
@@ -1,55 +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.plugin.authn.oidc.rp.impl;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.utilities.java.support.service.AbstractReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
-
-/**
- * Utility class for wrapping a serviceable component in a dummy reloadable service.
- * 
- * @param <T> type of component
- */
-public class MockReloadableService<T> extends AbstractReloadableService<T> {
-
-    @Nonnull private final ServiceableComponent<T> component;
-
-    public MockReloadableService(@Nullable final ServiceableComponent<T> what) {
-        component = what;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    @Nullable public ServiceableComponent<T> getServiceableComponent() {
-        if (null == component) {
-            return null;
-        }
-        component.pinComponent();
-        return component;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected boolean shouldReload() {
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockSimpleStringTranscoder.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockSimpleStringTranscoder.java
index 304de39..eef4a73 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockSimpleStringTranscoder.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/MockSimpleStringTranscoder.java
@@ -33,7 +33,7 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Sample transcoder for tests which only supports simple strings.
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
index 4041162..a3e06ef 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/OIDCRPFlowTest.java
@@ -29,11 +29,15 @@ import java.util.Set;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import javax.net.ssl.SSLContext;
 
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.TrustAllStrategy;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
+import org.apache.hc.client5.http.io.HttpClientConnectionManager;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder;
+import org.apache.hc.client5.http.ssl.TrustAllStrategy;
+import org.apache.hc.core5.ssl.SSLContexts;
 import org.opensaml.core.config.InitializationException;
 import org.opensaml.core.metrics.impl.MetricRegistryInitializer;
 import org.opensaml.messaging.context.MessageContext;
@@ -63,7 +67,6 @@ import com.nimbusds.openid.connect.sdk.Nonce;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.ExternalAuthenticationContext;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
@@ -75,8 +78,6 @@ import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OIDCSubjectIdentifierPrincipal;
 import net.shibboleth.idp.plugin.authn.test.flow.AbstractAuthnXmlFlowExecutionTests;
 import net.shibboleth.idp.plugin.authn.test.flow.mock.MockFlowBuilder;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
@@ -90,8 +91,12 @@ import net.shibboleth.oidc.security.impl.ExplicitKeySignedJWTTrustEngine;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.impl.BasicDecryptionConfiguration;
 import net.shibboleth.oidc.security.jose.impl.BasicSignatureValidationConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
+import net.shibboleth.shared.spring.service.ReloadableSpringService;
 import okhttp3.mockwebserver.MockWebServer;
 import okhttp3.tls.HandshakeCertificates;
 import okhttp3.tls.HeldCertificate;
@@ -193,7 +198,7 @@ public class OIDCRPFlowTest extends AbstractAuthnXmlFlowExecutionTests {
             Map.of(
             "classpath:flow-test/flows/authn/authn-abstract-flow.xml","authn.abstract",
             "classpath:flow-test/flows/authn/conditions/conditions-flow.xml","authn/conditions",
-            "classpath:/conf/authn/authn-events-flow.xml","authn.events");
+            "classpath:/net/shibboleth/idp/module/conf/authn/authn-events-flow.xml","authn.events");
 
 
     /** Constructor.*/
@@ -245,10 +250,19 @@ public class OIDCRPFlowTest extends AbstractAuthnXmlFlowExecutionTests {
         
         try {
             // Create a HttpClient which turns off hostname verification and trusts all certificates (for TESTS!)
-            addBeanSingleton(builderContext, "shibboleth.InternalHttpClient", 
-                        HttpClients.custom().setSSLContext(new SSLContextBuilder()
-                                .loadTrustMaterial(null, TrustAllStrategy.INSTANCE).build())
-                                .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build());
+        	final SSLContext sslcontext = SSLContexts.custom()
+                    .loadTrustMaterial(null, new TrustAllStrategy())
+                    .build();
+            final SSLConnectionSocketFactory sslSocketFactory = SSLConnectionSocketFactoryBuilder.create()
+                    .setSslContext(sslcontext)
+                    .build();
+            final HttpClientConnectionManager cm = PoolingHttpClientConnectionManagerBuilder.create()
+                    .setSSLSocketFactory(sslSocketFactory)
+                    .build();
+            addBeanSingleton(builderContext, "shibboleth.InternalHttpClient",HttpClients.custom()
+                    .setConnectionManager(cm)
+                    .evictExpiredConnections()
+                    .build());
            
         } catch (final Exception e) {
             log.error("Could not mock HTTP response",e);
@@ -433,8 +447,8 @@ public class OIDCRPFlowTest extends AbstractAuthnXmlFlowExecutionTests {
         partyConfig.setTokenEndpointAuthMethods(Set.of("client_secret_basic"));
         partyConfig.setClientId(CLIENT_ID);
         partyConfig.setRedirectUriOverride(REDIRECT_URI_OVERRIDE);
-        final RelyingPartyConfiguration rPartyConfig = new RelyingPartyConfiguration();
-        rPartyConfig.setResponderId("http://idp.example.com/");
+        final BasicRelyingPartyConfiguration rPartyConfig = new BasicRelyingPartyConfiguration();
+        rPartyConfig.setIssuer("http://idp.example.com/");
         partyContext.setConfiguration(rPartyConfig);
         nestPrc.addSubcontext(partyContext);
         partyConfig.setSecurityConfiguration(createBasicSecurityConfigAndValidationParams());
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaimsTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaimsTest.java
index db9a468..ae400a0 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaimsTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ProcessEndUserClaimsTest.java
@@ -53,12 +53,13 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.AccessTokenResponseContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.EndUserClaimsContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.UserInfoResponseContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.jwt.claims.impl.JWTClaims;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for {@link ProcessEndUserClaims}.*/
 public class ProcessEndUserClaimsTest extends AbstractOIDCTest {
@@ -79,9 +80,9 @@ public class ProcessEndUserClaimsTest extends AbstractOIDCTest {
         super.setup();
         action = new ProcessEndUserClaims(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalizationTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalizationTest.java
index 31775ba..da812b5 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalizationTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/SimpleOIDCSubjectIdentifierCanonicalizationTest.java
@@ -36,7 +36,8 @@ import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OIDCSubjectIdentifierPrincipal;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
-import net.shibboleth.utilities.java.support.collection.Pair;
+import net.shibboleth.shared.collection.Pair;
+
 
 /** Tests for {@link SimpleOIDCSubjectIdentifierCanonicalization}.*/
 public class SimpleOIDCSubjectIdentifierCanonicalizationTest extends AbstractOIDCTest {
@@ -64,47 +65,47 @@ public class SimpleOIDCSubjectIdentifierCanonicalizationTest extends AbstractOID
 
     @Test public void testNoPrincipal() {
         final Subject subject = new Subject();
-        prc.getSubcontext(SubjectCanonicalizationContext.class, true).setSubject(subject);
+        prc.ensureSubcontext(SubjectCanonicalizationContext.class).setSubject(subject);
         
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_SUBJECT);
-        Assert.assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class, false).getException());
+        Assert.assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class).getException());
     }
 
     @Test public void testMultiPrincipals() {
         final Subject subject = new Subject();
         subject.getPrincipals().add(new OIDCSubjectIdentifierPrincipal("foo"));
         subject.getPrincipals().add(new OIDCSubjectIdentifierPrincipal("bar"));
-        prc.getSubcontext(SubjectCanonicalizationContext.class, true).setSubject(subject);
+        prc.ensureSubcontext(SubjectCanonicalizationContext.class).setSubject(subject);
         
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_SUBJECT);
-        Assert.assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class, false).getException());
+        Assert.assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class).getException());
     }
 
     @Test public void testSuccess() {
         final Subject subject = new Subject();
         subject.getPrincipals().add(new OIDCSubjectIdentifierPrincipal("foo"));
-        prc.getSubcontext(SubjectCanonicalizationContext.class, true).setSubject(subject);
+        prc.ensureSubcontext(SubjectCanonicalizationContext.class).setSubject(subject);
         
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertProceedEvent(event);
-        final SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        final SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         Assert.assertEquals(sc.getPrincipalName(), "foo");
     }
 
     @Test public void testTransform() {
         final Subject subject = new Subject();
         subject.getPrincipals().add(new OIDCSubjectIdentifierPrincipal("foo at osu.edu"));
-        prc.getSubcontext(SubjectCanonicalizationContext.class, true).setSubject(subject);
+        prc.ensureSubcontext(SubjectCanonicalizationContext.class).setSubject(subject);
         
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertProceedEvent(event);
-        final SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        final SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         Assert.assertEquals(sc.getPrincipalName(), "foo");
     }
 
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookupTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookupTest.java
index ce81ceb..106de22 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookupTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/UserInfoEndpointLookupTest.java
@@ -28,14 +28,16 @@ import java.net.URISyntaxException;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.methods.RequestBuilder;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
+import org.apache.hc.core5.http.message.StatusLine;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.net.URIBuilder;
 import org.mockito.Mockito;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.messaging.context.navigate.ParentContextLookup;
@@ -88,14 +90,10 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
     public void testLookupSuccess() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(httpResponse.getCode()).thenReturn(200);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(USERINFO_RESPONSE));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
+        Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
                 .thenReturn(httpResponse);
 
         // create new client with mock response
@@ -113,7 +111,7 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_URLENCODED.getType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
@@ -146,15 +144,11 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
     public void testUserInfoLookup_ErrorResponse() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
-        Mockito.when(statusLine.getStatusCode()).thenReturn(401);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(httpResponse.getCode()).thenReturn(401);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(TOKEN_RESPONSE_ERROR));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
-                .thenReturn(httpResponse);
+        Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(),(HttpUriRequest) Mockito.any(), 
+        		(HttpContext) Mockito.any())).thenReturn(httpResponse);
 
         // create new client with mock response
         action.setHttpClient(httpClient);
@@ -171,7 +165,7 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_URLENCODED.getType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
@@ -199,10 +193,8 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
     public void testNullUserInfoResponse() throws Exception {
 
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);  
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);      
+        Mockito.when(httpResponse.getCode()).thenReturn(200);  
         
         // create new client with mock response
         action.setHttpClient(httpClient);
@@ -220,7 +212,7 @@ public class UserInfoEndpointLookupTest extends AbstractOIDCTest {
             }                 
             
             // Add headers and create request.
-            final RequestBuilder rb = RequestBuilder.post().setUri(uri)
+            final ClassicRequestBuilder rb = ClassicRequestBuilder.post().setUri(uri)
                     .setHeader("Content-Type", ContentType.APPLICATION_URLENCODED.getType())
                     .setCharset(StandardCharset.UTF_8);
             return rb.build();
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponseTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponseTest.java
index 173399a..778c1b2 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponseTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOAuthAccessTokenResponseTest.java
@@ -24,10 +24,9 @@ import static org.testng.Assert.assertNull;
 import java.time.Duration;
 import java.time.Instant;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.io.entity.StringEntity;
 import org.mockito.Mockito;
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.messaging.context.navigate.ParentContextLookup;
@@ -57,7 +56,7 @@ public class ValidateOAuthAccessTokenResponseTest extends AbstractOIDCTest {
     /** The action to test.*/
     private ValidateOAuthAccessTokenResponse action;
     
-    private HttpResponse httpResponse;
+    private ClassicHttpResponse httpResponse;
     
     private AccessTokenResponseContext atrc;
     
@@ -80,10 +79,8 @@ public class ValidateOAuthAccessTokenResponseTest extends AbstractOIDCTest {
         
         action.setAuthenticationContextLookupStrategy(new ParentContextLookup<>(AuthenticationContext.class));
         
-        httpResponse = Mockito.mock(HttpResponse.class);
-        final StatusLine statusLine = Mockito.mock(StatusLine.class);
-        Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-        Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+        httpResponse = Mockito.mock(ClassicHttpResponse.class);
+        Mockito.when(httpResponse.getCode()).thenReturn(200);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(ACCESS_TOKEN_RESPONSE, 
                 ContentType.parse(MediaType.APPLICATION_JSON_VALUE)));
 
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthenticationTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthenticationTest.java
index 998cf97..5112e07 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthenticationTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateOIDCAuthenticationTest.java
@@ -57,12 +57,13 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.principal.IdPAttributePrincipal;
 import net.shibboleth.idp.plugin.authn.oidc.rp.context.EndUserClaimsContext;
 import net.shibboleth.idp.plugin.authn.oidc.rp.principal.OIDCSubjectIdentifierPrincipal;
-import net.shibboleth.idp.plugin.authn.test.spring.MockApplicationContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.oidc.attribute.transcoding.OIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.testing.MockApplicationContext;
+import net.shibboleth.shared.testing.MockReloadableService;
 
 /** Tests for the ValidateOIDCAuthentication.*/
 public class ValidateOIDCAuthenticationTest  extends AbstractOIDCTest {
@@ -103,9 +104,8 @@ public class ValidateOIDCAuthenticationTest  extends AbstractOIDCTest {
 
         registry.setTranscoderRegistry(List.of(
                 new TranscodingRule(ruleset1)));
-        registry.setApplicationContext(new MockApplicationContext());
+        registry.setApplicationContext(new MockApplicationContext());       
         registry.initialize();
-        
         assertEquals(registry.getDisplayNames(new IdPAttribute("givenName")).size(), 1);
         
         action.setTranscoderRegistry(new MockReloadableService<>(registry));
@@ -129,7 +129,6 @@ public class ValidateOIDCAuthenticationTest  extends AbstractOIDCTest {
         policy.initialize();
         
         final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
-        filter.setApplicationContext(new MockApplicationContext());
         filter.initialize();
         action.setAttributeFilter(new MockReloadableService<>(filter));
     }
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseStateTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseStateTest.java
index fe1380c..b438637 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseStateTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/impl/ValidateResponseStateTest.java
@@ -35,11 +35,12 @@ import com.nimbusds.openid.connect.sdk.AuthenticationResponseParser;
 
 import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for {@link ValidateResponseState}.*/
 public class ValidateResponseStateTest extends AbstractOIDCTest {
@@ -59,9 +60,9 @@ public class ValidateResponseStateTest extends AbstractOIDCTest {
         super.setup();
         action = new ValidateResponseState(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandlerTest.java
index ce75e72..131a273 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddAuthenticationContextClassReferencesHandlerTest.java
@@ -26,10 +26,11 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for AddAuthenticationContextClassReferences.*/
 public class AddAuthenticationContextClassReferencesHandlerTest  extends AbstractOIDCTest {
@@ -49,9 +50,9 @@ public class AddAuthenticationContextClassReferencesHandlerTest  extends Abstrac
         super.setup();
         handler = new AddAuthenticationContextClassReferencesHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddEndpointURIHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddEndpointURIHandlerTest.java
index 56568ca..b03a88e 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddEndpointURIHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddEndpointURIHandlerTest.java
@@ -24,9 +24,10 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for {@link AddEndpointURIHandler}.*/
 public class AddEndpointURIHandlerTest extends AbstractOIDCTest {
@@ -46,9 +47,9 @@ public class AddEndpointURIHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddEndpointURIHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
 
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddForceAuthenticationPromptHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddForceAuthenticationPromptHandlerTest.java
index cdec7af..fb686f0 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddForceAuthenticationPromptHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddForceAuthenticationPromptHandlerTest.java
@@ -26,9 +26,10 @@ import org.testng.annotations.Test;
 import com.nimbusds.openid.connect.sdk.Prompt;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for {@link AddForceAuthenticationHandler}.*/
 public class AddForceAuthenticationPromptHandlerTest extends AbstractOIDCTest {
@@ -48,9 +49,9 @@ public class AddForceAuthenticationPromptHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddForceAuthenticationHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         
     }
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandlerTest.java
index 1ffac74..a5bebbd 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddPassiveAuthenticationHandlerTest.java
@@ -26,8 +26,8 @@ import org.testng.annotations.Test;
 import com.nimbusds.openid.connect.sdk.Prompt;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
 
 /** Tests for {@link AddPassiveAuthenticationHandlerTest}.*/
 public class AddPassiveAuthenticationHandlerTest extends AbstractOIDCTest {
@@ -47,7 +47,7 @@ public class AddPassiveAuthenticationHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddPassiveAuthenticationHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandlerTest.java
index d32822c..69b9a72 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRedirectURIHandlerTest.java
@@ -26,9 +26,10 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for {@link AddRedirectURIHandler}.*/
 public class AddRedirectURIHandlerTest extends AbstractOIDCTest {
@@ -48,9 +49,9 @@ public class AddRedirectURIHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddRedirectURIHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandlerTest.java
index e80f40b..9e37d42 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddRequestedClaimsHandlerTest.java
@@ -28,10 +28,11 @@ import com.nimbusds.openid.connect.sdk.OIDCClaimsRequest;
 import com.nimbusds.openid.connect.sdk.assurance.claims.VerifiedClaimsSetRequest;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for the AddRequestedClaimsHandler action.*/
 public class AddRequestedClaimsHandlerTest extends AbstractOIDCTest {
@@ -51,9 +52,9 @@ public class AddRequestedClaimsHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddRequestedClaimsHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
     }
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddResponseTypeAndModeHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddResponseTypeAndModeHandlerTest.java
index 707af65..6339939 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddResponseTypeAndModeHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddResponseTypeAndModeHandlerTest.java
@@ -28,10 +28,11 @@ import com.nimbusds.oauth2.sdk.ResponseMode;
 import com.nimbusds.oauth2.sdk.ResponseType;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for the {@link AddResponseTypeAndModeHandler} action.*/
 public class AddResponseTypeAndModeHandlerTest extends AbstractOIDCTest {
@@ -51,9 +52,9 @@ public class AddResponseTypeAndModeHandlerTest extends AbstractOIDCTest {
     public void setup() throws Exception {
         super.setup();
         handler = new AddResponseTypeAndModeHandler(); 
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
     }
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddScopesHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddScopesHandlerTest.java
index b1fd700..b7c8b38 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddScopesHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/messaging/impl/AddScopesHandlerTest.java
@@ -26,9 +26,10 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.plugin.authn.oidc.rp.impl.AbstractOIDCTest;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 
 /** Tests for {@link AddScopesHandler}.*/
 public class AddScopesHandlerTest extends AbstractOIDCTest {
@@ -48,9 +49,9 @@ public class AddScopesHandlerTest extends AbstractOIDCTest {
         super.setup();
         handler = new AddScopesHandler(); 
         
-        rpc = prc.getSubcontext(RelyingPartyContext.class, true); 
+        rpc = prc.ensureSubcontext(RelyingPartyContext.class); 
         oidcAuthzConfig = new DefaultOIDCAuthorizationConfiguration();
-        final RelyingPartyConfiguration rpConfig = new RelyingPartyConfiguration();
+        final RelyingPartyConfiguration rpConfig = new BasicRelyingPartyConfiguration();
         rpc.setProfileConfig(oidcAuthzConfig);
         rpc.setConfiguration(rpConfig);
         
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandlerTest.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandlerTest.java
index 336a19d..c1e0016 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandlerTest.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/oidc/rp/metadata/impl/OIDCProviderMetadataLookupHandlerTest.java
@@ -37,8 +37,8 @@ import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.profile.messaging.context.AbstractOIDCEntityContext;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** Tests for OIDCClientMetadataLookupHandler.*/
 public class OIDCProviderMetadataLookupHandlerTest extends AbstractOIDCTest {
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/AbstractAuthnXmlFlowExecutionTests.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/AbstractAuthnXmlFlowExecutionTests.java
index 9f04867..c13e827 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/AbstractAuthnXmlFlowExecutionTests.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/AbstractAuthnXmlFlowExecutionTests.java
@@ -31,6 +31,8 @@ import javax.annotation.Nullable;
 
 import org.mockito.Mockito;
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.profile.context.navigate.InboundMessageContextLookup;
+import org.opensaml.profile.context.navigate.OutboundMessageContextLookup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.BeanFactory;
@@ -63,29 +65,37 @@ import org.springframework.webflow.test.execution.AbstractExternalizedFlowExecut
 
 import com.google.common.net.HttpHeaders;
 
-import net.shibboleth.ext.spring.config.BooleanToPredicateConverter;
-import net.shibboleth.ext.spring.config.FunctionToFunctionConverter;
-import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
-import net.shibboleth.ext.spring.config.PredicateToPredicateConverter;
-import net.shibboleth.ext.spring.config.StringBooleanToPredicateConverter;
-import net.shibboleth.ext.spring.config.StringToIPRangeConverter;
-import net.shibboleth.ext.spring.config.StringToResourceConverter;
-import net.shibboleth.ext.spring.resource.ConditionalResourceResolver;
-import net.shibboleth.ext.spring.util.AnnotationParameterNameDiscoverer;
 import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.plugin.authn.test.spring.CustomAbstractXmlFlowExecutionTests;
 import net.shibboleth.idp.plugin.authn.test.spring.CustomFlowModelFlowBuilder;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
+import net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor;
 import net.shibboleth.idp.session.IdPSession;
 import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
-import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifierGenerationStrategy;
-import net.shibboleth.utilities.java.support.xml.DOMTypeSupport;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
+import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.logic.ScriptedFunction;
+import net.shibboleth.shared.security.impl.SecureRandomIdentifierGenerationStrategy;
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletRequestSupplier;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletResponseSupplier;
+import net.shibboleth.shared.spring.config.BooleanToPredicateConverter;
+import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
+import net.shibboleth.shared.spring.config.StringBooleanToPredicateConverter;
+import net.shibboleth.shared.spring.config.StringToIPRangeConverter;
+import net.shibboleth.shared.spring.config.StringToResourceConverter;
+import net.shibboleth.shared.spring.expression.SpringExpressionBiFunction;
+import net.shibboleth.shared.spring.expression.SpringExpressionFunction;
+import net.shibboleth.shared.spring.resource.ConditionalResourceResolver;
+import net.shibboleth.shared.spring.util.AnnotationParameterNameDiscoverer;
+import net.shibboleth.shared.xml.DOMTypeSupport;
 
 
 /**
@@ -295,12 +305,10 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
         
         // register http servlet suppliers
         addBeanDefinition(builderContext, "shibboleth.HttpServletRequestSupplier",BeanDefinitionBuilder.
-                genericBeanDefinition(
-                        net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestSupplier.class)
+                genericBeanDefinition(ThreadLocalHttpServletRequestSupplier.class)
                 .getBeanDefinition());
         addBeanDefinition(builderContext, "shibboleth.HttpServletResponseSupplier",BeanDefinitionBuilder.
-                genericBeanDefinition(
-                        net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletResponseSupplier.class)
+                genericBeanDefinition(ThreadLocalHttpServletResponseSupplier.class)
                 .getBeanDefinition());
         
         // Load the request and final response context into the holder.
@@ -321,52 +329,52 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
         
         //register shibboleth function constants.
         addBeanDefinition(builderContext, "shibboleth.Functions.Constant",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.utilities.java.support.logic.FunctionSupport.class)
+                genericBeanDefinition(FunctionSupport.class)
                 .setFactoryMethod("constant").setAbstract(true).getBeanDefinition());
         
         
         addBeanDefinition(builderContext, "shibboleth.Functions.Compose",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.utilities.java.support.logic.FunctionSupport.class)
+                genericBeanDefinition(FunctionSupport.class)
                 .setFactoryMethod("compose").setAbstract(true).getBeanDefinition());
         
         addBeanDefinition(builderContext, "shibboleth.ContextFunctions.Expression",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.utilities.java.support.logic.FunctionSupport.class)
+                genericBeanDefinition(FunctionSupport.class)
                 .setFactoryMethod("compose").setAbstract(true).getBeanDefinition());
         
         
         addBeanDefinition(builderContext, "shibboleth.MessageContextLookup.Outbound",BeanDefinitionBuilder.
-                genericBeanDefinition(org.opensaml.profile.context.navigate.OutboundMessageContextLookup.class)
+                genericBeanDefinition(OutboundMessageContextLookup.class)
                 .getBeanDefinition());           
         
         addBeanDefinition(builderContext, "shibboleth.MessageContextLookup.Inbound",BeanDefinitionBuilder.
-                genericBeanDefinition(org.opensaml.profile.context.navigate.InboundMessageContextLookup.class)
+                genericBeanDefinition(InboundMessageContextLookup.class)
                 .getBeanDefinition()); 
        
-        addBeanDefinition(builderContext, "shibboleth.ResponderIdLookup.Simple",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.idp.profile.context.navigate.ResponderIdLookupFunction.class)
+        addBeanDefinition(builderContext, "shibboleth.IssuerLookup.Simple",BeanDefinitionBuilder.
+                genericBeanDefinition(IssuerLookupFunction.class)
                 .getBeanDefinition()); 
        
         addBeanDefinition(builderContext, "shibboleth.RelyingPartyIdLookup.Simple",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.idp.profile.context.navigate.RelyingPartyIdLookupFunction.class)
+                genericBeanDefinition(RelyingPartyIdLookupFunction.class)
                 .getBeanDefinition()); 
         
         
         addBeanDefinition(builderContext, "shibboleth.Functions.Expression",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.ext.spring.util.SpringExpressionFunction.class)
+                genericBeanDefinition(SpringExpressionFunction.class)
                 .setAbstract(true).getBeanDefinition());
         
         addBeanDefinition(builderContext, "shibboleth.Functions.Scripted",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.utilities.java.support.logic.ScriptedFunction.class)
+                genericBeanDefinition(ScriptedFunction.class)
                 .setAbstract(true).getBeanDefinition());
         
         addBeanDefinition(builderContext, "shibboleth.BiFunctions.Expression",BeanDefinitionBuilder.
-                genericBeanDefinition(net.shibboleth.ext.spring.util.SpringExpressionBiFunction.class)
+                genericBeanDefinition(SpringExpressionBiFunction.class)
                 .setAbstract(true).getBeanDefinition());      
         
         
         addBeanDefinition(builderContext, "shibboleth.ChildLookup.RelyingParty",BeanDefinitionBuilder.
                 genericBeanDefinition(org.opensaml.messaging.context.navigate.ChildContextLookup.class)
-                .addConstructorArgValue(net.shibboleth.idp.profile.context.RelyingPartyContext.class).getBeanDefinition());
+                .addConstructorArgValue(RelyingPartyContext.class).getBeanDefinition());
         
         addBeanDefinition(builderContext, "shibboleth.ChildLookup.ProfileRequestContext",BeanDefinitionBuilder.
                 genericBeanDefinition(org.opensaml.messaging.context.navigate.ChildContextLookup.class)
@@ -505,6 +513,10 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
         ppc.setPlaceholderSuffix("}");
         ppc.postProcessBeanFactory((DefaultListableBeanFactory)factory);
         
+        // Shibboleth change - auto-inject our profile flow bean processors.
+        ((DefaultListableBeanFactory)factory).addBeanPostProcessor(new IdentifiableBeanPostProcessor());
+        ((DefaultListableBeanFactory)factory).addBeanPostProcessor(new ProfileActionBeanPostProcessor());
+        
         log.info("Loaded {} beans from {}",beanNumbers, xmlFile);
     }
     
@@ -533,8 +545,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
         //like the above converter. TODO check why.
         return Set.of(durationConverter, new StringToResourceConverter(), new StringToIPRangeConverter(),
                 new BooleanToPredicateConverter(),new StringBooleanToPredicateConverter(),
-                new StringToResourceConverter(),new FunctionToFunctionConverter<>(),
-                new PredicateToPredicateConverter<>());
+                new StringToResourceConverter());
     }
     
     /**
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/mock/MockFlowBuilder.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/mock/MockFlowBuilder.java
index b92e1b0..457997e 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/mock/MockFlowBuilder.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/flow/mock/MockFlowBuilder.java
@@ -29,7 +29,7 @@ import org.springframework.webflow.engine.support.DefaultTargetStateResolver;
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.FlowExecutionException;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * A builder for generating simple mock flows. Mostly used to generate stub subflows when testing
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/CustomFlowModelFlowBuilder.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/CustomFlowModelFlowBuilder.java
index ede1c76..57fee1e 100644
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/CustomFlowModelFlowBuilder.java
+++ b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/CustomFlowModelFlowBuilder.java
@@ -116,10 +116,10 @@ import org.springframework.webflow.scope.FlowScope;
 import org.springframework.webflow.scope.ViewScope;
 import org.springframework.webflow.security.SecurityRule;
 
-import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
-import net.shibboleth.ext.spring.resource.ConditionalResourceResolver;
-import net.shibboleth.ext.spring.util.AnnotationParameterNameDiscoverer;
 import net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor;
+import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
+import net.shibboleth.shared.spring.resource.ConditionalResourceResolver;
+import net.shibboleth.shared.spring.util.AnnotationParameterNameDiscoverer;
 
 /**
  * Copy of {@link FlowModelFlowBuilder} for setting the property placeholder prefix of <code>%{</code>, and
diff --git a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/MockApplicationContext.java b/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/MockApplicationContext.java
deleted file mode 100644
index 476607e..0000000
--- a/idp-oidc-rp-impl/src/test/java/net/shibboleth/idp/plugin/authn/test/spring/MockApplicationContext.java
+++ /dev/null
@@ -1,482 +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.plugin.authn.test.spring;
-
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.util.Locale;
-import java.util.Map;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.ObjectProvider;
-import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.MessageSourceResolvable;
-import org.springframework.context.NoSuchMessageException;
-import org.springframework.core.ResolvableType;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.io.ProtocolResolver;
-import org.springframework.core.io.Resource;
-import org.springframework.core.metrics.ApplicationStartup;
-
-import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
-
-/**
- * Placeholder, which can be set on test {@link AbstractServiceableComponent}s to stop the
- * "must be null" test firing.
- */
-public class MockApplicationContext implements ConfigurableApplicationContext {
-
-    /** {@inheritDoc} */
-    @Override
-    public String getId() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getApplicationName() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getDisplayName() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public long getStartupDate() {
-        fail();
-        return 0;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public ApplicationContext getParent() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean containsBeanDefinition(final String beanName) {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public int getBeanDefinitionCount() {
-        fail();
-        return 0;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanDefinitionNames() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanNamesForType(final ResolvableType type) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanNamesForType(final ResolvableType type, final boolean includeNonSingletons, final boolean allowEagerInit) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanNamesForType(final Class<?> type) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanNamesForType(final Class<?> type, final boolean includeNonSingletons, final boolean allowEagerInit) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> Map<String, T> getBeansOfType(final Class<T> type) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> Map<String, T> getBeansOfType(final Class<T> type, final boolean includeNonSingletons, final boolean allowEagerInit)
-            throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getBeanNamesForAnnotation(final Class<? extends Annotation> annotationType) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Map<String, Object> getBeansWithAnnotation(final Class<? extends Annotation> annotationType)
-            throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <A extends Annotation> A findAnnotationOnBean(final String beanName, final Class<A> annotationType)
-            throws NoSuchBeanDefinitionException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Object getBean(final String name) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> T getBean(final String name, final Class<T> requiredType) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Object getBean(final String name, final Object... args) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> T getBean(final Class<T> requiredType) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> T getBean(final Class<T> requiredType, final Object... args) throws BeansException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> ObjectProvider<T> getBeanProvider(final Class<T> requiredType) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> ObjectProvider<T> getBeanProvider(final ResolvableType requiredType) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean containsBean(final String name) {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isSingleton(final String name) throws NoSuchBeanDefinitionException {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isPrototype(final String name) throws NoSuchBeanDefinitionException {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isTypeMatch(final String name, final ResolvableType typeToMatch) throws NoSuchBeanDefinitionException {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isTypeMatch(final String name, final Class<?> typeToMatch) throws NoSuchBeanDefinitionException {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Class<?> getType(final String name) throws NoSuchBeanDefinitionException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Class<?> getType(final String name, final boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String[] getAliases(final String name) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public BeanFactory getParentBeanFactory() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean containsLocalBean(final String name) {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getMessage(final String code, final Object[] args, final String defaultMessage, final Locale locale) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getMessage(final String code, final Object[] args, final Locale locale) throws NoSuchMessageException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public String getMessage(final MessageSourceResolvable resolvable, final Locale locale) throws NoSuchMessageException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void publishEvent(final Object event) {
-        fail();        
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Resource[] getResources(final String locationPattern) throws IOException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public Resource getResource(final String location) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public ClassLoader getClassLoader() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void start() {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void stop() {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isRunning() {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setId(final String id) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setParent(final ApplicationContext parent) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setEnvironment(final ConfigurableEnvironment environment) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public ConfigurableEnvironment getEnvironment() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void addBeanFactoryPostProcessor(final BeanFactoryPostProcessor postProcessor) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void addApplicationListener(final ApplicationListener<?> listener) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void addProtocolResolver(final ProtocolResolver resolver) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void refresh() throws BeansException, IllegalStateException {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void registerShutdownHook() {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void close() {
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public boolean isActive() {
-        fail();
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public ConfigurableListableBeanFactory getBeanFactory() throws IllegalStateException {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setClassLoader(final ClassLoader classLoader) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> ObjectProvider<T> getBeanProvider(final Class<T> requiredType, final boolean allowEagerInit) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <T> ObjectProvider<T> getBeanProvider(final ResolvableType requiredType, final boolean allowEagerInit) {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void setApplicationStartup(final ApplicationStartup applicationStartup) {
-        fail();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public ApplicationStartup getApplicationStartup() {
-        fail();
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public <A extends Annotation> A findAnnotationOnBean(final String beanName, final Class<A> annotationType,
-            final boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException {
-        fail();
-        return null;
-    }
-}
diff --git a/idp-oidc-rp-impl/src/test/resources/attribute/filter/attribute-filter-system.xml b/idp-oidc-rp-impl/src/test/resources/attribute/filter/attribute-filter-system.xml
index ae21ec2..4ac158c 100644
--- a/idp-oidc-rp-impl/src/test/resources/attribute/filter/attribute-filter-system.xml
+++ b/idp-oidc-rp-impl/src/test/resources/attribute/filter/attribute-filter-system.xml
@@ -12,7 +12,7 @@
        default-init-method="initialize"
        default-destroy-method="destroy">
        
-        <bean id="shibboleth.AttributeFilterService" class="net.shibboleth.ext.spring.service.ReloadableSpringService"
+        <bean id="shibboleth.AttributeFilterService" class="net.shibboleth.shared.spring.service.ReloadableSpringService"
             depends-on="shibboleth.VelocityEngine"
             p:failFast="%{idp.service.attribute.filter.failFast:%{idp.service.failFast:false}}"
             p:reloadCheckDelay="%{idp.service.attribute.filter.checkInterval:PT0S}"
diff --git a/idp-oidc-rp-impl/src/test/resources/attribute/registry/postconfig.xml b/idp-oidc-rp-impl/src/test/resources/attribute/registry/postconfig.xml
index 12132eb..91d576c 100644
--- a/idp-oidc-rp-impl/src/test/resources/attribute/registry/postconfig.xml
+++ b/idp-oidc-rp-impl/src/test/resources/attribute/registry/postconfig.xml
@@ -14,7 +14,7 @@
     <!-- Test config that pulls together various attribute encoders and registries to allow the flow
     tests to run -->
     
-    <bean id="shibboleth.AttributeRegistryService" class="net.shibboleth.ext.spring.service.ReloadableSpringService" 
+    <bean id="shibboleth.AttributeRegistryService" class="net.shibboleth.shared.spring.service.ReloadableSpringService" 
             p:failFast="false"
             p:reloadCheckDelay="PT0S"
             p:beanPostProcessors-ref="shibboleth.IdentifiableBeanPostProcessor"
diff --git a/idp-oidc-rp-impl/src/test/resources/conf/additional-system-beans.xml b/idp-oidc-rp-impl/src/test/resources/conf/additional-system-beans.xml
index 09628b3..f8f1b48 100644
--- a/idp-oidc-rp-impl/src/test/resources/conf/additional-system-beans.xml
+++ b/idp-oidc-rp-impl/src/test/resources/conf/additional-system-beans.xml
@@ -10,7 +10,7 @@
     default-init-method="initialize" default-destroy-method="destroy">
 
     <!-- from externalBeans.xml -->
-    <bean id="shibboleth.VelocityEngine" class="net.shibboleth.ext.spring.velocity.VelocityEngineFactoryBean">
+    <bean id="shibboleth.VelocityEngine" class="net.shibboleth.shared.spring.velocity.VelocityEngineFactoryBean">
         <property name="velocityProperties">
             <props>
                 <prop key="resource.loaders">classpath, string</prop>
diff --git a/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-postconfig.xml b/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-postconfig.xml
index f8c0157..f35d403 100644
--- a/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-postconfig.xml
+++ b/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-postconfig.xml
@@ -215,13 +215,13 @@
                 <!-- Used by the OP -->
                 <bean id="ClientInformationCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientInformationCredentialResolver"
-                    p:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
-                    p:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
+                    c:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
+                    c:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
                 <!--  Used by the RP -->
                 <bean id="OIDCProviderMetadataCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ProviderMetadataCredentialResolver"
-                    p:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache"
-                    p:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}" />
+                    c:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache"
+                    c:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}" />
                 <bean id="ClientSecretCriterionCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientSecretCriterionCredentialResolver"/>
             </list>
@@ -235,8 +235,8 @@
                 <!-- Used by the OP -->
                 <bean id="ClientInformationCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientInformationCredentialResolver"
-                    p:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
-                    p:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
+                    c:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
+                    c:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
                 <!--  Used by the RP -->
                 <bean id="ClientSecretCriterionCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientSecretCriterionCredentialResolver"/>
@@ -302,13 +302,13 @@
                 <!-- Used by the OP -->
                 <bean id="ClientInformationCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientInformationCredentialResolver"
-                    p:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
-                    p:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
+                    c:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
+                    c:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
                 <!--  Used by the RP -->
                 <bean id="OIDCProviderMetadataCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ProviderMetadataCredentialResolver"
-                    p:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
-                    p:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
+                    c:remoteJwkSetCache-ref="shibboleth.oidc.RemoteJwkSetCache" 
+                    c:keyFetchInterval="%{idp.oidc.provider.keyfetch.interval:PT30M}"/>
                 <bean id="CriterionCredentialResolver"
                     class="net.shibboleth.oidc.security.credential.impl.ClientSecretCriterionCredentialResolver"/>
             </list>
diff --git a/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-system.xml b/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-system.xml
index b334ee7..78855be 100644
--- a/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-system.xml
+++ b/idp-oidc-rp-impl/src/test/resources/conf/test-relying-party-system.xml
@@ -11,11 +11,13 @@
     
      <!-- Parent bean for RelyingParty overrides based on activation by name(s). -->
     <bean id="RelyingPartyByName" abstract="true" parent="RelyingParty"
-        class="net.shibboleth.idp.saml.relyingparty.impl.RelyingPartyConfigurationSupport" factory-method="byName" />
+        class="net.shibboleth.saml.relyingparty.RelyingPartyConfigurationSupport" factory-method="byName" />
 
-    <!-- removed, but I do not know what the default should be in this case
-    p:defaultSecurityConfiguration-ref="%{idp.security.config:shibboleth.DefaultSecurityConfiguration}" -->
-    <bean class="net.shibboleth.idp.relyingparty.impl.DefaultRelyingPartyConfigurationResolver"
+    <bean id="RelyingParty" abstract="true" class="net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration"
+        p:issuer="#{getObject('entityID')}"
+        p:detailedErrorsPredicate="%{idp.errors.detailed:false}" />
+        
+    <bean class="net.shibboleth.profile.relyingparty.impl.DefaultRelyingPartyConfigurationResolver"
         p:unverifiedConfiguration-ref="shibboleth.UnverifiedRelyingParty"
         p:defaultConfiguration-ref="shibboleth.DefaultRelyingParty"
         p:relyingPartyConfigurations-ref="shibboleth.RelyingPartyOverrides"        
@@ -23,9 +25,6 @@
         p:encryptionCredentials="#{getObject('shibboleth.EncryptionCredentials')}" />
 
     <bean id="entityID" class="java.lang.String" c:_0="%{idp.entityID}" />
-    
-    <bean id="RelyingParty" abstract="true" class="net.shibboleth.idp.relyingparty.RelyingPartyConfiguration"
-        p:responderId="#{getObject('entityID')}" p:detailedErrorsPredicate="%{idp.errors.detailed:false}" />
 
     <bean id="shibboleth.UnverifiedRelyingParty" parent="RelyingParty">
         <property name="profileConfigurations">
diff --git a/idp-oidc-rp-impl/src/test/resources/conf/test-relyingparty-resolver-service.xml b/idp-oidc-rp-impl/src/test/resources/conf/test-relyingparty-resolver-service.xml
index 679c4b9..23026f9 100644
--- a/idp-oidc-rp-impl/src/test/resources/conf/test-relyingparty-resolver-service.xml
+++ b/idp-oidc-rp-impl/src/test/resources/conf/test-relyingparty-resolver-service.xml
@@ -10,24 +10,36 @@
     default-init-method="initialize" default-destroy-method="destroy">
 
 
-    <bean id="shibboleth.RelyingPartyResolverService"
-        class="net.shibboleth.ext.spring.service.ReloadableSpringService"
-        p:serviceConfigurations-ref="ExtendedRelyingPartyResolverResources"
-        p:failFast="%{idp.service.relyingparty.failFast:%{idp.service.failFast:false}}"
-        p:reloadCheckDelay="%{idp.service.relyingparty.checkInterval:PT0S}"
-        p:beanPostProcessors-ref="shibboleth.IdentifiableBeanPostProcessor"
-        p:beanFactoryPostProcessors-ref="shibboleth.PropertySourcesPlaceholderConfigurer">
-        <constructor-arg name="claz"
-            value="net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver" />
+        <bean id="shibboleth.RelyingPartyResolverService" class="net.shibboleth.shared.spring.service.ReloadableSpringService" 
+            p:serviceConfigurations-ref="ExtendedRelyingPartyResolverResources"
+            p:failFast="%{idp.service.relyingparty.failFast:%{idp.service.failFast:false}}"
+            p:reloadCheckDelay="%{idp.service.relyingparty.checkInterval:PT0S}"
+            p:beanPostProcessors-ref="shibboleth.IdentifiableBeanPostProcessor"
+            p:beanFactoryPostProcessors-ref="shibboleth.BeanFactoryPostProcessors" >
+        <constructor-arg name="claz" value="net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver" />
         <constructor-arg name="strategy">
-            <bean class="net.shibboleth.ext.spring.service.ClassBasedServiceStrategy"
-                c:serviceableClaz="net.shibboleth.idp.relyingparty.impl.DefaultRelyingPartyConfigurationResolver" />
+            <bean class="net.shibboleth.shared.spring.service.ClassBasedServiceStrategy"
+                c:serviceableClaz="net.shibboleth.profile.relyingparty.impl.DefaultRelyingPartyConfigurationResolver" />
         </constructor-arg>
     </bean>
+    
+        <!-- BeanFactoryPostProcessors to apply. -->
+    <util:list id="shibboleth.BeanFactoryPostProcessors">
+        <ref bean="shibboleth.RelocatedBeanFactoryPostProcessor" />
+    </util:list>
+    
+     <bean id="shibboleth.RelocatedBeanFactoryPostProcessor"
+        class="net.shibboleth.shared.spring.config.RelocatedBeanFactoryPostProcessor"
+        p:classes-ref="shibboleth.RelocatedClassMap"/>
+
+    <util:map id="shibboleth.RelocatedClassMap">
+    
+    </util:map>
+
 
     <!-- Auto-append system config file to resource set. -->
     <bean id="ExtendedRelyingPartyResolverResources"
-        class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
+        class="net.shibboleth.shared.spring.factory.CombiningListFactoryBean"
         p:firstList-ref="#{'%{idp.service.relyingparty.resources:shibboleth.RelyingPartyResolverResources}'.trim()}">
         <property name="secondList">
             <util:list>
@@ -36,10 +48,6 @@
         </property>
     </bean>
 
-    <bean id="shibboleth.RelyingPartyConfigurationResolver"
-        class="net.shibboleth.idp.relyingparty.impl.ReloadingRelyingPartyConfigurationResolver"
-        c:resolverService-ref="shibboleth.RelyingPartyResolverService" />
-
     <util:list id="shibboleth.RelyingPartyResolverResources">
         <!-- <value>%{idp.home}/conf/relying-party.xml</value> <value>%{idp.home}/conf/credentials.xml</value> -->
     </util:list>
diff --git a/pom.xml b/pom.xml
index 328602b..5f6f4ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,33 +5,28 @@
     <parent>
         <groupId>net.shibboleth</groupId>
         <artifactId>parent</artifactId>
-        <version>11.3.5</version>
+        <version>17.0.0-SNAPSHOT</version>
     </parent>
     <groupId>net.shibboleth.idp.plugin.authn</groupId>
     <artifactId>idp-plugin-oidc-rp-parent</artifactId>
-    <version>1.1.1-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <name>Shibboleth IdP :: Plugins :: OpenID Connect Relying Party Login Flow</name>
     <packaging>pom</packaging>
     <description>Java OIDC ReylingParty Proxy authentication plugin for the Shibboleth IdP.</description>
 
     <properties>
         <idp.groupId>net.shibboleth.idp</idp.groupId>
-        <idp.version>4.3.0</idp.version>
+        <idp.version>5.0.0-SNAPSHOT</idp.version>
         <opensaml.groupId>org.opensaml</opensaml.groupId>
-        <opensaml.version>4.3.0</opensaml.version>
-        <java-support.version>8.4.0</java-support.version>
-        <spring-extensions.version>6.3.0</spring-extensions.version>  
-        <oidc.common.version>2.2.0</oidc.common.version>
-        <idp.oidc.config.version>1.0.0</idp.oidc.config.version>
+        <opensaml.version>5.0.0-SNAPSHOT</opensaml.version>
+        <oidc.common.version>3.0.0-SNAPSHOT</oidc.common.version>
+        <idp.oidc.config.version>2.0.0-SNAPSHOT</idp.oidc.config.version>
         <okhttp3.mockserver.version>4.9.3</okhttp3.mockserver.version>
+        <shib.shared.testing.version>9.0.0-SNAPSHOT</shib.shared.testing.version>
         <okhttp3.tls.version>4.9.3</okhttp3.tls.version>
         <idp.oidc.groupId>net.shibboleth.oidc</idp.oidc.groupId>
+        <shib-shared.groupId>net.shibboleth</shib-shared.groupId>
         <checkstyle.configLocation>${project.basedir}/checkstyle.xml</checkstyle.configLocation>
-    	<!-- 
-    	   REMOVE this enforcer-data override once the parent is up to date with an enforcer-data that contains 
-    	   net.shibboleth.idp.plugin.config.oidc. See https://shibboleth.atlassian.net/browse/JMVN-52
-        -->
-    	<maven-dist-enforcer-data.version>1.0.13</maven-dist-enforcer-data.version>
     </properties>
 
     <distributionManagement>
@@ -41,23 +36,6 @@
         </site>
     </distributionManagement>
 
-    <repositories>
-        <repository>
-            <id>shib-release</id>
-            <url>https://build.shibboleth.net/nexus/content/groups/public</url>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-        <repository>
-            <id>shib-snapshot</id>
-            <url>https://build.shibboleth.net/nexus/content/repositories/snapshots</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-        </repository>
-    </repositories>
-
     <modules>
         <module>idp-oidc-rp-impl</module>
         <module>idp-oidc-rp-api</module>
@@ -121,6 +99,14 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <!-- Shibboleth shared BOM -->
+            <dependency>
+                <groupId>${shib-shared.groupId}</groupId>
+                <artifactId>shib-shared-bom</artifactId>
+                <version>${shib.shared.testing.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <!-- Shibboleth IdP BOM for importing IdP dependencies -->
             <dependency>
                 <groupId>${idp.groupId}</groupId>
@@ -128,15 +114,15 @@
                 <version>${idp.version}</version>
                 <type>pom</type>
                 <scope>import</scope>
-            </dependency>
-            <!-- Provided shibboleth support dependencies -->
-            <dependency>
-                <groupId>net.shibboleth.utilities</groupId>
-                <artifactId>java-support</artifactId>
-                <version>${java-support.version}</version>
-                <scope>provided</scope>
-            </dependency>         
+            </dependency>       
             <!-- Test bom dependencies -->
+            <dependency>
+                <groupId>${shib-shared.groupId}</groupId>
+                <artifactId>shib-testing</artifactId>
+                <version>${shib.shared.testing.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <dependency>
                 <groupId>${idp.groupId}</groupId>
                 <artifactId>idp-tests-bom</artifactId>

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


More information about the commits mailing list