[java-oidc-common] 01/02: Bump version to 3.0.0-SNAPSHOT and port to V5 codebase

Henri Mikkonen henri.mikkonen at iki.fi
Tue Jun 20 11:38:41 UTC 2023


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

hjmikkon pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=35b85447edaf28cdb3aa3aa0004cda5b48320ddd

commit 35b85447edaf28cdb3aa3aa0004cda5b48320ddd
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Tue Jun 20 14:20:13 2023 +0300

    Bump version to 3.0.0-SNAPSHOT and port to V5 codebase
    
    - plugin.version to 3.0.0 and module ID to idp.oidc.common.4
    - net.shibboleth.utilities.java.support -> net.shibboleth.shared
    - net.shibboleth.ext.spring -> net.shibboleth.shared.spring
    - HttpClient now uses V5
      - Existing unit tests pass now, real functionality to be verified
    - Stopped using ComponentSupport and use corresponding methods from parent class
      - The two credential resolvers still point to ComponentSupport
    - Removed deprecated classes
      - OIDCSSORelyingPartyConfiguration
      - DataEncryptionAlgorithmsLookupFunction
      - KeyTransportEncryptionAlgorithmsLookupFunction
      - RequestObjectDecryptionConfigurationLookupFunction
      - RequestObjectSignatureValidationConfigurationLookupFunction
      - SignatureAlgorithmsLookupFunction
      - TokenEndpointJwtSignatureValidationConfigurationLookupFunction
---
 oidc-common-attribute-api/pom.xml                  |   8 +-
 .../AbstractOIDCAttributeTranscoder.java           |   2 +-
 .../transcoding/OIDCAttributeTranscoder.java       |   2 +-
 oidc-common-attribute-impl/pom.xml                 |  46 +++----
 .../enc/impl/AttributeEncoderNamespaceHandler.java |   4 +-
 .../enc/impl/BaseOIDCAttributeEncoderParser.java   |   2 +-
 .../enc/impl/OIDCScopedStringEncoderParser.java    |   2 +-
 .../spring/enc/impl/OIDCStringEncoderParser.java   |   2 +-
 .../impl/OIDCByteAttributeTranscoder.java          |   6 +-
 .../impl/OIDCScopedStringAttributeTranscoder.java  |   4 +-
 .../impl/OIDCStringAttributeTranscoder.java        |   8 +-
 .../impl/OIDCByteAttributeTranscoderTest.java      |   8 +-
 .../OIDCScopedStringAttributeTranscoderTest.java   |   4 +-
 .../impl/OIDCStringAttributeTranscoderTest.java    |   4 +-
 oidc-common-bom/pom.xml                            |   2 +-
 oidc-common-crypto-api/pom.xml                     |  17 ++-
 .../descriptors/EncryptionA128CBCHS256.java        |   2 +-
 .../algorithm/descriptors/EncryptionA128GCM.java   |   2 +-
 .../descriptors/EncryptionA192CBCHS384.java        |   2 +-
 .../algorithm/descriptors/EncryptionA192GCM.java   |   2 +-
 .../descriptors/EncryptionA256CBCHS512.java        |   2 +-
 .../algorithm/descriptors/EncryptionA256GCM.java   |   2 +-
 .../algorithm/descriptors/KeyAgreementECDHES.java  |   2 +-
 .../descriptors/KeyAgreementECDHESA128KW.java      |   2 +-
 .../descriptors/KeyAgreementECDHESA192KW.java      |   2 +-
 .../descriptors/KeyAgreementECDHESA256KW.java      |   2 +-
 .../algorithm/descriptors/KeyTransportRSA15.java   |   2 +-
 .../algorithm/descriptors/KeyTransportRSAOAEP.java |   2 +-
 .../descriptors/KeyTransportRSAOAEP256.java        |   2 +-
 .../descriptors/KeyTransportRSAOAEP384.java        |   2 +-
 .../descriptors/KeyTransportRSAOAEP512.java        |   2 +-
 .../descriptors/SymmetricKeyWrapA128GCMKW.java     |   4 +-
 .../descriptors/SymmetricKeyWrapA128KW.java        |   4 +-
 .../descriptors/SymmetricKeyWrapA192GCMKW.java     |   4 +-
 .../descriptors/SymmetricKeyWrapA192KW.java        |   4 +-
 .../descriptors/SymmetricKeyWrapA256GCMKW.java     |   4 +-
 .../descriptors/SymmetricKeyWrapA256KW.java        |   4 +-
 .../net/shibboleth/oidc/jwk/RemoteJwkSetCache.java |  28 ++---
 .../oidc/jwk/support/RemoteJwkUtils.java           |  28 +++--
 .../oidc/jwt/claims/AbstractClaimsValidator.java   |   7 +-
 .../oidc/jwt/claims/ClaimsValidator.java           |   2 +-
 .../shibboleth/oidc/security/JWSAssemblyUtils.java |   4 +-
 .../BasicClientSecretCredentialFactoryBean.java    |   6 +-
 .../credential/BasicExpiringJWKCredential.java     |   2 +-
 ...piringJWTSharedSecretCredentialFactoryBean.java |   8 +-
 .../credential/BasicJWKCredentialFactoryBean.java  |   6 +-
 .../credential/ClientSecretCredential.java         |   2 +-
 .../credential/DefaultClientSecretCredential.java  |   6 +-
 .../security/credential/JWACredentialSupport.java  |   2 +-
 .../oidc/security/jose/DecryptionParameters.java   |   2 +-
 .../jose/DecryptionParametersResolver.java         |   4 +-
 .../security/jose/EncryptionConfiguration.java     |   6 +-
 .../jose/EncryptionParametersResolver.java         |   4 +-
 .../jose/SignatureSigningConfiguration.java        |   6 +-
 .../jose/SignatureSigningParametersResolver.java   |   4 +-
 .../SignatureValidationParametersResolver.java     |   4 +-
 .../jose/criterion/ClientInformationCriterion.java |   4 +-
 .../criterion/ClientSecretCredentialCriterion.java |   4 +-
 .../DecryptionConfigurationCriterion.java          |  12 +-
 .../EncryptionConfigurationCriterion.java          |  12 +-
 .../jose/criterion/JOSEObjectCriterion.java        |   2 +-
 .../security/jose/criterion/JWKSetCriterion.java   |   2 +-
 .../security/jose/criterion/KeyIdCriterion.java    |   6 +-
 .../jose/criterion/ProviderMetadataCriterion.java  |   4 +-
 .../SignatureSigningConfigurationCriterion.java    |  12 +-
 .../SignatureValidationConfigurationCriterion.java |  12 +-
 .../SignatureValidationParametersCriterion.java    |   5 +-
 .../shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java |  24 ++--
 oidc-common-crypto-impl/pom.xml                    |  35 +++++-
 .../impl/BasicJOSEObjectCredentialResolver.java    |   6 +-
 .../impl/ClientInformationCredentialResolver.java  |  18 +--
 .../ClientSecretCriterionCredentialResolver.java   |   6 +-
 .../CollectionJOSEObjectCredentialResolver.java    |  10 +-
 .../impl/DataEncryptionAlgorithmCriterion.java     |   8 +-
 .../impl/EvaluableKeyIDCredentialCriterion.java    |   6 +-
 .../EvaluableMACKeyLengthCredentialCriterion.java  |   6 +-
 .../impl/KeyManagmentAlgorithmCriterion.java       |   6 +-
 .../impl/LocalJOSEObjectCredentialResolver.java    |  12 +-
 .../impl/ProviderMetadataCredentialResolver.java   |  18 +--
 ...nAllCollectionJOSEObjectCredentialResolver.java |   8 +-
 ...AbstractEncryptionAlgorithmsLookupStrategy.java |   2 +-
 .../impl/BaseJWTSignatureSecurityHandler.java      |  17 ++-
 .../security/impl/BaseSignedJWTTrustEngine.java    |   6 +-
 .../CheckClientJWTDecryptionConfiguration.java     |  21 ++--
 .../CheckClientJWTSignatureAlgorithmHandler.java   |  17 ++-
 .../impl/ClientInformationJWTTrustEngine.java      |   8 +-
 .../shibboleth/oidc/security/impl/DecryptJWE.java  |  15 ++-
 .../oidc/security/impl/EncryptJWTHandler.java      |  25 ++--
 .../impl/ExplicitKeySignedJWTTrustEngine.java      |   9 +-
 .../oidc/security/impl/JWETokenDecrypter.java      |  10 +-
 .../impl/JWTMessageSignatureSecurityHandler.java   |   9 +-
 .../security/impl/JWTSignatureValidationUtil.java  |  61 ----------
 .../oidc/security/impl/SignJWTHandler.java         |  31 +++--
 .../jose/impl/BasicEncryptionConfiguration.java    |   8 +-
 .../impl/BasicSignatureSigningConfiguration.java   |   8 +-
 .../BasicSignatureSigningParametersResolver.java   |  10 +-
 ...BasicSignatureValidationParametersResolver.java |   7 +-
 ...tionDataEncryptionAlgorithmsLookupStrategy.java |   6 +-
 ...ransportEncryptionAlgorithmsLookupStrategy.java |   6 +-
 ...ormationSignatureSigningParametersResolver.java |   8 +-
 ...aultDataEncryptionAlgorithmsLookupStrategy.java |   4 +-
 .../impl/DefaultDecryptionParametersResolver.java  |   6 +-
 .../impl/DefaultEncryptionParametersResolver.java  |  17 +--
 ...ransportEncryptionAlgorithmsLookupStrategy.java |   4 +-
 ...dataDataEncryptionAlgorithmsLookupStrategy.java |   6 +-
 ...ransportEncryptionAlgorithmsLookupStrategy.java |   6 +-
 .../RelyingPartySigningParametersResolver.java     |   6 +-
 .../jwt/claims/impl/ACRClaimsValidator.java        |  13 +-
 .../jwt/claims/impl/AccessTokenHashValidator.java  |  17 ++-
 .../jwt/claims/impl/AudienceClaimsValidator.java   |  21 ++--
 .../impl/AuthTimeRequestedActivationCondition.java |   4 +-
 .../AuthenticationAudienceClaimsValidator.java     |  25 ++--
 .../impl/AuthenticationTimeClaimsValidator.java    |  21 ++--
 .../claims/impl/ChainingJWTClaimsValidator.java    |  15 ++-
 .../impl/ClaimExistsActivationCondition.java       |   6 +-
 .../jwt/claims/impl/ExactMatchClaimsValidator.java |  15 ++-
 .../jwt/claims/impl/ExpiryClaimsValidator.java     |   7 +-
 .../jwt/claims/impl/FunctionClaimsValidator.java   |   5 +-
 .../security/jwt/claims/impl/IDTokenClaims.java    |   6 +-
 .../jwt/claims/impl/IssuedAtClaimsValidator.java   |  11 +-
 .../oidc/security/jwt/claims/impl/JWTClaims.java   |   6 +-
 .../claims/impl/JWTIdentifierClaimsValidator.java  |  13 +-
 .../impl/JWTIdentifierRevocationValidator.java     |  15 ++-
 .../jwt/claims/impl/NotBeforeClaimsValidator.java  |   7 +-
 .../NumberOfClaimValuesActivationCondition.java    |   6 +-
 .../jwt/claims/impl/ProhibitedClaimsValidator.java |   9 +-
 .../RequestedEssentialACRClaimsLookupStrategy.java |   4 +-
 .../jwt/claims/impl/RequiredClaimsValidator.java   |   9 +-
 .../impl/BaseMetadataCredentialResolverTest.java   |  22 ++--
 .../ClientInformationCredentialResolverTest.java   |   4 +-
 ...lientSecretCriterionCredentialResolverTest.java |  10 +-
 ...CollectionJOSEObjectCredentialResolverTest.java |   6 +-
 ...aluableMACKeyLengthCredentialCriterionTest.java |   2 +-
 .../LocalJOSEObjectCredentialResolverTest.java     |   4 +-
 .../ProviderMetadataCredentialResolverTest.java    |   4 +-
 .../CheckClientJWTDecryptionConfigurationTest.java |   2 +-
 .../impl/ClientInformationJWTTrustEngineTest.java  |   4 +-
 .../impl/ExplicitKeySignedJWTTrustEngineTest.java  |   7 +-
 .../oidc/security/impl/JWETokenDecrypterTest.java  |   8 +-
 .../impl/JWTSignatureValidationUtilTest.java       | 106 ----------------
 .../impl/MockEmptyListCredentialResolver.java      |   4 +-
 .../impl/MockFunctionalCredentialResolver.java     |   4 +-
 ...DataEncryptionAlgorithmsLookupStrategyTest.java |   2 +-
 ...portEncryptionAlgorithmsLookupStrategyTest.java |   2 +-
 ...asicSignatureSigningParametersResolverTest.java |   2 +-
 ...tionSignatureSigningParametersResolverTest.java |   2 +-
 ...DataEncryptionAlgorithmsLookupStrategyTest.java |   2 +-
 .../DefaultEncryptionParametersResolverTest.java   |   4 +-
 ...portEncryptionAlgorithmsLookupStrategyTest.java |   2 +-
 .../RelyingPartySigningParametersResolverTest.java |  13 +-
 .../jwt/claims/impl/ACRClaimsValidatorTest.java    |   2 +-
 .../claims/impl/AbstractClaimsValidatorTest.java   |   2 +-
 .../claims/impl/AccessTokenHashValidatorTest.java  |   2 +-
 .../claims/impl/AudienceClaimsValidatorTest.java   |   2 +-
 .../AuthTimeRequestedActivationConditionTest.java  |   2 +-
 .../AuthenticationAudienceClaimsValidatorTest.java |   2 +-
 .../AuthenticationTimeClaimsValidatorTest.java     |   2 +-
 .../impl/ChainingJWTClaimsValidatorTest.java       |   2 +-
 .../claims/impl/ExactMatchClaimsValidatorTest.java |   4 +-
 .../jwt/claims/impl/ExpiryClaimsValidatorTest.java |   2 +-
 .../claims/impl/IssuedAtClaimsValidatorTest.java   |   2 +-
 .../impl/JWTIdentifierClaimsValidatorTest.java     |   6 +-
 .../claims/impl/NotBeforeClaimsValidatorTest.java  |   2 +-
 .../claims/impl/ProhibitedClaimsValidatorTest.java |   2 +-
 ...uestedEssentialACRClaimsLookupStrategyTest.java |   2 +-
 .../claims/impl/RequiredClaimsValidatorTest.java   |   2 +-
 oidc-common-dist/pom.xml                           |   2 +-
 oidc-common-metadata-api/pom.xml                   |  16 ++-
 .../AbstractEvaluableMetadataCriterion.java        |   4 +-
 .../oidc/metadata/ClientInformationResolver.java   |   6 +-
 .../oidc/metadata/ClientSecretValueResolver.java   |   6 +-
 .../oidc/metadata/DynamicBackingStore.java         |   6 +-
 .../oidc/metadata/JSONMetadataResolver.java        |   6 +-
 .../oidc/metadata/MapBasedMetadataResolver.java    |   6 +-
 .../oidc/metadata/MetadataManagementData.java      |   2 +-
 .../oidc/metadata/OIDCMetadataResolver.java        |   6 +-
 .../ProviderMetadataProviderContainer.java         |  15 ++-
 .../oidc/metadata/ProviderMetadataResolver.java    |   6 +-
 .../RefreshableClientInformationResolver.java      |   2 +-
 .../RefreshableProviderMetadataResolver.java       |   2 +-
 .../RelyingPartyClientInformationProvider.java     |  19 ++-
 .../oidc/metadata/cache/ExpirationTimeContext.java |   2 +-
 .../oidc/metadata/cache/MetadataCache.java         |   6 +-
 .../oidc/metadata/criterion/ClientIDCriterion.java |   6 +-
 .../criterion/ClientSecretReferenceCriterion.java  |   6 +-
 .../oidc/metadata/criterion/IssuerIDCriterion.java |   6 +-
 .../criterion/ResourceLocationCriterion.java       |   4 +-
 .../metadata/filter/MetadataFilterContext.java     |   3 +-
 .../metadata/policy/MetadataPolicyResolver.java    |   6 +-
 oidc-common-metadata-impl/pom.xml                  |  90 +++++++-------
 .../metadata/cache/impl/AbstractMetadataCache.java |  45 ++++---
 .../cache/impl/BaseMetadataCacheBuilderSpec.java   |  10 +-
 .../metadata/cache/impl/BatchMetadataCache.java    |  41 ++++---
 .../cache/impl/BatchMetadataCacheBuilderSpec.java  |   4 +-
 .../cache/impl/DefaultFileLoadingStrategy.java     |   2 +-
 .../cache/impl/DefaultJSONMapParsingStrategy.java  |   2 +-
 ...oviderMetadataCriteriaToIdentifierStrategy.java |   2 +-
 ...efaultSourceMetadataExpirationTimeStrategy.java |   2 +-
 .../metadata/cache/impl/DynamicMetadataCache.java  |  47 ++++----
 .../impl/DynamicMetadataCacheBuilderSpec.java      |   4 +-
 .../cache/impl/FetchThroughMetadataCache.java      |  19 ++-
 .../impl/FetchThroughMetadataCacheBuilderSpec.java |   4 +-
 .../metadata/cache/impl/MetadataCacheBuilder.java  |   2 +-
 .../impl/MetadataPolicyLookupStrategyFactory.java  |   8 +-
 .../impl/AbstractClientSecretValueResolver.java    |   2 +-
 .../impl/AbstractDynamicHTTPFetchingStrategy.java  |  57 +++++----
 .../impl/AbstractFileOIDCEntityResolver.java       |   9 +-
 .../metadata/impl/AbstractOIDCEntityResolver.java  |  18 ++-
 .../impl/AbstractOIDCMetadataResolver.java         |  41 ++++---
 .../impl/AbstractReloadingOIDCEntityResolver.java  |  17 ++-
 ...seStorageServiceClientInformationComponent.java |  13 +-
 .../impl/ChainingClientInformationResolver.java    |  23 ++--
 .../impl/ChainingProviderMetadataResolver.java     |  23 ++--
 .../impl/ClientInformationNodeProcessor.java       |  10 +-
 .../metadata/impl/DefaultDynamicBackingStore.java  |   8 +-
 .../impl/FilesystemClientInformationResolver.java  |  11 +-
 .../impl/FilesystemProviderMetadataResolver.java   |  15 ++-
 .../HTTPProviderConfigurationFetchingStrategy.java |  47 ++++----
 .../metadata/impl/JSONMapMetadataResolver.java     |   2 +-
 .../impl/OIDCMapBasedMetadataResolver.java         |   2 +-
 .../impl/OIDCProviderMetadataResolver.java         |   2 +-
 .../impl/PropertiesClientSecretValueResolver.java  |  21 ++--
 .../impl/ReloadingProviderMetadataProvider.java    |  61 ++++------
 ...adingRelyingPartyClientInformationProvider.java |  59 ++++-----
 .../oidc/metadata/impl/ResolverHelper.java         |   2 +-
 .../ResolverServiceClientSecretValueResolver.java  |  23 ++--
 .../StorageServiceClientInformationResolver.java   |  11 +-
 .../ext/impl/provider/ClientSecretProvider.java    |   6 +-
 .../provider/ClientSecretReferenceProvider.java    |  10 +-
 .../ext/impl/provider/InlineJwksProvider.java      |  10 +-
 .../ext/impl/provider/JWKSReferenceProvider.java   |   6 +-
 .../policy/impl/DefaultMetadataPolicyEnforcer.java |   4 +-
 .../impl/DefaultMetadataPolicyResponseHandler.java |  27 ++---
 .../impl/DefaultMetadataPolicyValidator.java       |   2 +-
 .../metadata/policy/impl/MetadataPolicyHelper.java |   2 +-
 .../MetadataPolicyViaLocationFetchingStrategy.java |  19 ++-
 .../policy/impl/OIDCMetadataPolicyResolver.java    |   2 +-
 .../filter/impl/ClientInformationParser.java       |   2 +-
 .../ClientInformationResolverServiceStrategy.java  |  19 +--
 .../metadata/impl/MetadataNamespaceHandler.java    |   4 +-
 .../ProviderMetadataResolverServiceStrategy.java   |  19 ++-
 .../cache/impl/BatchMetadataCacheTest.java         |   5 +-
 .../cache/impl/DynamicMetadataCacheTest.java       |   4 +-
 .../cache/impl/FetchThroughMetadataCacheTest.java  |   2 +-
 .../cache/impl/MetadataCacheBuilderTest.java       |   2 +-
 .../MetadataPolicyLookupStrategyFactoryTest.java   |   4 +-
 .../impl/BaseClientSecretValueResolverTest.java    |  10 +-
 .../impl/ChainingProviderMetadataResolverTest.java |   6 +-
 .../impl/ClientInformationNodeProcessorTest.java   |  20 ++--
 .../impl/DefaultFileLoadingStrategyTest.java       |   4 +-
 .../FilesystemClientInformationResolverTest.java   |   4 +-
 ...PProviderConfigurationFetchingStrategyTest.java |  90 +++++---------
 .../metadata/impl/OIDCMapMetadataResolverTest.java |   6 +-
 .../impl/OIDCProviderMetadataResolverTest.java     |  42 +++----
 .../PropertiesClientSecretValueResolverTest.java   |   8 +-
 ...solverServiceClientSecretValueResolverTest.java |  20 ++--
 ...StorageServiceClientInformationManagerTest.java |   2 +-
 .../impl/DefaultMetadataPolicyEnforcerTest.java    |   2 +-
 .../policy/impl/MetadataPolicyHelperTest.java      |   2 +-
 .../impl/OIDCMetadataPolicyResolverTest.java       |   4 +-
 ...loadClientResolverServiceConfigurationTest.java |  44 ++++---
 ...erMetadataResolverServiceConfigurationTest.java |  43 ++++---
 .../net/shibboleth/oidc/metadata/impl/service.xml  |   6 +-
 oidc-common-plugin/pom.xml                         |   2 +-
 .../shibboleth/oidc/common/OIDCCommonModule.java   |   2 +-
 .../shibboleth/oidc/common/OIDCCommonPlugin.java   |   4 +-
 .../net/shibboleth/oidc/common/module.properties   |  10 +-
 .../net/shibboleth/oidc/common/plugin.properties   |   2 +-
 oidc-common-profile-api/pom.xml                    |  19 +--
 ...thenticationContextClassReferencePrincipal.java |   9 +-
 .../shibboleth/oidc/profile/audit/AuditFields.java |   6 +-
 .../profile/config/JSONSecurityConfiguration.java  |   5 +-
 .../OIDCAuthenticationProfileConfiguration.java    |   2 +-
 ...enticationRelyingPartyProfileConfiguration.java |   2 +-
 .../config/OIDCAuthorizationConfiguration.java     |   8 +-
 .../OIDCDynamicRegistrationConfiguration.java      |   4 +-
 .../OIDCIDTokenProducingProfileConfiguration.java  |   6 +-
 .../OIDCProviderInformationConfiguration.java      |   2 +-
 .../config/OIDCSSOProfileConfiguration.java        |   2 +-
 .../config/OIDCSSOProviderConfiguration.java       |   2 +-
 .../config/OIDCSSORelyingPartyConfiguration.java   |   2 +-
 .../profile/config/OIDCSecurityConfiguration.java  | 133 ---------------------
 .../profile/config/OIDCUserInfoConfiguration.java  |   8 +-
 .../config/logic/AllowPKCEPlainPredicate.java      |   6 +-
 .../AttributeConsentFlowEnabledPredicate.java      |   2 +-
 .../AuthorizationCodeFlowEnabledPredicate.java     |   6 +-
 .../config/logic/EncodeConsentPredicate.java       |   6 +-
 .../logic/EncryptRequestObjectPredicate.java       |   6 +-
 .../config/logic/EncryptionOptionalPredicate.java  |   6 +-
 .../EnforceRefreshTokenRotationPredicate.java      |   6 +-
 .../profile/config/logic/ForcePKCEPredicate.java   |   6 +-
 .../config/logic/HybridFlowEnabledPredicate.java   |   6 +-
 .../config/logic/ImplicitFlowEnabledPredicate.java |   6 +-
 ...udeIssuerInAuthenticationResponsePredicate.java |   6 +-
 .../IssueIdTokenViaRefreshTokenPredicate.java      |   6 +-
 .../logic/RefreshTokensEnabledPredicate.java       |   6 +-
 .../config/logic/SignRequestObjectPredicate.java   |   6 +-
 .../config/logic/UseRequestObjectPredicate.java    |   6 +-
 ...laimsSetManipulationStrategyLookupFunction.java |   6 +-
 .../AccessTokenLifetimeLookupFunction.java         |   6 +-
 .../navigate/AccessTokenTypeLookupFunction.java    |   6 +-
 .../AcrClaimAlwaysEssentialLookupFunction.java     |   6 +-
 .../AlwaysIncludedAttributesLookupFunction.java    |   6 +-
 .../AudienceRestrictionsLookupFunction.java        |  12 +-
 ...laimsSetManipulationStrategyLookupFunction.java |   6 +-
 .../navigate/AuthzCodeLifetimeLookupFunction.java  |   6 +-
 .../navigate/ClaimsValidatorLookupFunction.java    |   6 +-
 ...ClientInformationStringValueLookupFunction.java |   4 +-
 .../DataEncryptionAlgorithmsLookupFunction.java    |  59 ---------
 .../DeniedUserInfoAttributesLookupFunction.java    |   6 +-
 .../navigate/EncodedAttributesLookupFunction.java  |   6 +-
 .../config/navigate/GrantTypesLookupFunction.java  |   6 +-
 .../navigate/IDTokenLifetimeLookupFunction.java    |   6 +-
 .../IDTokenManipulationStrategyLookupFunction.java |   6 +-
 .../IssuedClaimsValidatorLookupFunction.java       |   6 +-
 .../JWEDataEncryptionAlgorithmsLookupFunction.java |   6 +-
 ...ransportEncryptionAlgorithmsLookupFunction.java |   6 +-
 .../JWKCredentialsToPublishLookupStrategy.java     |   4 +-
 .../JWSSignatureAlgorithmsLookupFunction.java      |   6 +-
 .../JWTDecryptionConfigurationLookupFunction.java  |  16 ++-
 .../JWTEncryptionConfigurationLookupFunction.java  |  15 ++-
 ...ignatureSigningConfigurationLookupFunction.java |  15 ++-
 ...atureValidationConfigurationLookupFunction.java |  16 ++-
 ...ransportEncryptionAlgorithmsLookupFunction.java |  59 ---------
 .../MessageContextLookupFunctionAdaptor.java       |   2 +-
 ...ProviderMetadataStringValuesLookupFunction.java |   4 +-
 ...nticationContextClassRequestLookupFunction.java |   2 +-
 ...ticationContextClassResponseLookupFunction.java |   6 +-
 .../RefreshTokenChainLifetimeLookupFunction.java   |   6 +-
 ...laimsSetManipulationStrategyLookupFunction.java |   6 +-
 .../RefreshTokenLifetimeLookupFunction.java        |   6 +-
 .../RefreshTokenTimeoutLookupFunction.java         |   6 +-
 .../RegistrationMetadataPolicyLookupFunction.java  |   6 +-
 .../RegistrationValidityPeriodLookupFunction.java  |   6 +-
 ...bjectDecryptionConfigurationLookupFunction.java |  92 --------------
 ...atureValidationConfigurationLookupFunction.java |  93 --------------
 ...edRegistrationMetadataPolicyLookupFunction.java |   6 +-
 .../navigate/RevocationLifetimeLookupFunction.java |   6 +-
 .../navigate/RevocationMethodLookupFunction.java   |   6 +-
 .../SecretExpirationPeriodLookupFunction.java      |   6 +-
 .../SignatureAlgorithmsLookupFunction.java         |  59 ---------
 .../TokenEndpointAuthMethodLookupFunction.java     |   6 +-
 ...atureValidationConfigurationLookupFunction.java |  92 --------------
 .../profile/core/OAuthAuthorizationRequest.java    |   2 +-
 .../profile/core/OIDCAuthenticationRequest.java    |   6 +-
 .../shibboleth/oidc/profile/core/OidcError.java    |   2 +-
 .../shibboleth/oidc/profile/core/OidcEventIds.java |   2 +-
 .../oidc/profile/messaging/JSONErrorResponse.java  |   2 +-
 .../profile/messaging/JSONSuccessResponse.java     |   2 +-
 .../context/AbstractOIDCEntityContext.java         |   4 +-
 ...h2AccessTokenProducingProfileConfiguration.java |   4 +-
 ...orizationCodeProducingProfileConfiguration.java |   2 +-
 .../OAuth2AuthorizationProfileConfiguration.java   |   8 +-
 ...entAuthenticableClientProfileConfiguration.java |   2 +-
 ...th2ClientAuthenticableProfileConfiguration.java |   6 +-
 .../oauth2/config/OAuth2ProfileConfiguration.java  |   2 +-
 ...2RefreshTokenProducingProfileConfiguration.java |   2 +-
 .../config/OAuth2TokenAudienceConfiguration.java   |   6 +-
 .../oauth2/config/OAuth2TokenConfiguration.java    |   8 +-
 .../OAuth2TokenIntrospectionConfiguration.java     |   2 +-
 .../config/OAuth2TokenRevocationConfiguration.java |   4 +-
 .../OAuth2TokenValidatingProfileConfiguration.java |   2 +-
 .../config/OIDCSecurityConfigurationTest.java      |  57 ---------
 oidc-common-profile-impl/pom.xml                   |  43 +++++--
 ...bstractAuthenticationRequestAuditExtractor.java |   2 +-
 ...stractAuthenticationResponseAuditExtractor.java |   2 +-
 .../impl/AbstractClaimsSetAuditExtractor.java      |  19 ++-
 .../audit/impl/ClaimSetFromJWTLookupStrategy.java  |   4 +-
 .../impl/DateBasedJWTClaimAuditExtractor.java      |   7 +-
 .../config/impl/AbstractOIDCSSOConfiguration.java  |  18 +--
 .../DefaultOIDCAuthorizationConfiguration.java     |  16 +--
 ...efaultOIDCDynamicRegistrationConfiguration.java |   8 +-
 ...efaultOIDCProviderInformationConfiguration.java |   8 +-
 .../DefaultOIDCPublishKeySetConfiguration.java     |   4 +-
 .../impl/DefaultOIDCUserInfoConfiguration.java     |  12 +-
 .../impl/HTTPPostAuthnResponseDecoder.java         |   6 +-
 .../impl/HTTPRedirectAuthnResponseDecoder.java     |   6 +-
 .../encoding/impl/AbstractOIDCMessageEncoder.java  |   9 +-
 .../encoding/impl/HTTPPostAuthnRequestEncoder.java |  21 ++--
 .../impl/HTTPRedirectAuthnRequestEncoder.java      |   6 +-
 .../encoding/impl/OIDCResponseEncoderFactory.java  |   8 +-
 .../encoding/impl/SimpleNimbusResponseEncoder.java |   7 +-
 .../impl/AbstractBuildErrorResponseFromEvent.java  |   7 +-
 ...AuthenticationRequestMessageEncoderFactory.java |  10 +-
 .../impl/FormOutboundKeySetResponseMessage.java    |  13 +-
 .../impl/PopulateJWTDecryptionParameters.java      |  23 ++--
 .../impl/PopulateJWTEncryptionParameters.java      |  41 ++++---
 .../PopulateJWTSignatureSigningParameters.java     |  23 ++--
 ...pulateJWTSignatureSigningParametersHandler.java |  31 +++--
 .../PopulateJWTSignatureValidationParameters.java  |  15 ++-
 ...ateJWTSignatureValidationParametersHandler.java |  17 ++-
 ...entIDFromOIDCMetadataContextLookupFunction.java |   2 +-
 ...mOIDCProviderMetadataContextLookupFunction.java |   2 +-
 ...th2ClientAuthenticableProfileConfiguration.java |  18 +--
 ...bstractOAuth2FlowAwareProfileConfiguration.java |   2 +-
 ...AbstractOAuth2TokenValidatingConfiguration.java |   6 +-
 .../DefaultOAuth2TokenAudienceConfiguration.java   |  12 +-
 .../impl/DefaultOAuth2TokenConfiguration.java      |  14 +--
 ...faultOAuth2TokenIntrospectionConfiguration.java |   2 +-
 .../DefaultOAuth2TokenRevocationConfiguration.java |  10 +-
 .../impl/OIDCCoreProtocolConfigurationTest.java    |   6 +-
 .../impl/HTTPPostAuthnResponseDecoderTest.java     |  11 +-
 .../impl/HTTPRedirectAuthnResponseDecoderTest.java |  11 +-
 .../impl/HTTPPostAuthnRequestEncoderTest.java      |  14 ++-
 .../impl/HTTPRedirectAuthnRequestEncoderTest.java  |   9 +-
 ...enticationRequestMessageEncoderFactoryTest.java |  12 +-
 .../FormOutboundKeySetResponseMessageTest.java     |  14 +--
 oidc-common-saml-api/pom.xml                       |   4 +-
 .../shibboleth/oidc/saml/xmlobject/Constants.java  |   2 +-
 .../oidc/saml/xmlobject/OAuthRPExtensions.java     |   2 +-
 oidc-common-saml-impl/pom.xml                      |   9 +-
 .../impl/AbstractMetadataValueMarshaller.java      |   2 +-
 .../oidc/saml/xmlobject/impl/ClientSecretTest.java |   9 ++
 pom.xml                                            |  46 +++----
 414 files changed, 1832 insertions(+), 2662 deletions(-)

diff --git a/oidc-common-attribute-api/pom.xml b/oidc-common-attribute-api/pom.xml
index 6f66eb9..d41c5f9 100644
--- a/oidc-common-attribute-api/pom.xml
+++ b/oidc-common-attribute-api/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-attribute-api</artifactId>
@@ -20,12 +20,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
-            <artifactId>idp-attribute-api</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-attribute-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-profile-api</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
index c26d4e1..897e1f9 100644
--- a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
+++ b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
@@ -43,7 +43,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
 import net.shibboleth.idp.attribute.transcoding.AbstractAttributeTranscoder;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
 
 /**
  * Abstract class for OIDC attribute encoders.
diff --git a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/OIDCAttributeTranscoder.java b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/OIDCAttributeTranscoder.java
index 1d8c06f..3519ac7 100644
--- a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/OIDCAttributeTranscoder.java
+++ b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/OIDCAttributeTranscoder.java
@@ -21,7 +21,7 @@ import javax.annotation.Nonnull;
 
 import net.minidev.json.JSONObject;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Marker interface for transcoders that operate on OIDC claims.
diff --git a/oidc-common-attribute-impl/pom.xml b/oidc-common-attribute-impl/pom.xml
index 70805bb..9deab37 100644
--- a/oidc-common-attribute-impl/pom.xml
+++ b/oidc-common-attribute-impl/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>net.shibboleth.oidc</groupId>
 		<artifactId>oidc-common-parent</artifactId>
-		<version>2.2.2-SNAPSHOT</version>
+		<version>3.0.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>oidc-common-attribute-impl</artifactId>
@@ -21,57 +21,63 @@
 
 	<dependencies>
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+			<groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-attribute-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-api</artifactId>
+			<groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-attribute-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
         <dependency>
-            <groupId>net.shibboleth.ext</groupId>
-            <artifactId>spring-extensions</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
-            <artifactId>idp-attribute-resolver-spring</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-attribute-resolver-spring</artifactId>
             <scope>provided</scope>
         </dependency>
 
 		<!-- Test Dependencies -->
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
+			<groupId>${idp.groupId}</groupId>
 			<artifactId>idp-profile-api</artifactId>
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
+			<groupId>${idp.groupId}</groupId>
 			<artifactId>idp-core</artifactId>
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-resolver-spring</artifactId>
+			<groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-attribute-resolver-spring</artifactId>
+			<version>5.0.0-SNAPSHOT</version>
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
         <dependency>
-            <groupId>org.opensaml</groupId>
-            <artifactId>opensaml-core</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-		<dependency>
-			<groupId>net.shibboleth.ext</groupId>
-			<artifactId>spring-extensions</artifactId>
+			<groupId>${opensaml.groupId}</groupId>
+			<artifactId>opensaml-core</artifactId>
+			<version>5.0.0-SNAPSHOT</version>
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-testing</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>${idp.groupId}</groupId>
+			<artifactId>idp-testing</artifactId>
+			<scope>test</scope>
+		</dependency>
 		<dependency>
 			<groupId>${spring.groupId}</groupId>
 			<artifactId>spring-test</artifactId>
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
index 8ae63a4..90d60f0 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/AttributeEncoderNamespaceHandler.java
@@ -19,8 +19,8 @@ package net.shibboleth.oidc.attribute.resolver.spring.enc.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.spring.custom.BaseSpringNamespaceHandler;
 
 /** Namespace handler for the oidc attribute resolver. */
 public class AttributeEncoderNamespaceHandler extends BaseSpringNamespaceHandler {
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/BaseOIDCAttributeEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/BaseOIDCAttributeEncoderParser.java
index aba8ff0..d196865 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/BaseOIDCAttributeEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/BaseOIDCAttributeEncoderParser.java
@@ -26,7 +26,7 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.spring.enc.BaseAttributeEncoderParser;
 import net.shibboleth.oidc.attribute.transcoding.OIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Base class for Spring bean definition parser for OIDC attribute encoders.
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
index 980e80e..7729cc7 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
@@ -28,7 +28,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.oidc.attribute.transcoding.impl.OIDCScopedStringAttributeTranscoder;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Spring bean definition parser for {@link OIDCScopedStringAttributeTranscoder}.
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
index 100a80c..58068a8 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
@@ -28,7 +28,7 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.oidc.attribute.transcoding.impl.OIDCStringAttributeTranscoder;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Spring bean definition parser for {@link OIDCStringAttributeTranscoder}.
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
index 0832352..4c5fff0 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
@@ -33,9 +33,9 @@ import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.codec.Base64Support;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.codec.Base64Support;
+import net.shibboleth.shared.codec.EncodingException;
 
 /**
  * Class encoding byte attributes to base64 encoded string json object. Name of the attribute will be set as the key.
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
index c478d76..e1d79b8 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
@@ -38,8 +38,8 @@ import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Class encoding scoped string attributes to string json object. Name of the attribute will be set as the key. The
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
index be322df..963f0b2 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
@@ -45,10 +45,10 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /**
  * Class encoding string attributes to string json object. Name of the attribute will be set as the key. The string
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
index 724ef7d..a47ff86 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoderTest.java
@@ -26,14 +26,10 @@ import java.util.Map;
 
 import net.minidev.json.JSONArray;
 import net.minidev.json.JSONObject;
-import net.shibboleth.ext.spring.testing.MockApplicationContext;
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.utilities.java.support.codec.Base64Support;
-import net.shibboleth.utilities.java.support.codec.DecodingException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
@@ -48,6 +44,10 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
 import net.shibboleth.oidc.attribute.transcoding.OIDCAttributeTranscoder;
+import net.shibboleth.shared.codec.Base64Support;
+import net.shibboleth.shared.codec.DecodingException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.testing.MockApplicationContext;
 
 public class OIDCByteAttributeTranscoderTest {
 
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
index f0927f3..54a0c9b 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoderTest.java
@@ -31,7 +31,6 @@ import org.testng.annotations.Test;
 
 import net.minidev.json.JSONArray;
 import net.minidev.json.JSONObject;
-import net.shibboleth.ext.spring.testing.MockApplicationContext;
 import net.shibboleth.idp.attribute.AttributeDecodingException;
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
@@ -45,7 +44,8 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
 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;
 
 public class OIDCScopedStringAttributeTranscoderTest {
 
diff --git a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
index 0d77420..cc753d4 100644
--- a/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
+++ b/oidc-common-attribute-impl/src/test/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoderTest.java
@@ -33,7 +33,6 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 
 import net.minidev.json.JSONArray;
 import net.minidev.json.JSONObject;
-import net.shibboleth.ext.spring.testing.MockApplicationContext;
 import net.shibboleth.idp.attribute.AttributeDecodingException;
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
@@ -48,7 +47,8 @@ import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
 import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
 import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
 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;
 
 public class OIDCStringAttributeTranscoderTest {
 
diff --git a/oidc-common-bom/pom.xml b/oidc-common-bom/pom.xml
index 365e189..6a6e305 100644
--- a/oidc-common-bom/pom.xml
+++ b/oidc-common-bom/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>net.shibboleth.oidc</groupId>
 		<artifactId>oidc-common-parent</artifactId>
-		<version>2.2.2-SNAPSHOT</version>
+		<version>3.0.0-SNAPSHOT</version>
 	</parent>
 	<packaging>pom</packaging>
 
diff --git a/oidc-common-crypto-api/pom.xml b/oidc-common-crypto-api/pom.xml
index c55fe4b..6a6d979 100644
--- a/oidc-common-crypto-api/pom.xml
+++ b/oidc-common-crypto-api/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-crypto-api</artifactId>
@@ -20,23 +20,28 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-storage-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-spring</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>com.nimbusds</groupId>
             <artifactId>oauth2-oidc-sdk</artifactId>
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-profile-spring</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -47,7 +52,7 @@
 
         <!-- Test Dependencies -->
         <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-storage-impl</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
index a82af95..87beeb5 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128CBCHS256.java
@@ -61,7 +61,7 @@ public final class EncryptionA128CBCHS256 implements BlockEncryptionAlgorithm {
     /** {@inheritDoc} */
     @Override
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 256;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
index a4183bf..ba1b36a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA128GCM.java
@@ -55,7 +55,7 @@ public final class EncryptionA128GCM implements BlockEncryptionAlgorithm {
 
     /** {@inheritDoc} */
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 128;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
index de7cd9f..223634c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192CBCHS384.java
@@ -61,7 +61,7 @@ public final class EncryptionA192CBCHS384 implements BlockEncryptionAlgorithm {
     /** {@inheritDoc} */
     @Override
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 384;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
index 24b1852..7a6b0f7 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA192GCM.java
@@ -55,7 +55,7 @@ public final class EncryptionA192GCM implements BlockEncryptionAlgorithm {
 
     /** {@inheritDoc} */
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 192;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
index f83d6ae..515876b 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256CBCHS512.java
@@ -61,7 +61,7 @@ public final class EncryptionA256CBCHS512 implements BlockEncryptionAlgorithm {
     /** {@inheritDoc} */
     @Override
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 512;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
index 17e08f4..f406d9f 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/EncryptionA256GCM.java
@@ -55,7 +55,7 @@ public final class EncryptionA256GCM implements BlockEncryptionAlgorithm {
 
     /** {@inheritDoc} */
     @Nonnull
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 256;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHES.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHES.java
index 916da74..edf4c83 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHES.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHES.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.KeyAgreementAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Algorithm descriptor for JWE key management algorithm: ECDH-ES. */
 public class KeyAgreementECDHES implements KeyAgreementAlgorithm {
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA128KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA128KW.java
index fc3a859..5f86b90 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA128KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA128KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.KeyAgreementAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * Algorithm descriptor for JWE key management algorithm: ECDH-ES+A128KW. 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA192KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA192KW.java
index c26ecdd..2817b98 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA192KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA192KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.KeyAgreementAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * Algorithm descriptor for JWE key management algorithm: ECDH-ES+A192KW. 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA256KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA256KW.java
index 57b6b64..610c0d3 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA256KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyAgreementECDHESA256KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.KeyAgreementAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * Algorithm descriptor for JWE key management algorithm: ECDH-ES+A256KW. 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
index 5b000ae..28e943f 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSA15.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.KeyTransportAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key transport algorithm: RSA1_5.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
index 5c66eec..d9fecea 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP.java
@@ -24,7 +24,7 @@ import org.opensaml.xmlsec.algorithm.KeyTransportAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.JCAConstantExtension;
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key transport algorithm: RSA-OAEP.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
index 3b60732..512c5da 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP256.java
@@ -24,7 +24,7 @@ import org.opensaml.xmlsec.algorithm.KeyTransportAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.JCAConstantExtension;
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key transport algorithm: RSA-OAEP-256.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
index ea8cd1b..ed70a6a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP384.java
@@ -24,7 +24,7 @@ import org.opensaml.xmlsec.algorithm.KeyTransportAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.JCAConstantExtension;
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key transport algorithm: RSA-OAEP-384.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
index 471bb25..d082118 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/KeyTransportRSAOAEP512.java
@@ -24,7 +24,7 @@ import org.opensaml.xmlsec.algorithm.KeyTransportAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.JCAConstantExtension;
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key transport algorithm: RSA-OAEP-512.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128GCMKW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128GCMKW.java
index d817221..4e5884e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128GCMKW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128GCMKW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES128GCMKW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA128GCMKW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 128;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128KW.java
index d6f2a70..c3cc69a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA128KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES128KW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA128KW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 128;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192GCMKW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192GCMKW.java
index 261243c..3c60b3c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192GCMKW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192GCMKW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES192GCMKW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA192GCMKW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 192;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192KW.java
index 3f75f52..d4a8f24 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA192KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES192KW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA192KW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 192;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256GCMKW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256GCMKW.java
index 2deefa8..aa95b59 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256GCMKW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256GCMKW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES256GCMKW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA256GCMKW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 256;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256KW.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256KW.java
index 14d3183..6b0051c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256KW.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwa/algorithm/descriptors/SymmetricKeyWrapA256KW.java
@@ -23,7 +23,7 @@ import org.opensaml.security.crypto.JCAConstants;
 import org.opensaml.xmlsec.algorithm.SymmetricKeyWrapAlgorithm;
 
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Algorithm descriptor for JWE key management algorithm: AES256KW.
@@ -59,7 +59,7 @@ public class SymmetricKeyWrapA256KW implements SymmetricKeyWrapAlgorithm {
 
     /** {@inheritDoc} */
     @Override
-    public Integer getKeyLength() {
+    public int getKeyLength() {
         return 256;
     }
 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
index ce6d110..88ae8a0 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/RemoteJwkSetCache.java
@@ -24,10 +24,9 @@ import java.time.Instant;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
 import org.opensaml.storage.StorageCapabilities;
-import org.opensaml.storage.StorageCapabilitiesEx;
 import org.opensaml.storage.StorageRecord;
 import org.opensaml.storage.StorageService;
 import org.slf4j.Logger;
@@ -36,12 +35,11 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jose.jwk.JWKSet;
 
 import net.shibboleth.oidc.jwk.support.RemoteJwkUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Stores fetched remote key set values for a desired period of time.
@@ -79,13 +77,11 @@ public class RemoteJwkSetCache extends AbstractIdentifiableInitializableComponen
      * @param storageService backing store to use
      */
     public void setStorage(@Nonnull final StorageService storageService) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         storage = Constraint.isNotNull(storageService, "StorageService cannot be null");
         final StorageCapabilities caps = storage.getCapabilities();
-        if (caps instanceof StorageCapabilitiesEx) {
-            Constraint.isTrue(((StorageCapabilitiesEx) caps).isServerSide(), "StorageService cannot be client-side");
-        }
+        Constraint.isTrue(caps.isServerSide(), "StorageService cannot be client-side");
     }
 
     /**
@@ -94,8 +90,8 @@ public class RemoteJwkSetCache extends AbstractIdentifiableInitializableComponen
      * @param client client to use
      */
     public void setHttpClient(@Nonnull final HttpClient client) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         httpClient = Constraint.isNotNull(client, "HttpClient cannot be null");
     }
@@ -106,8 +102,8 @@ public class RemoteJwkSetCache extends AbstractIdentifiableInitializableComponen
      * @param params the new client security parameters
      */
     public void setHttpClientSecurityParameters(@Nullable final HttpClientSecurityParameters params) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         httpClientSecurityParameters = params;
     }
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
index 31a8e3d..ad881a5 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwk/support/RemoteJwkUtils.java
@@ -19,15 +19,16 @@ package net.shibboleth.oidc.jwk.support;
 
 import java.io.IOException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Map;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.ParseException;
-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.protocol.HttpClientContext;
-import org.apache.http.util.EntityUtils;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ParseException;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
 import org.opensaml.security.httpclient.HttpClientSecuritySupport;
 import org.slf4j.Logger;
@@ -61,18 +62,21 @@ public final class RemoteJwkUtils {
     public static JWKSet fetchRemoteJwkSet(final String logPrefix, final URI uri, final HttpClient httpClient, 
             final HttpClientSecurityParameters httpClientSecurityParameters) {
         final Logger log = LoggerFactory.getLogger(RemoteJwkUtils.class);
-        final HttpResponse response;
+        final ClassicHttpResponse response;
         try {
-            final HttpUriRequest get = RequestBuilder.get().setUri(uri).build();
+            final ClassicHttpRequest get = ClassicRequestBuilder.get().setUri(uri).build();
             final HttpClientContext clientContext = HttpClientContext.create();
             HttpClientSecuritySupport.marshalSecurityParameters(clientContext, httpClientSecurityParameters, true);
             HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, get);
-            response = httpClient.execute(get, clientContext);
-            HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, get.getURI().getScheme());
+            response = httpClient.executeOpen(null, get, clientContext);
+            HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, get.getUri().getScheme());
         } catch (final IOException e) {
             log.error("{} Could not get the JWK contents from {}", logPrefix, uri, e);
             return null;
-        }
+        } catch (final URISyntaxException e) {
+            log.error("{} Could not build request URI from {}", logPrefix, uri, e);
+            return null;
+		}
         if (response == null) {
             log.error("{} Could not get the JWK contents from {}", logPrefix, uri);
             return null;
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/AbstractClaimsValidator.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/AbstractClaimsValidator.java
index 336f52a..f94d31e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/AbstractClaimsValidator.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/AbstractClaimsValidator.java
@@ -26,9 +26,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Base class for {@link ClaimsValidator claims validators}.
@@ -51,7 +50,7 @@ public abstract class AbstractClaimsValidator
      * @param condition condition to set
      */
     public void setActivationCondition(@Nonnull final BiPredicate<ProfileRequestContext, JWTClaimsSet> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         activationCondition = Constraint.isNotNull(condition, "Activation condition cannot be null");
     }
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/ClaimsValidator.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/ClaimsValidator.java
index edf079c..1ec8810 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/ClaimsValidator.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/jwt/claims/ClaimsValidator.java
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-import net.shibboleth.utilities.java.support.component.IdentifiableComponent;
+import net.shibboleth.shared.component.IdentifiableComponent;
 
 /**
  * High-level API for validating a JWT's claims set.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
index 7edb3c2..b34f30c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/JWSAssemblyUtils.java
@@ -36,8 +36,8 @@ import com.nimbusds.jose.util.Base64URL;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.SignedJWT;
 
-import net.shibboleth.utilities.java.support.codec.EncodingException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Generic utility class for helping with JWS assembly.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
index 72e9218..b624b0b 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicClientSecretCredentialFactoryBean.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.security.credential;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.ext.spring.factory.AbstractComponentAwareFactoryBean;
-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;
+import net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean;
 
 /**
  * Factory to generate a {@link ClientSecretCredential} from a client_secret string.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWKCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWKCredential.java
index 37365b9..fdf6a97 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWKCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWKCredential.java
@@ -22,7 +22,7 @@ import java.time.Duration;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Basic implementation of an ExpiringJWKCredential.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
index 1da52be..771e239 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicExpiringJWTSharedSecretCredentialFactoryBean.java
@@ -26,15 +26,15 @@ import javax.crypto.SecretKey;
 
 import org.opensaml.security.credential.UsageType;
 import org.opensaml.security.crypto.KeySupport;
+import org.opensaml.spring.credential.AbstractCredentialFactoryBean;
 
 import com.google.common.base.Enums;
 import com.nimbusds.jose.Algorithm;
 
-import net.shibboleth.idp.profile.spring.factory.AbstractCredentialFactoryBean;
 import net.shibboleth.oidc.security.JWSAssemblyUtils;
-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.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /** 
  * A factory bean for creating a {@link BasicExpiringJWKCredential} from an injected secret.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
index 2c7b80d..29f37c8 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/BasicJWKCredentialFactoryBean.java
@@ -25,6 +25,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.spring.credential.AbstractCredentialFactoryBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.FatalBeanException;
@@ -37,10 +38,9 @@ import com.nimbusds.jose.jwk.JWK;
 import com.nimbusds.jose.jwk.KeyType;
 import com.nimbusds.jose.jwk.OctetSequenceKey;
 
-import net.shibboleth.idp.profile.spring.factory.AbstractCredentialFactoryBean;
 import net.shibboleth.oidc.security.CredentialConversionUtil;
-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;
 
 /** 
  * Factory bean for Basic JSON Web Keys (JWK).
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/ClientSecretCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/ClientSecretCredential.java
index 1548bc0..75950d6 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/ClientSecretCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/ClientSecretCredential.java
@@ -25,7 +25,7 @@ import com.nimbusds.jose.EncryptionMethod;
 import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.JWEAlgorithm;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Credential wrapping a client_secret. Contains methods to convert the client_secret into suitable keys used for
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
index 7b424f6..16b15bc 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/DefaultClientSecretCredential.java
@@ -31,9 +31,9 @@ import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.JWEAlgorithm;
 import com.nimbusds.jose.util.StandardCharset;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A basic implementation of {@link ClientSecretCredential}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
index 720c965..4f3ac56 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/credential/JWACredentialSupport.java
@@ -31,7 +31,7 @@ import com.nimbusds.jose.JWSAlgorithm;
 import com.nimbusds.jose.crypto.impl.ECDSA;
 import com.nimbusds.jose.jwk.Curve;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Support class for JSON Web Algorithm credentials.*/
 public final class JWACredentialSupport {
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParameters.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParameters.java
index 883c47d..f2d3ce7 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParameters.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParameters.java
@@ -24,7 +24,7 @@ import org.opensaml.security.credential.CredentialResolver;
 import org.opensaml.xmlsec.AlgorithmPolicyParameters;
 
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Describes the decryption parameters the system is required to use to decrypt a JWE.  
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParametersResolver.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParametersResolver.java
index 847fd5a..2421818 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParametersResolver.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/DecryptionParametersResolver.java
@@ -17,8 +17,8 @@
 
 package net.shibboleth.oidc.security.jose;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * An interface for components which resolve {@link DecryptionParameters} based on a {@link CriteriaSet}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionConfiguration.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionConfiguration.java
index 083d86e..06c76c2 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionConfiguration.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionConfiguration.java
@@ -25,9 +25,9 @@ import javax.annotation.Nullable;
 import org.opensaml.security.credential.CredentialResolver;
 import org.opensaml.xmlsec.AlgorithmPolicyConfiguration;
 
-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.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /**
  * The configuration information to use when generating a JWE.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionParametersResolver.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionParametersResolver.java
index 0e91ffa..299326c 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionParametersResolver.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/EncryptionParametersResolver.java
@@ -17,8 +17,8 @@
 
 package net.shibboleth.oidc.security.jose;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * An interface for components which resolve {@link EncryptionParameters} based on a {@link CriteriaSet}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningConfiguration.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningConfiguration.java
index 563ca35..18179e7 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningConfiguration.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningConfiguration.java
@@ -25,9 +25,9 @@ import javax.annotation.Nonnull;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.xmlsec.AlgorithmPolicyConfiguration;
 
-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.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /**
  * The configuration information to use when generating a signed JWT.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningParametersResolver.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningParametersResolver.java
index 64774a3..0797cb0 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningParametersResolver.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureSigningParametersResolver.java
@@ -17,8 +17,8 @@
 
 package net.shibboleth.oidc.security.jose;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * An interface for components which resolve {@link SignatureSigningParameters} based on a {@link CriteriaSet}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureValidationParametersResolver.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureValidationParametersResolver.java
index aa3f218..f1d968e 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureValidationParametersResolver.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/SignatureValidationParametersResolver.java
@@ -17,8 +17,8 @@
 
 package net.shibboleth.oidc.security.jose;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * An interface for components which resolve {@link SignatureValidationParameters} based on a {@link CriteriaSet}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientInformationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientInformationCriterion.java
index f999244..fdb2ae4 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientInformationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientInformationCriterion.java
@@ -21,8 +21,8 @@ import javax.annotation.Nonnull;
 
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Client information criterion to make decisions based on client information.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientSecretCredentialCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientSecretCredentialCriterion.java
index 865b1a3..4a0573a 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientSecretCredentialCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ClientSecretCredentialCriterion.java
@@ -20,8 +20,8 @@ package net.shibboleth.oidc.security.jose.criterion;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /** 
  * A {@link Criterion} that holds a single, fixed, client_secret credential.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
index d63b10d..6b4cbd1 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/DecryptionConfigurationCriterion.java
@@ -22,12 +22,12 @@ import java.util.List;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Criterion which holds one or more instances of a {@link DecryptionConfiguration}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
index 08c74d5..f4084a0 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/EncryptionConfigurationCriterion.java
@@ -22,12 +22,12 @@ import java.util.List;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Criterion which holds one or more instances of {@link EncryptionConfigurationCriterion}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
index f096cd2..b27fbab 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JOSEObjectCriterion.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
 
 import com.nimbusds.jose.JOSEObject;
 
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * An implementation of {@link Criterion} which specifies criteria based
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
index 34f7417..fae6aaf 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/JWKSetCriterion.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
 
 import com.nimbusds.jose.jwk.JWKSet;
 
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * An implementation of {@link Criterion} which specifies criteria based
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
index 7f8208f..d784f45 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/KeyIdCriterion.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.security.jose.criterion;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.Criterion;
 
 
 /**
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ProviderMetadataCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ProviderMetadataCriterion.java
index 22651cb..0e3c97f 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ProviderMetadataCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/ProviderMetadataCriterion.java
@@ -21,8 +21,8 @@ import javax.annotation.Nonnull;
 
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Provider metadata criterion to make decisions based on OpenID Provider information.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
index 697e318..76db078 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureSigningConfigurationCriterion.java
@@ -22,12 +22,12 @@ import java.util.List;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Criterion which holds one or more instances of {@link SignatureSigningConfigurationCriterion}.
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
index c253303..ca62f7b 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationConfigurationCriterion.java
@@ -24,12 +24,12 @@ import javax.annotation.Nonnull;
 import com.nimbusds.jwt.SignedJWT;
 
 import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Criterion which holds one or more instances of {@link SignatureValidationConfiguration} 
diff --git a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationParametersCriterion.java b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationParametersCriterion.java
index 002fd6e..7e21add 100644
--- a/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationParametersCriterion.java
+++ b/oidc-common-crypto-api/src/main/java/net/shibboleth/oidc/security/jose/criterion/SignatureValidationParametersCriterion.java
@@ -17,12 +17,11 @@
 
 package net.shibboleth.oidc.security.jose.criterion;
 
-
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.security.jose.SignatureValidationParameters;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Criterion which holds an instance of {@link SignatureValidationParameters}.
diff --git a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
index 3b3409a..8e844b4 100644
--- a/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
+++ b/oidc-common-crypto-api/src/test/java/net/shibboleth/oidc/jwk/RemoteJwkSetCacheTest.java
@@ -22,13 +22,13 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.time.Instant;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.ClientProtocolException;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.protocol.HttpContext;
 import org.mockito.Mockito;
 import org.opensaml.core.config.InitializationException;
 import org.opensaml.storage.StorageService;
@@ -39,7 +39,7 @@ import org.testng.annotations.Test;
 
 import com.nimbusds.jose.jwk.JWKSet;
 
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * Unit tests for {@link RemoteJwkSetCache}.
@@ -122,9 +122,9 @@ public class RemoteJwkSetCacheTest {
         jwkSetCache.fetch(new URI(uri), Instant.now().plusSeconds(500));
 
         // Change the HTTP Client response to the new document
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(rotatedValidJwkSet()));
-        Mockito.when(client.execute((HttpUriRequest) Mockito.any(), 
+        Mockito.when(client.executeOpen(Mockito.any(), (ClassicHttpRequest) Mockito.any(), 
                 (HttpContext) Mockito.any())).thenReturn(httpResponse);
         
         // Now lookup key that is not in the cached set
@@ -145,9 +145,9 @@ public class RemoteJwkSetCacheTest {
 
     protected HttpClient createMockHttpClient(final String output) throws ClientProtocolException, IOException {
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(output));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), 
+        Mockito.when(httpClient.executeOpen(Mockito.any(), (ClassicHttpRequest) Mockito.any(), 
                 (HttpContext) Mockito.any())).thenReturn(httpResponse);
         return httpClient;
     }
diff --git a/oidc-common-crypto-impl/pom.xml b/oidc-common-crypto-impl/pom.xml
index 7d5d0f9..756c9ca 100644
--- a/oidc-common-crypto-impl/pom.xml
+++ b/oidc-common-crypto-impl/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-crypto-impl</artifactId>
@@ -19,6 +19,10 @@
     </properties>
     
     <dependencies>      
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-profile-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.nimbusds</groupId>
             <artifactId>nimbus-jose-jwt</artifactId>
@@ -48,6 +52,16 @@
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-api</artifactId>
             <scope>provided</scope>
+        </dependency>
+         <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-security-impl</artifactId>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-impl</artifactId>
+            <scope>provided</scope>
         </dependency>
          <dependency>
             <groupId>${idp.groupId}</groupId>
@@ -55,13 +69,13 @@
             <scope>provided</scope>
         </dependency>
          <dependency>
-            <groupId>${idp.groupId}</groupId>
-            <artifactId>idp-profile-spring</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
             <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>
 
@@ -71,6 +85,12 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-testing</artifactId>
+            <version>${opensaml.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-core</artifactId>
@@ -83,6 +103,11 @@
             <artifactId>opensaml-storage-impl</artifactId>
             <version>${opensaml.version}</version>
             <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-testing</artifactId>
+            <scope>test</scope>
         </dependency>
          <dependency>
             <groupId>${idp.groupId}</groupId>
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
index 796b43a..860e110 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/BasicJOSEObjectCredentialResolver.java
@@ -51,9 +51,9 @@ import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.criterion.JOSEObjectCriterion;
 import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A basic implementation of {@link JOSEObjectCredentialResolver}. Resolves credentials from JOSE Headers.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
index 2600371..76edac7 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolver.java
@@ -40,15 +40,15 @@ import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.component.InitializableComponent;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-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.annotation.constraint.Positive;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A {@link JOSEObjectCredentialResolver} that resolves credentials from the jwks or contents of jwks_uri of a
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolver.java
index 91d910f..4cbea4f 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolver.java
@@ -28,9 +28,9 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Extracts a credential held inside the {@link ClientSecretCredentialCriterion} from the given criteria set.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolver.java
index 1cdf011..75408f9 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolver.java
@@ -28,11 +28,11 @@ import javax.annotation.Nullable;
 
 import org.opensaml.security.credential.Credential;
 
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-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.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/DataEncryptionAlgorithmCriterion.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/DataEncryptionAlgorithmCriterion.java
index 2059f0e..e94b16d 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/DataEncryptionAlgorithmCriterion.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/DataEncryptionAlgorithmCriterion.java
@@ -19,10 +19,10 @@ package net.shibboleth.oidc.security.credential.impl;
 
 import javax.annotation.Nonnull;
 
-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.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * An implementation of an {@link Criterion} which specifies content encryption algorithm criteria.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableKeyIDCredentialCriterion.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableKeyIDCredentialCriterion.java
index 2cb697c..729a7a7 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableKeyIDCredentialCriterion.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableKeyIDCredentialCriterion.java
@@ -27,9 +27,9 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.security.credential.JWKCredential;
 import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
-import net.shibboleth.utilities.java.support.logic.AbstractTriStatePredicate;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.logic.AbstractTriStatePredicate;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Instance of evaluable credential criteria for evaluating credential key IDs.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterion.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterion.java
index 864c4da..c11d6bd 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterion.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterion.java
@@ -28,9 +28,9 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jose.JWSAlgorithm;
 
 import net.shibboleth.oidc.security.credential.JWACredentialSupport;
-import net.shibboleth.utilities.java.support.logic.AbstractTriStatePredicate;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.AbstractTriStatePredicate;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 /**
  * Instance of evaluable credential criteria for evaluating if the key length of the secret key inside the credential
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/KeyManagmentAlgorithmCriterion.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/KeyManagmentAlgorithmCriterion.java
index 923557c..69b8c38 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/KeyManagmentAlgorithmCriterion.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/KeyManagmentAlgorithmCriterion.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.security.credential.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * An implementation of {@link Criterion} which specifies key management algorithm criteria.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolver.java
index d96f20e..c6df081 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolver.java
@@ -38,12 +38,12 @@ import com.nimbusds.jose.JWSHeader;
 
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.impl.JWETokenDecrypter;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.Live;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-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.ParameterName;
+import net.shibboleth.shared.annotation.constraint.Live;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A simple specialization of {@link BasicJOSEObjectCredentialResolver}
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
index b54ba5d..474230c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
@@ -35,15 +35,15 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.jwk.RemoteJwkSetCache;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.component.InitializableComponent;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-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.annotation.constraint.Positive;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentSupport;
+import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A {@link LocalJOSEObjectCredentialResolver} that resolves credentials from the jwks_uri of an
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ReturnAllCollectionJOSEObjectCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ReturnAllCollectionJOSEObjectCredentialResolver.java
index e30e127..90bc3ad 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ReturnAllCollectionJOSEObjectCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ReturnAllCollectionJOSEObjectCredentialResolver.java
@@ -26,10 +26,10 @@ import javax.annotation.Nonnull;
 import org.opensaml.security.credential.Credential;
 
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-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.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/AbstractEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/AbstractEncryptionAlgorithmsLookupStrategy.java
index 2de75bc..331dd23 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/AbstractEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/AbstractEncryptionAlgorithmsLookupStrategy.java
@@ -29,7 +29,7 @@ import org.opensaml.xmlsec.algorithm.AlgorithmRegistry;
 import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
 import org.opensaml.xmlsec.impl.AlgorithmRuntimeSupportedPredicate;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** 
  * A base class for lookup strategies that return encryption algorithms and make use
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseJWTSignatureSecurityHandler.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseJWTSignatureSecurityHandler.java
index 7657d57..2da969c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseJWTSignatureSecurityHandler.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseJWTSignatureSecurityHandler.java
@@ -40,7 +40,6 @@ import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.profile.messaging.context.OIDCPeerEntityContext;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableClientProfileConfiguration;
@@ -51,10 +50,10 @@ import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.oidc.security.jose.criterion.SignatureValidationParametersCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Base class for security message handlers which evaluate a JWT signature with a signature trust engine.
@@ -124,7 +123,7 @@ public abstract class BaseJWTSignatureSecurityHandler extends BaseTrustEngineSec
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<MessageContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "SecurityParametersContext lookup strategy cannot be null");
@@ -137,7 +136,7 @@ public abstract class BaseJWTSignatureSecurityHandler extends BaseTrustEngineSec
      */
     public void setProviderMetadataLookupStrategy(
             @Nonnull final Function<MessageContext, OIDCProviderMetadata> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         providerMetadataLookupStrategy = 
                 Constraint.isNotNull(strategy,"Provider metadata lookup strategy can not be null");       
@@ -151,7 +150,7 @@ public abstract class BaseJWTSignatureSecurityHandler extends BaseTrustEngineSec
      */
     public void setClientInformationLookupStrategy(
             @Nonnull final Function<MessageContext, OIDCClientInformation> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         clientInformationLookupStrategy = 
                 Constraint.isNotNull(strategy, "Client information lookup strategy can not be null");
@@ -164,7 +163,7 @@ public abstract class BaseJWTSignatureSecurityHandler extends BaseTrustEngineSec
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseSignedJWTTrustEngine.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseSignedJWTTrustEngine.java
index 7e9fa65..748a37e 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseSignedJWTTrustEngine.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/BaseSignedJWTTrustEngine.java
@@ -47,9 +47,9 @@ import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.credential.JWKCredential;
 import net.shibboleth.oidc.security.jose.criterion.JOSEObjectCriterion;
 import net.shibboleth.oidc.security.jose.criterion.SignatureValidationParametersCriterion;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A {@link TrustEngine} implementation for Signed JSON Web Tokens.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfiguration.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfiguration.java
index 8a62300..4925c9b 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfiguration.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfiguration.java
@@ -34,11 +34,10 @@ import com.nimbusds.jwt.JWT;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * An action that uses a {@link OIDCClientInformation} to verify the encryption parameters of an incoming encrypted JWT
@@ -80,7 +79,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      */
     public void setJwtTokenLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, JWT> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         jwtTokenLookupStrategy = Constraint.isNotNull(strategy, "JwtToken lookup strategy cannot be null");
     }
@@ -92,7 +91,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      */
     public void setClientInformationLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, OIDCClientInformation> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         clientInformationLookupStrategy = 
                 Constraint.isNotNull(strategy, "Client information lookup strategy can not be null");
@@ -105,7 +104,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      */
     public void setDataEncryptionAlgorithmLookupStrategy(
             @Nonnull final Function<OIDCClientInformation, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         dataEncryptionAlgorithmLookupStrategy = Constraint.isNotNull(strategy,
                 "Data encryption algorithm lookup strategy cannot be null");
@@ -118,7 +117,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      */
     public void setKeyTransportEncryptionAlgorithmLookupStrategy(
             @Nonnull final Function<OIDCClientInformation, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         keyTransportEncryptionAlgorithmLookupStrategy = Constraint.isNotNull(strategy,
                 "Key transport encryption algorithm lookup strategy cannot be null");
@@ -130,7 +129,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      * @param condition condition to set
      */
     public void setEncryptionOptionalPredicate(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         encryptionOptionalPredicate = Constraint.isNotNull(condition, "Condition cannot be null");
     }
@@ -141,7 +140,7 @@ public class CheckClientJWTDecryptionConfiguration extends AbstractProfileAction
      * @param id the identifier to set
      */
     public void setErrorEventId(@Nonnull final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         errorEventId = Constraint.isNotEmpty(id, "Error event identifier cannot be empty");
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTSignatureAlgorithmHandler.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTSignatureAlgorithmHandler.java
index d89678d..fdf7338 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTSignatureAlgorithmHandler.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/CheckClientJWTSignatureAlgorithmHandler.java
@@ -32,11 +32,10 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jwt.SignedJWT;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * A {@link MessageHandler} that uses a {@link OIDCClientInformation} to verify the signature of a signed JWT uses
@@ -73,7 +72,7 @@ public class CheckClientJWTSignatureAlgorithmHandler extends AbstractMessageHand
      */
     public void setJwtTokenLookupStrategy(
             @Nonnull final Function<MessageContext, SignedJWT> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         jwtTokenLookupStrategy = Constraint.isNotNull(strategy,
                 "JwtToken lookup strategy cannot be null");
@@ -86,7 +85,7 @@ public class CheckClientJWTSignatureAlgorithmHandler extends AbstractMessageHand
      */
     public void setClientInformationLookupStrategy(
             @Nonnull final Function<MessageContext, OIDCClientInformation> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         clientInformationLookupStrategy = 
                 Constraint.isNotNull(strategy, "Client information lookup strategy can not be null");
@@ -99,7 +98,7 @@ public class CheckClientJWTSignatureAlgorithmHandler extends AbstractMessageHand
      */
     public void setSignatureAlgorithmLookupStrategy(
             @Nonnull final Function<OIDCClientInformation, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         signatureAlgorithmLookupStrategy = Constraint.isNotNull(strategy,
                 "Signature algorithm lookup strategy cannot be null");
@@ -111,7 +110,7 @@ public class CheckClientJWTSignatureAlgorithmHandler extends AbstractMessageHand
      * @param value default value
      */
     public void setDefaultAlgorithmValue(@Nullable final String value) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         defaultAlgorithmValue = StringSupport.trimOrNull(value);
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngine.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngine.java
index 7df30aa..b0ec5e9 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngine.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngine.java
@@ -34,10 +34,10 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * An implementation of {@link org.opensaml.xmlsec.signature.support.SignatureTrustEngine} which evaluates the validity
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/DecryptJWE.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/DecryptJWE.java
index 76b5753..f4d416b 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/DecryptJWE.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/DecryptJWE.java
@@ -40,10 +40,9 @@ import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.oidc.profile.core.OidcEventIds;
 import net.shibboleth.oidc.security.jose.DecryptionParameters;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-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.logic.Constraint;
 
 /** 
  * Decrypt the located JWE using the decryption parameters stored in the security context.
@@ -95,7 +94,7 @@ public class DecryptJWE extends AbstractProfileAction {
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParamsLookupStrategy =
                 Constraint.isNotNull(strategy, "SecurityParametersContext lookup strategy cannot be null");
@@ -108,7 +107,7 @@ public class DecryptJWE extends AbstractProfileAction {
      * @param strategy the strategy
      */
     public void setJwtUpdateStrategy(@Nonnull final BiConsumer<ProfileRequestContext, JWT> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         jwtUpdateStrategy = Constraint.isNotNull(strategy, "JWT update stategy can not be null");
     }
@@ -120,7 +119,7 @@ public class DecryptJWE extends AbstractProfileAction {
      */
     public void setJwtTokenLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, EncryptedJWT> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         jwtTokenLookupStrategy = Constraint.isNotNull(strategy,
                 "JwtToken lookup strategy cannot be null");
@@ -132,7 +131,7 @@ public class DecryptJWE extends AbstractProfileAction {
      * @param id the identifier to set
      */
     public void setErrorEventId(@Nonnull final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         errorEventId = Constraint.isNotEmpty(id, "Error event identifier cannot be empty");
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/EncryptJWTHandler.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/EncryptJWTHandler.java
index cb790d1..af07f1b 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/EncryptJWTHandler.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/EncryptJWTHandler.java
@@ -50,12 +50,11 @@ import com.nimbusds.jwt.JWT;
 import net.shibboleth.oidc.security.CredentialConversionUtil;
 import net.shibboleth.oidc.security.jose.EncryptionParameters;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * A {@link MessageHandler} that encrypts a JWT using the {@link EncryptionParameters} found in the 
@@ -96,8 +95,8 @@ public class EncryptJWTHandler extends AbstractMessageHandler {
      * @param name the friendly name
      */
     public void setLogName(@Nonnull @NotEmpty final String name) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         logName = Constraint.isNotEmpty(name, "ForFriendlyName can not be null or empty");
     }
@@ -108,8 +107,8 @@ public class EncryptJWTHandler extends AbstractMessageHandler {
      * @param consumer the consumer
      */
     public void setJwtUpdateConsumer(final BiConsumer<JWT, MessageContext> consumer) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         jwtUpdateConsumer = Constraint.isNotNull(consumer, "JWT Update Consumer can not be null");
     }
@@ -120,8 +119,8 @@ public class EncryptJWTHandler extends AbstractMessageHandler {
      * @param strategy the strategy
      */
     public void setPayloadToEncryptLookupStrategy(@Nonnull final Function<MessageContext, Payload> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         payloadToEncryptLookupStrategy =
                 Constraint.isNotNull(strategy, "Payload To Encrypt Lookup Strategy can not be null");
@@ -134,7 +133,7 @@ public class EncryptJWTHandler extends AbstractMessageHandler {
      */
     public void setSecurityParametersLookupStrategy(
             @Nonnull final Function<MessageContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersLookupStrategy =
                 Constraint.isNotNull(strategy, "SecurityParameterContext lookup strategy cannot be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngine.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngine.java
index 2f4f71c..efa08b9 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngine.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngine.java
@@ -39,11 +39,10 @@ import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.credential.impl.EvaluableKeyIDCredentialCriterion;
 import net.shibboleth.oidc.security.credential.impl.EvaluableMACKeyLengthCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-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.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * An implementation of {@link org.opensaml.xmlsec.signature.support.SignatureTrustEngine} which evaluates the validity
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWETokenDecrypter.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWETokenDecrypter.java
index 69ec9d8..0362e3e 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWETokenDecrypter.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWETokenDecrypter.java
@@ -57,11 +57,11 @@ import net.shibboleth.oidc.security.credential.impl.KeyManagmentAlgorithmCriteri
 import net.shibboleth.oidc.security.jose.DecryptionParameters;
 import net.shibboleth.oidc.security.jose.criterion.JOSEObjectCriterion;
 import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Criterion;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Supports decryption of encrypted JSON Web Tokens using the JSON Web Encryption standard. 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTMessageSignatureSecurityHandler.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTMessageSignatureSecurityHandler.java
index 36983c4..56c09f1 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTMessageSignatureSecurityHandler.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTMessageSignatureSecurityHandler.java
@@ -35,10 +35,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.SignedJWT;
 
 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.logic.Constraint;
 
 /**
  * A {@link MessageHandler} that uses a {@link TrustEngine} to evaluate the signature of a signed JWT.
@@ -70,7 +69,7 @@ public class JWTMessageSignatureSecurityHandler extends BaseJWTSignatureSecurity
      */
     public void setJwtTokenLookupStrategy(
             @Nonnull final Function<MessageContext, SignedJWT> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         jwtTokenLookupStrategy = Constraint.isNotNull(strategy,
                 "JwtToken lookup strategy cannot be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtil.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtil.java
index 8514008..cf3a15c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtil.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtil.java
@@ -21,14 +21,11 @@ import java.security.interfaces.ECPublicKey;
 import java.security.interfaces.RSAPublicKey;
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.opensaml.profile.action.EventIds;
 import org.opensaml.security.credential.Credential;
-import org.opensaml.xmlsec.context.SecurityParametersContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,64 +53,6 @@ public final class JWTSignatureValidationUtil {
 
     }
     
-    
-    /**
-     * Validates the signature of the given JWT using the given security parameters context. If the validation fails for
-     * any reason, including insufficient prequisities in the context, an event identifier is returned. Successful
-     * validation produces a null result.
-     * 
-     * <p>Overloads {@link #validateSignature(SecurityParametersContext, SignedJWT, String)}, but with a 
-     * 'radically' different parameter.</p>
-     * 
-     * @param secParamCtx The {@link SecurityParametersContext} to use for signature validation.
-     * @param signedJwt The signed JWT to be validated.
-     * @param invalidJwtEventId The event identifier describing the invalid JWT.
-     * @return an event ID on failure, or {@literal null} if validation succeeds.
-     * 
-     * @deprecated
-     */
-    @Deprecated(since="1.2.0", forRemoval=true)
-    @Nullable public static String validateSignature(@Nullable final SecurityParametersContext secParamCtx, 
-            @Nonnull final SignedJWT signedJwt, @Nullable final String invalidJwtEventId) {
-        
-        if (secParamCtx == null) {
-            log.warn("No security parameters context is available");
-            return EventIds.INVALID_SEC_CFG;
-        }
-        if (secParamCtx.getSignatureSigningParameters() == null
-                || !(secParamCtx.getSignatureSigningParameters() instanceof OIDCSignatureValidationParameters)) {
-            log.warn("No signature validation credentials available");
-            return EventIds.INVALID_SEC_CFG;
-        }
-        final OIDCSignatureValidationParameters signatureValidationParameters =
-                (OIDCSignatureValidationParameters) secParamCtx.getSignatureSigningParameters();
-        if (signatureValidationParameters.getValidationCredentials().isEmpty()) {
-            log.warn("Unable to find any keys to validate given JWT signature");
-            return EventIds.INVALID_SEC_CFG;            
-        }        
-        
-        return validateSignatureEx(signatureValidationParameters.getValidationCredentials(), 
-                signedJwt, invalidJwtEventId);
-    }
-
-    /**
-     * Validates the signature of the given JWS against the given list of credentials. If the validation fails for
-     * any reason, including insufficient prequisities in the context, an event identifier is returned. Successful
-     * validation produces null result.
-     * 
-     * @param credentials The list of {@link JWKCredential}s to use for signature validation.
-     * @param signedJwt The signed JWT to be validated.
-     * @param invalidJwtEventId The event identifier describing the invalid JWT.
-     * @return an event ID on failure, or {@literal null} if validation succeeds.
-     * 
-     * @deprecated
-     */
-    @Deprecated(since="1.2.0", forRemoval=true)
-    public static String validateSignature(@Nonnull final List<JWKCredential> credentials,
-            @Nonnull final SignedJWT signedJwt, @Nullable final String invalidJwtEventId) {
-        return validateSignatureEx(credentials, signedJwt, invalidJwtEventId);
-    }
-
  // Checkstyle: CyclomaticComplexity OFF
     /**
      * Validates the signature of the given JWS against the given list of credentials. If the validation fails for
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/SignJWTHandler.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/SignJWTHandler.java
index 5e7d1b8..c904eed 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/SignJWTHandler.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/impl/SignJWTHandler.java
@@ -50,12 +50,11 @@ import net.shibboleth.oidc.security.CredentialConversionUtil;
 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.annotation.constraint.NonnullAfterInit;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Message handler that signs a JWT and sets it back to the message context via an update consumer.
@@ -101,8 +100,8 @@ public class SignJWTHandler extends AbstractMessageHandler {
      * @param name the friendly name
      */
     public void setLogName(@Nonnull @NotEmpty final String name) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         logName = Constraint.isNotEmpty(name, "ForFriendlyName can not be null or empty");
     }
@@ -124,8 +123,8 @@ public class SignJWTHandler extends AbstractMessageHandler {
      * @param strategy the strategy
      */
     public void setClaimsToSignLookupStrategy(@Nonnull final Function<MessageContext, JWTClaimsSet> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         claimsToSignLookupStrategy =
                 Constraint.isNotNull(strategy, "Claims To Sign Lookup Strategy can not be null");
@@ -137,8 +136,8 @@ public class SignJWTHandler extends AbstractMessageHandler {
      * @param consumer the consumer
      */
     public void setJwtUpdateConsumer(final BiConsumer<JWT, MessageContext> consumer) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         jwtUpdateConsumer = Constraint.isNotNull(consumer, "JWT Update Consumer can not be null");
     }
@@ -149,8 +148,8 @@ public class SignJWTHandler extends AbstractMessageHandler {
      * @param type header value
      */
     public void setTypeHeader(@Nullable @NotEmpty final String type) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         typeHeader = StringSupport.trimOrNull(type);
     }
@@ -162,8 +161,8 @@ public class SignJWTHandler extends AbstractMessageHandler {
      */
     public void setSecurityParametersLookupStrategy(
             @Nonnull final Function<MessageContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         securityParametersLookupStrategy =
                 Constraint.isNotNull(strategy, "SecurityParameterContext lookup strategy cannot be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicEncryptionConfiguration.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicEncryptionConfiguration.java
index 39ba1db..f3322a0 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicEncryptionConfiguration.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicEncryptionConfiguration.java
@@ -27,10 +27,10 @@ import org.opensaml.security.credential.CredentialResolver;
 import org.opensaml.xmlsec.impl.BasicAlgorithmPolicyConfiguration;
 
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
-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.primitive.StringSupport;
+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.primitive.StringSupport;
 
 /**
  * Basic implementation of {@link EncryptionConfiguration} for handling JWE encryption.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningConfiguration.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningConfiguration.java
index 2d1ab8b..a25f43c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningConfiguration.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningConfiguration.java
@@ -29,10 +29,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
-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.primitive.StringSupport;
+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.primitive.StringSupport;
 
 /**
  * The configuration information to use when generating an signed JWT.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolver.java
index f9a862c..a6ac2f5 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolver.java
@@ -47,11 +47,11 @@ import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.SignatureSigningParametersResolver;
 import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.PredicateSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.PredicateSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureValidationParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureValidationParametersResolver.java
index 0203e3f..0aef621 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureValidationParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureValidationParametersResolver.java
@@ -34,10 +34,9 @@ import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureValidationParameters;
 import net.shibboleth.oidc.security.jose.SignatureValidationParametersResolver;
 import net.shibboleth.oidc.security.jose.criterion.SignatureValidationConfigurationCriterion;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Basic implementation of {@link SignatureValidationParametersResolver}.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationDataEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationDataEncryptionAlgorithmsLookupStrategy.java
index 456d4b4..1074724 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationDataEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationDataEncryptionAlgorithmsLookupStrategy.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A lookup strategy that finds data/content encryption algorithms from local configuration that are compatible
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationKeyTransportEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationKeyTransportEncryptionAlgorithmsLookupStrategy.java
index ce024ea..c8b46b4 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationKeyTransportEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationKeyTransportEncryptionAlgorithmsLookupStrategy.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A lookup strategy that finds key transport algorithms from local configuration that are compatible with those 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolver.java
index 6289077..9b8ef00 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolver.java
@@ -34,10 +34,10 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
 import net.shibboleth.oidc.security.jose.SignatureSigningParametersResolver;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * An implementation of an {@link SignatureSigningParametersResolver} that extends the {@link
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategy.java
index 2490a51..09dbd2b 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategy.java
@@ -29,8 +29,8 @@ import org.opensaml.xmlsec.algorithm.AlgorithmRegistry;
 import net.shibboleth.oidc.security.impl.AbstractEncryptionAlgorithmsLookupStrategy;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
-import net.shibboleth.utilities.java.support.logic.PredicateSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.logic.PredicateSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A BiFunction which pulls data encryption (content encryption) algorithms to use from the 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDecryptionParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDecryptionParametersResolver.java
index 2e2f2e8..c456c34 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDecryptionParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultDecryptionParametersResolver.java
@@ -32,9 +32,9 @@ import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
 import net.shibboleth.oidc.security.jose.DecryptionParameters;
 import net.shibboleth.oidc.security.jose.DecryptionParametersResolver;
 import net.shibboleth.oidc.security.jose.criterion.DecryptionConfigurationCriterion;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Basic implementation of {@link DecryptionParametersResolver}.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
index 7a3af14..7e4edee 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolver.java
@@ -58,10 +58,10 @@ import net.shibboleth.oidc.security.jose.EncryptionParameters;
 import net.shibboleth.oidc.security.jose.EncryptionParametersResolver;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Default implementation of an {@link EncryptionParametersResolver}. The resolver delegates much of its functionality
@@ -255,8 +255,9 @@ public class DefaultEncryptionParametersResolver extends AbstractSecurityParamet
         if (log.isDebugEnabled()) {
             log.debug("Resolved EncryptionParameters:");
             
-            final Key keyTransportKey =
-                    CredentialSupport.extractEncryptionKey(params.getKeyTransportEncryptionCredential());
+            final Credential keyTransportCredential = params.getKeyTransportEncryptionCredential();
+            final Key keyTransportKey = keyTransportCredential == null ? null :
+                    CredentialSupport.extractEncryptionKey(keyTransportCredential);
             if (keyTransportKey != null) {
                 log.debug("\tKey transport credential with key algorithm: {}", keyTransportKey.getAlgorithm());
             } else {
@@ -264,8 +265,8 @@ public class DefaultEncryptionParametersResolver extends AbstractSecurityParamet
             }
             
             log.debug("\tKey transport algorithm URI: {}", params.getKeyTransportEncryptionAlgorithm());             
-                      
-            final Key dataKey = CredentialSupport.extractEncryptionKey(params.getDataEncryptionCredential());
+            final Credential dataCredential = params.getDataEncryptionCredential();
+            final Key dataKey = dataCredential == null ? null : CredentialSupport.extractEncryptionKey(dataCredential);
             if (dataKey != null) {
                 log.debug("\tData encryption credential with key algorithm: {}", dataKey.getAlgorithm());
             } else {
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategy.java
index d279e40..47a2f05 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategy.java
@@ -30,8 +30,8 @@ import org.opensaml.xmlsec.algorithm.AlgorithmRegistry;
 import net.shibboleth.oidc.security.impl.AbstractEncryptionAlgorithmsLookupStrategy;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
-import net.shibboleth.utilities.java.support.logic.PredicateSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.logic.PredicateSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** 
  * A BiFunction that retrieves and filters the key transport encryption algorithms from the 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
index f8c33d6..f5ac288 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategy.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A lookup strategy that finds data/content encryption algorithms from local configuration that are compatible
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
index f51edae..19444c1 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy.java
@@ -32,9 +32,9 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A lookup strategy that finds key transport algorithms from local configuration that are compatible with those 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolver.java
index cdbee16..7ef39fc 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolver.java
@@ -37,9 +37,9 @@ import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A specialization of {@link BasicSignatureSigningParametersResolver} which supports selecting signing credentials
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidator.java
index 24d5bcb..5b839de 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidator.java
@@ -29,11 +29,10 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.logic.Constraint;
 
 /**
  * Check the ACR values requested were received.
@@ -65,8 +64,8 @@ public class ACRClaimsValidator extends AbstractClaimsValidator {
      */
     public void setRequestedEssentialAcrsClaimLookupStrategy(
             @Nonnull final BiFunction<ProfileRequestContext, JWTClaimsSet, List<String>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         requestedEssentialAcrsClaimLookupStrategy = Constraint.isNotNull(strategy,
                 "requestedAcrClaimLookupStrategy can not be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidator.java
index f1c3643..818f91c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidator.java
@@ -34,11 +34,10 @@ import com.nimbusds.openid.connect.sdk.validators.InvalidHashException;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * A validator that checks the access_token value matches its encoded at_hash representation in the
@@ -78,8 +77,8 @@ public class AccessTokenHashValidator extends AbstractClaimsValidator {
      * @param strategy the strategy.
      */
     public void setAccessTokenLookupStrategy(@Nonnull final Function<ProfileRequestContext, AccessToken> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         accessTokenLookupStrategy = Constraint.isNotNull(strategy,
                 "Access Token Lookup Strategy can not be null");
@@ -91,8 +90,8 @@ public class AccessTokenHashValidator extends AbstractClaimsValidator {
      * @param strategy the strategy.
      */
     public void setJoseHeaderLookupStrategy(@Nonnull final Function<ProfileRequestContext, JWSHeader> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         joseHeaderLookupStrategy = Constraint.isNotNull(strategy, 
                 "Jose Header Lookup Strategy can not be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
index 8700a73..56218f6 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
@@ -32,12 +32,11 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.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.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Verifies the Audience (aud) claim contains the appropriate value.
@@ -87,7 +86,7 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
      */
     public void setAudienceLookupStrategy(
             @Nonnull final BiFunction<ProfileRequestContext,JWTClaimsSet, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         audienceLookupStrategy = Constraint.isNotNull(strategy, "Audience lookup strategy can not be null");
     }
@@ -101,8 +100,8 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
      */
     public void setAdditionalAudiencesLookupStrategy(
             @Nonnull final BiFunction<ProfileRequestContext, JWTClaimsSet, Set<String>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         additionalAudiencesLookupStrategy = Constraint.isNotNull(strategy,
                 "Additional audiences lookup strategy can not be null");
@@ -131,8 +130,8 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
      * @since 2.2.0
      */
     public void setExtraAudienceValidation(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         extraAudienceValidation = flag;
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationCondition.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationCondition.java
index b568c69..a3fc511 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationCondition.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationCondition.java
@@ -33,8 +33,8 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest.Entry;
 
 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.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Has the auth_time claim been requested?
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidator.java
index f8708a4..bda2174 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidator.java
@@ -30,13 +30,12 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-import net.shibboleth.idp.profile.context.navigate.ResponderIdLookupFunction;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Verifies the Audience (aud) claim contains the appropriate value in JWT authentication. This validator extends the
@@ -65,7 +64,7 @@ public class AuthenticationAudienceClaimsValidator extends AudienceClaimsValidat
     /** Constructor. */
     public AuthenticationAudienceClaimsValidator() {
         super();
-        responderIdLookupStrategy = new ResponderIdLookupFunction();
+        responderIdLookupStrategy = new IssuerLookupFunction();
         endpointTargets = Collections.emptyList();
         endpointReplacement = null;
     }
@@ -76,8 +75,8 @@ public class AuthenticationAudienceClaimsValidator extends AudienceClaimsValidat
      * @param strategy What to set.
      */
     public void setResponderIdLookupStrategy(@Nonnull final Function<ProfileRequestContext, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         responderIdLookupStrategy = Constraint.isNotNull(strategy, "The responder ID lookup strategy cannot be null");
     }
@@ -88,8 +87,8 @@ public class AuthenticationAudienceClaimsValidator extends AudienceClaimsValidat
      * @param paths What to set.
      */
     public void setEndpointTargets(@Nonnull final List<String> paths) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         endpointTargets = Constraint.isNotNull(paths, "The endpoint paths to replace cannot be null");
     }
@@ -100,8 +99,8 @@ public class AuthenticationAudienceClaimsValidator extends AudienceClaimsValidat
      * @param path What to set.
      */
     public void setEndpointReplacement(@Nullable final String path) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         endpointReplacement = path;
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidator.java
index cbbda8e..033b4e1 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidator.java
@@ -36,10 +36,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
 
 /**
  * Verifies the auth_time (when the End-User authentication took place):
@@ -97,7 +96,7 @@ public class AuthenticationTimeClaimsValidator extends AbstractClaimsValidator {
      * @param skew clock skew to set
      */
     public void setClockSkew(@Nonnull final Duration skew) {  
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         clockSkew = Constraint.isNotNull(skew, "Clock skew cannot be null");
     }
@@ -111,8 +110,8 @@ public class AuthenticationTimeClaimsValidator extends AbstractClaimsValidator {
      */
     public void setAuthnRequestTimeLookupStrategy(
             final Function<ProfileRequestContext, Instant> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         authnRequestTimeLookupStrategy = Constraint.isNotNull(strategy,
                 "authnRequestTimeLookupStrategy can not be null");
@@ -127,7 +126,7 @@ public class AuthenticationTimeClaimsValidator extends AbstractClaimsValidator {
      */
     @Deprecated(forRemoval = true, since = "2.2.0")
     public void setRequested(final Predicate<ProfileRequestContext> isRequested) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         requested = isRequested;
     }
@@ -138,7 +137,7 @@ public class AuthenticationTimeClaimsValidator extends AbstractClaimsValidator {
      * @param lifetime amount of time for which a token is valid
      */
     public void setAuthnLifetime(@Nonnull final Duration lifetime) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         Constraint.isNotNull(lifetime, "Token authentication lifetime cannot be null");
         Constraint.isFalse(lifetime.isNegative(), "Token authentication lifetime cannot be negative");
@@ -155,8 +154,8 @@ public class AuthenticationTimeClaimsValidator extends AbstractClaimsValidator {
      * @since 2.2.0
      */
     public void setAuthnLifetimeLookupStrategy(@Nonnull final Function<ProfileRequestContext, Duration> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         authnLifetimeLookupStrategy = Constraint.isNotNull(strategy,
                 "AuthnLifetime Lookup Strategy can not be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidator.java
index df148f8..cb97a08 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidator.java
@@ -32,12 +32,11 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.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.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * A {@link ClaimsValidator} implementation that validates a JWT claims set from a chain 
@@ -84,7 +83,7 @@ public class ChainingJWTClaimsValidator extends AbstractIdentifiableInitializabl
      * @param flag flag to set
      */
     public void setRequireAll(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         requireAll = flag;
     }
@@ -95,7 +94,7 @@ public class ChainingJWTClaimsValidator extends AbstractIdentifiableInitializabl
      * @param validators validators to use
      */
     public void setClaimValidators(@Nullable @NonnullElements final List<ClaimsValidator> validators) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         if (validators != null) {
             claimValidators = List.copyOf(validators);
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ClaimExistsActivationCondition.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ClaimExistsActivationCondition.java
index f7a971f..e6c1fdd 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ClaimExistsActivationCondition.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ClaimExistsActivationCondition.java
@@ -26,9 +26,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-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;
 
 /** Activation condition to check a claim exists in the claims set.*/
 @ThreadSafe
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidator.java
index d406be8..044df3f 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidator.java
@@ -29,12 +29,11 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.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.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Validator that checks a JWT claim exactly matches (by Object equality) a value returned by a lookup strategy.
@@ -60,7 +59,7 @@ public class ExactMatchClaimsValidator extends AbstractClaimsValidator{
      * @param name the claim name.
      */
     public void setClaimName(@Nonnull @NotEmpty final String name) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
     
         claimName = Constraint.isNotEmpty(name, "Claim name can not be null or empty");
     }
@@ -72,7 +71,7 @@ public class ExactMatchClaimsValidator extends AbstractClaimsValidator{
      */
     public void setValueToMatchLookupStrategy(
             @Nonnull final BiFunction<ProfileRequestContext,JWTClaimsSet, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         valueToMatchLookupStrategy = Constraint.isNotNull(strategy,
                 "Claim value to match lookup strategy can not be null");
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidator.java
index d6db88e..3085992 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidator.java
@@ -31,9 +31,8 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Iff an expiration time (exp) claim is present, verifies that it is ahead of the current time, else the JWT claims set
@@ -59,7 +58,7 @@ public class ExpiryClaimsValidator extends AbstractClaimsValidator {
      * @param skew clock skew to set
      */
     public void setClockSkew(@Nonnull final Duration skew) {  
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         clockSkew = Constraint.isNotNull(skew, "Clock skew cannot be null");
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/FunctionClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/FunctionClaimsValidator.java
index 1634f26..6b898fb 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/FunctionClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/FunctionClaimsValidator.java
@@ -29,8 +29,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
 
 /**
  * A {@link ClaimsValidator} that relies on an injected {@link BiFunction}.
@@ -48,7 +47,7 @@ public class FunctionClaimsValidator extends AbstractClaimsValidator{
      */
     public void setValidator(
             @Nullable final BiFunction<JWTClaimsSet,ProfileRequestContext,JWTValidationException> function) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         validator = function;
     }
 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IDTokenClaims.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IDTokenClaims.java
index ce14bc3..f380bfc 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IDTokenClaims.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IDTokenClaims.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.security.jwt.claims.impl;
 
 import javax.annotation.Nonnull;
 
-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.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /** Enum of those OIDC ID token claims that are not part of the standard {@link JWTClaims JWT claims set}.*/
 public enum IDTokenClaims { 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidator.java
index fc287fe..503a15c 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidator.java
@@ -29,9 +29,8 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * If the 'iat' claim is present in the JWT, verifies it is not to far away from the current time.
@@ -62,7 +61,7 @@ public class IssuedAtClaimsValidator extends AbstractClaimsValidator {
      * @param lifetime amount of time for which a message is valid
      */
     public void setMessageLifetime(@Nonnull final Duration lifetime) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         Constraint.isNotNull(lifetime, "Token lifetime cannot be null");
         Constraint.isFalse(lifetime.isNegative(), "Token lifetime cannot be negative");
@@ -76,7 +75,7 @@ public class IssuedAtClaimsValidator extends AbstractClaimsValidator {
      * @param skew clock skew to set
      */
     public void setClockSkew(@Nonnull final Duration skew) {  
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         clockSkew = Constraint.isNotNull(skew, "Clock skew cannot be null");
     }
@@ -87,7 +86,7 @@ public class IssuedAtClaimsValidator extends AbstractClaimsValidator {
      * @param required whether this rule is required to be met
      */
     public void setRequiredRule(final boolean required) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         requiredRule = required;
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTClaims.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTClaims.java
index 70efb51..83cb396 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTClaims.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTClaims.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.security.jwt.claims.impl;
 
 import javax.annotation.Nonnull;
 
-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.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /** Enum that represents the standard set of registered JWT claims. */
 public enum JWTClaims {
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidator.java
index 1572545..0f09f34 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidator.java
@@ -30,11 +30,10 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Verifies the identifier (jit) from the JWT against replay via configurable {@link ReplayCache}.
@@ -65,7 +64,7 @@ public class JWTIdentifierClaimsValidator extends AbstractClaimsValidator {
      * @param cache replay cache to set.
      */
     public void setReplayCache(@Nonnull final ReplayCache cache) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         replayCache = Constraint.isNotNull(cache, "ReplayCache cannot be null");
     }
 
@@ -75,7 +74,7 @@ public class JWTIdentifierClaimsValidator extends AbstractClaimsValidator {
      * @param skew clock skew to set.
      */
     public void setClockSkew(@Nonnull final Duration skew) {  
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         clockSkew = Constraint.isNotNull(skew, "Clock skew cannot be null");
     }
 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierRevocationValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierRevocationValidator.java
index 7414b74..f22d838 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierRevocationValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierRevocationValidator.java
@@ -27,12 +27,11 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-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.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Verifies the identifier (jit) from the JWT against revocation via configurable {@link RevocationCache}.
@@ -54,7 +53,7 @@ public class JWTIdentifierRevocationValidator extends AbstractClaimsValidator {
      * @param cache revocation cache to set
      */
     public void setRevocationCache(@Nonnull final RevocationCache cache) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         revocationCache = Constraint.isNotNull(cache, "RevocationCache cannot be null");
     }
     
@@ -64,7 +63,7 @@ public class JWTIdentifierRevocationValidator extends AbstractClaimsValidator {
      * @param s context value
      */
     public void setContext(@Nonnull @NotEmpty final String s) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         context = Constraint.isNotNull(StringSupport.trimOrNull(s), "Context cannot be null or empty");
     }
 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidator.java
index 45d8051..6872a09 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidator.java
@@ -30,9 +30,8 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Iff a not-before-time (nbf) claim is present, makes sure it is before the current time. RFC7519 section 4.1.5.
@@ -57,7 +56,7 @@ public class NotBeforeClaimsValidator extends AbstractClaimsValidator {
      * @param skew clock skew to set
      */
     public void setClockSkew(@Nonnull final Duration skew) {  
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         clockSkew = Constraint.isNotNull(skew, "Clock skew cannot be null");
     }
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NumberOfClaimValuesActivationCondition.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NumberOfClaimValuesActivationCondition.java
index 2be4084..9db3f34 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NumberOfClaimValuesActivationCondition.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/NumberOfClaimValuesActivationCondition.java
@@ -28,9 +28,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
-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;
 
 /** 
  * Activation condition to check the number of values a claim has against a given predicate.
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidator.java
index 17023db..2cfd2c7 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidator.java
@@ -31,10 +31,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Verify the claims set does not contain any of the described set of claims.
@@ -56,7 +55,7 @@ public class ProhibitedClaimsValidator extends AbstractClaimsValidator {
      * @param claims the prohibited claims.
      */
     public void setProhibitedClaims(@Nullable final Collection<String> claims) {   
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         if (claims !=null) {
             prohibitedClaims = Set.copyOf(StringSupport.normalizeStringCollection(claims));
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategy.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategy.java
index d105fb8..a3de101 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategy.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategy.java
@@ -33,8 +33,8 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest.Entry;
 
 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.shared.annotation.ParameterName;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Strategy that looks up any requested ACR claims from the requested claims object that have to be contained in 
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidator.java
index 9187101..3feff12 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidator.java
@@ -31,10 +31,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.ThreadSafeAfterInit;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Verify the claims set contains the given set of required claims.
@@ -56,7 +55,7 @@ public class RequiredClaimsValidator extends AbstractClaimsValidator{
      * @param claims the required claims.
      */
     public void setRequiredClaims(@Nullable final Collection<String> claims) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         if (claims !=null) {
             requiredClaims = Set.copyOf(StringSupport.normalizeStringCollection(claims));
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
index 354e7dd..cef3f63 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
@@ -33,12 +33,12 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.ClientProtocolException;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.protocol.HttpContext;
 import org.mockito.Mockito;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.security.credential.UsageType;
@@ -54,9 +54,9 @@ import org.testng.annotations.Test;
 
 import net.shibboleth.oidc.jwk.RemoteJwkSetCache;
 import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.InitializableComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Base unit test for the credential resolvers fetching the credentials from metadata.
@@ -90,9 +90,9 @@ public abstract class BaseMetadataCredentialResolverTest<T extends BasicJOSEObje
     
     protected HttpClient createMockHttpClient(final String output) throws ClientProtocolException, IOException {
         final HttpClient httpClient = Mockito.mock(HttpClient.class);
-        final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
+        final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
         Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(output));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), 
+        Mockito.when(httpClient.executeOpen(Mockito.any(), (ClassicHttpRequest) Mockito.any(), 
                 (HttpContext) Mockito.any())).thenReturn(httpResponse);
         return httpClient;
     }
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
index 5001c9a..60654f8 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
@@ -38,8 +38,8 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 import net.shibboleth.oidc.jwk.RemoteJwkSetCache;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.component.InitializableComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Unit tests for {@link ClientInformationCredentialResolver}.
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolverTest.java
index 6dd5b2d..fe8534b 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientSecretCriterionCredentialResolverTest.java
@@ -39,8 +39,8 @@ import com.nimbusds.oauth2.sdk.jose.SecretKeyDerivation;
 
 import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
-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 {@link ClientSecretCriterionCredentialResolver}. */
 public class ClientSecretCriterionCredentialResolverTest {
@@ -79,7 +79,7 @@ public class ClientSecretCriterionCredentialResolverTest {
         set.add(new ClientSecretCredentialCriterion(new DefaultClientSecretCredential(CLIENT_SECRET)));
         set.add(new KeyManagmentAlgorithmCriterion(JWEAlgorithm.A128KW.getName()));
         set.add(new DataEncryptionAlgorithmCriterion(EncryptionMethod.A128CBC_HS256.getName()));
-        final Iterable<Credential> resolvedCredentials = resolver.resolve(set);
+        resolver.resolve(set);
 
     }
     
@@ -92,7 +92,7 @@ public class ClientSecretCriterionCredentialResolverTest {
         set.add(new ClientSecretCredentialCriterion(new DefaultClientSecretCredential(CLIENT_SECRET)));
         
         set.add(new DataEncryptionAlgorithmCriterion(EncryptionMethod.A128CBC_HS256.getName()));
-        final Iterable<Credential> resolvedCredentials = resolver.resolve(set);
+        resolver.resolve(set);
 
     }
     
@@ -104,7 +104,7 @@ public class ClientSecretCriterionCredentialResolverTest {
         set.add(new UsageCriterion(UsageType.ENCRYPTION));
         set.add(new ClientSecretCredentialCriterion(new DefaultClientSecretCredential(CLIENT_SECRET)));
         set.add(new KeyManagmentAlgorithmCriterion(JWEAlgorithm.A128KW.getName()));
-        final Iterable<Credential> resolvedCredentials = resolver.resolve(set);
+        resolver.resolve(set);
 
     }
 
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolverTest.java
index 1956713..e819bb7 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/CollectionJOSEObjectCredentialResolverTest.java
@@ -18,9 +18,9 @@ import org.opensaml.security.credential.CredentialContextSet;
 import org.opensaml.security.credential.UsageType;
 import org.testng.annotations.Test;
 
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** Tests for the CollectionJOSEObjectCredentialResolver.*/
 public class CollectionJOSEObjectCredentialResolverTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterionTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterionTest.java
index 16b748d..1ea99d0 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterionTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/EvaluableMACKeyLengthCredentialCriterionTest.java
@@ -19,7 +19,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jose.JWSAlgorithm;
 import com.nimbusds.jose.util.StandardCharset;
 
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 public class EvaluableMACKeyLengthCredentialCriterionTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolverTest.java
index 69d332f..a92c173 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/LocalJOSEObjectCredentialResolverTest.java
@@ -39,8 +39,8 @@ import com.nimbusds.jwt.SignedJWT;
 import net.shibboleth.oidc.security.credential.BasicJWKCredential;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.criterion.JOSEObjectCriterion;
-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 {@link LocalJOSEObjectCredentialResolver}.*/
 public class LocalJOSEObjectCredentialResolverTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
index c710625..880a556 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
@@ -32,8 +32,8 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 import net.shibboleth.oidc.jwk.RemoteJwkSetCache;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-import net.shibboleth.utilities.java.support.component.InitializableComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.InitializableComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Unit tests for {@link ProviderMetadataCredentialResolver}.
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfigurationTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfigurationTest.java
index d17eb99..96cbaad 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfigurationTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/CheckClientJWTDecryptionConfigurationTest.java
@@ -34,7 +34,7 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * Unit tests for {@link CheckClientJWTDecryptionConfiguration}.
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngineTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngineTest.java
index fe747c8..ff7c6fd 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngineTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ClientInformationJWTTrustEngineTest.java
@@ -48,8 +48,8 @@ import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.credential.impl.BasicJOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
-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 the {@link ClientInformationJWTTrustEngine}.
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngineTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngineTest.java
index ea8a8ff..b8c76cd 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngineTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ExplicitKeySignedJWTTrustEngineTest.java
@@ -57,8 +57,8 @@ import net.shibboleth.oidc.security.credential.impl.BasicJOSEObjectCredentialRes
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.SignatureValidationParameters;
 import net.shibboleth.oidc.security.jose.criterion.SignatureValidationParametersCriterion;
-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 the {@link ExplicitKeySignedJWTTrustEngine}.
@@ -354,8 +354,7 @@ public class ExplicitKeySignedJWTTrustEngineTest {
     @Test(expectedExceptions = ParseException.class)
     public void testInvalid_WithInlineSharedSecretJWK() throws Exception {
         
-        final SignedJWT jws = 
-                SignedJWT.parse(JWT_WITH_INLINE_SHARED_SECRET_JWK);
+        SignedJWT.parse(JWT_WITH_INLINE_SHARED_SECRET_JWK);
     }
     
     @Test
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWETokenDecrypterTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWETokenDecrypterTest.java
index e0d1fe5..dc96ed9 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWETokenDecrypterTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWETokenDecrypterTest.java
@@ -62,8 +62,8 @@ import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.credential.JWKCredential;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.DecryptionParameters;
-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 the {@link JWETokenDecrypter}.*/
 public class JWETokenDecrypterTest {
@@ -221,7 +221,7 @@ public class JWETokenDecrypterTest {
             }
         });
         decrypter = new JWETokenDecrypter(params);
-        final JWT decryptedJWE = decrypter.decrypt(jwe);
+        decrypter.decrypt(jwe);
 
     }
     
@@ -303,7 +303,7 @@ public class JWETokenDecrypterTest {
             }
         });
         decrypter = new JWETokenDecrypter(params);
-        final JWT decryptedJWE = decrypter.decrypt(jwe);
+        decrypter.decrypt(jwe);
 
     }
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtilTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtilTest.java
index f4d7ed6..9af8860 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtilTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/JWTSignatureValidationUtilTest.java
@@ -29,11 +29,8 @@ import java.util.List;
 import javax.crypto.SecretKey;
 import javax.crypto.spec.SecretKeySpec;
 
-import org.opensaml.profile.action.EventIds;
 import org.opensaml.security.credential.BasicCredential;
 import org.opensaml.security.credential.Credential;
-import org.opensaml.xmlsec.SignatureSigningParameters;
-import org.opensaml.xmlsec.context.SecurityParametersContext;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -79,42 +76,6 @@ public class JWTSignatureValidationUtilTest {
         credentialList = List.of(rsaCredential, ecCredential, sharedCredential, rsaCredentialBasic, ecCredentialBasic);
     }
     
-    @Test
-    public void validateSignature_shouldReturnInvalidSecCfgWhenNoSecCtx() {
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature((SecurityParametersContext)null, null, invalidJwtEventId),
-                EventIds.INVALID_SEC_CFG);
-    }
-    
-    @Test
-    public void validateSignature_shouldReturnInvalidSecCfgWhenNoSecCtxObject() {
-        final SecurityParametersContext secContext = null;
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secContext, null, invalidJwtEventId),
-                EventIds.INVALID_SEC_CFG);
-    }
-
-    @Test
-    public void validateSignature_shouldReturnInvalidSecCfgWhenNoSigningParameters() {
-        SecurityParametersContext secCtx = new SecurityParametersContext();
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secCtx, null, invalidJwtEventId),
-                EventIds.INVALID_SEC_CFG);
-    }
-
-    @Test
-    public void validateSignature_shouldReturnInvalidSecCfgWhenWrongSigningParameters() {
-        SecurityParametersContext secCtx = new SecurityParametersContext();
-        secCtx.setSignatureSigningParameters(new SignatureSigningParameters());
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secCtx, null, invalidJwtEventId),
-                EventIds.INVALID_SEC_CFG);
-    }
-   
-    @Test
-    public void validateSignature_shouldReturnNullWhenValidRSASignature()
-            throws JOSEException, ParseException, NoSuchAlgorithmException {
-        SecurityParametersContext secCtx = initSecurityParamsContext("RS256", rsaCredential);
-        Assert.assertNull(JWTSignatureValidationUtil.validateSignature(secCtx, signRSA(rsaCredential.getPrivateKey()),
-                invalidJwtEventId));
-    }
-
     @Test
     public void validateSignature_shouldReturnNullWhenValidRSASignatureEx()
             throws JOSEException, ParseException, NoSuchAlgorithmException {
@@ -122,15 +83,6 @@ public class JWTSignatureValidationUtilTest {
                 signRSA(rsaCredentialBasic.getPrivateKey()), invalidJwtEventId));
     }
 
-    @Test
-    public void validateSignature_shouldReturnEventIdWhenInvalidRSASignature()
-            throws NoSuchAlgorithmException, JOSEException, ParseException {
-        final BasicJWKCredential anotherRsaCredential = createJWKKeyPairCredential("RSA", "RS256", "mockRSAKey2", 2048);
-        final SecurityParametersContext secCtx = initSecurityParamsContext("RS256", rsaCredential);
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secCtx,
-                signRSA(anotherRsaCredential.getPrivateKey()), invalidJwtEventId), invalidJwtEventId);        
-    }
-
     @Test
     public void validateSignature_shouldReturnEventIdWhenInvalidRSASignatureEx()
             throws NoSuchAlgorithmException, JOSEException, ParseException {
@@ -139,14 +91,6 @@ public class JWTSignatureValidationUtilTest {
                 signRSA(anotherRsaCredential.getPrivateKey()), invalidJwtEventId), invalidJwtEventId);        
     }
 
-    @Test
-    public void validateSignature_shouldReturnNullWhenValidECSignature()
-            throws JOSEException, ParseException, NoSuchAlgorithmException {
-        SecurityParametersContext secCtx = initSecurityParamsContext("ES256", ecCredential);
-        Assert.assertNull(JWTSignatureValidationUtil.validateSignature(secCtx,
-                signEC((ECPrivateKey) ecCredential.getPrivateKey()), invalidJwtEventId));
-    }
-
     @Test
     public void validateSignature_shouldReturnNullWhenValidECSignatureEx()
             throws JOSEException, ParseException, NoSuchAlgorithmException {
@@ -154,15 +98,6 @@ public class JWTSignatureValidationUtilTest {
                 signEC((ECPrivateKey) ecCredentialBasic.getPrivateKey()), invalidJwtEventId));
     }
 
-    @Test
-    public void validateSignature_shouldReturnEventIdWhenInvalidECSignature()
-            throws JOSEException, ParseException, NoSuchAlgorithmException {
-        final BasicJWKCredential anotherEcCredential = createJWKKeyPairCredential("EC", "ES256", "mockECKey2", 256);
-        SecurityParametersContext secCtx = initSecurityParamsContext("ES256", ecCredential);
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secCtx,
-                signEC((ECPrivateKey) anotherEcCredential.getPrivateKey()), invalidJwtEventId), invalidJwtEventId);        
-    }
-
     @Test
     public void validateSignature_shouldReturnEventIdWhenInvalidECSignatureEx()
             throws JOSEException, ParseException, NoSuchAlgorithmException {
@@ -171,36 +106,6 @@ public class JWTSignatureValidationUtilTest {
                 signEC((ECPrivateKey) anotherEcCredential.getPrivateKey()), invalidJwtEventId), invalidJwtEventId);        
     }
 
-    @Test
-    public void validateSignature_shouldReturnNullWhenValidMACSignature() throws JOSEException, ParseException {
-        SecurityParametersContext secCtx = initSecurityParamsContext("HS256", sharedCredential);
-        Assert.assertNull(JWTSignatureValidationUtil.validateSignature(secCtx, 
-                signMAC(sharedCredential.getSecretKey()), invalidJwtEventId));
-    }
-
-    @Test
-    public void validateSignature_shouldReturnEventIdWhenInvalidMACSignature() throws JOSEException, ParseException {
-        SecurityParametersContext secCtx = initSecurityParamsContext("HS256", sharedCredential);
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(secCtx, 
-                signMAC(generateSecretKey()), invalidJwtEventId), invalidJwtEventId);
-        
-    }
-    
-    @Test
-    public void validateSignature_credentialOnly_shouldReturnNullWhenValidMACSignature() 
-            throws JOSEException, ParseException {
-        Assert.assertNull(JWTSignatureValidationUtil.validateSignature(List.of(sharedCredential), 
-                signMAC(sharedCredential.getSecretKey()), invalidJwtEventId));
-    }
-
-    @Test
-    public void validateSignature_credentialOnly_shouldReturnEventIdWhenInvalidMACSignature() 
-            throws JOSEException, ParseException {
-        Assert.assertEquals(JWTSignatureValidationUtil.validateSignature(List.of(sharedCredential), 
-                signMAC(generateSecretKey()), invalidJwtEventId), invalidJwtEventId);
-        
-    }
-
     protected SignedJWT signRSA(final PrivateKey privateKey) throws JOSEException, ParseException {
         final JWSSigner signer = new RSASSASigner(privateKey);
         final JWSObject jwsObject = new JWSObject(new JWSHeader.Builder(JWSAlgorithm.RS256).keyID("mockId").build(),
@@ -264,15 +169,4 @@ public class JWTSignatureValidationUtilTest {
         return SignedJWT.parse(jwsObject.serialize());
     }
     
-    protected SecurityParametersContext initSecurityParamsContext(final String algorithm, 
-            final BasicJWKCredential... credentials) {
-        SecurityParametersContext secCtx = new SecurityParametersContext();
-        OIDCSignatureValidationParameters params = new OIDCSignatureValidationParameters();
-        for (final BasicJWKCredential credential : credentials) {
-            params.getValidationCredentials().add(credential);
-        }
-        params.setSignatureAlgorithm(algorithm);
-        secCtx.setSignatureSigningParameters(params);
-        return secCtx;
-    }
 }
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockEmptyListCredentialResolver.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockEmptyListCredentialResolver.java
index c30434e..fdad84e 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockEmptyListCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockEmptyListCredentialResolver.java
@@ -6,8 +6,8 @@ import java.util.Collections;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.security.credential.CredentialResolver;
 
-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;
 
 /** 
  * A mock version of a credential resolver that returns an empty list, for quick injection into test methods that 
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockFunctionalCredentialResolver.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockFunctionalCredentialResolver.java
index b30b8d3..eaced04 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockFunctionalCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/MockFunctionalCredentialResolver.java
@@ -6,8 +6,8 @@ import java.util.List;
 import org.opensaml.security.credential.Credential;
 
 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;
 
 /** A mock functional version of a credential resolver, for quick injection into test methods that need it.*/
 @FunctionalInterface
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
index a439588..baaa3e7 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest.java
@@ -51,7 +51,7 @@ import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriter
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.oidc.security.jose.impl.BasicEncryptionConfiguration;
 import net.shibboleth.oidc.security.jose.impl.ProviderMetadataDataEncryptionAlgorithmsLookupStrategy;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class ProviderMetadataDataEncryptionAlgorithmsLookupStrategyTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
index 359cc3a..968f52f 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
@@ -51,7 +51,7 @@ import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriter
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.oidc.security.jose.impl.BasicEncryptionConfiguration;
 import net.shibboleth.oidc.security.jose.impl.ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategy;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class ProviderMetadataKeyTransportEncryptionAlgorithmsLookupStrategyTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolverTest.java
index 05c8660..847f14a 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/BasicSignatureSigningParametersResolverTest.java
@@ -32,7 +32,7 @@ import net.shibboleth.oidc.security.credential.DefaultClientSecretCredential;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** Tests for the {@link BasicSignatureSigningParametersResolver}.*/
 public class BasicSignatureSigningParametersResolverTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolverTest.java
index 5103341..82e287f 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/ClientInformationSignatureSigningParametersResolverTest.java
@@ -46,7 +46,7 @@ import net.shibboleth.oidc.jwa.support.SignatureConstants;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class ClientInformationSignatureSigningParametersResolverTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategyTest.java
index 643c2d4..f4fe583 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultDataEncryptionAlgorithmsLookupStrategyTest.java
@@ -34,7 +34,7 @@ import net.shibboleth.oidc.jwa.algorithm.descriptors.EncryptionA192CBCHS384;
 import net.shibboleth.oidc.jwa.algorithm.descriptors.EncryptionA256CBCHS512;
 import net.shibboleth.oidc.jwa.support.EncryptionConstants;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class DefaultDataEncryptionAlgorithmsLookupStrategyTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
index 502c423..07734a7 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultEncryptionParametersResolverTest.java
@@ -57,8 +57,8 @@ import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 import net.shibboleth.oidc.security.jose.EncryptionParameters;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
-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;
 
 public class DefaultEncryptionParametersResolverTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
index 5954d0f..abb98bb 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/DefaultKeyTransportEncryptionAlgorithmsLookupStrategyTest.java
@@ -34,7 +34,7 @@ import net.shibboleth.oidc.jwa.algorithm.descriptors.KeyTransportRSAOAEP256;
 import net.shibboleth.oidc.jwa.algorithm.descriptors.SymmetricKeyWrapA128KW;
 import net.shibboleth.oidc.jwa.support.KeyManagementConstants;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class DefaultKeyTransportEncryptionAlgorithmsLookupStrategyTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolverTest.java
index af1d57d..3266643 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jose/impl/RelyingPartySigningParametersResolverTest.java
@@ -49,8 +49,6 @@ 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.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.jwa.support.SignatureConstants;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.credential.BasicExpiringJWKCredential;
@@ -60,8 +58,11 @@ import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.BasicRelyingPartyConfiguration;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** Tests for RelyingPartyProxySigningParametersResolver.*/
 public class RelyingPartySigningParametersResolverTest {
@@ -82,9 +83,9 @@ public class RelyingPartySigningParametersResolverTest {
     public void setup() throws Exception {   
         prc = new ProfileRequestContext();
         resolver = new RelyingPartySigningParametersResolver(); 
-        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/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidatorTest.java
index 5a42011..8f11731 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ACRClaimsValidatorTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link ACRClaimsValidator}.*/
 public class ACRClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AbstractClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AbstractClaimsValidatorTest.java
index a4c708b..f3e12ef 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AbstractClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AbstractClaimsValidatorTest.java
@@ -23,7 +23,7 @@ import org.springframework.webflow.execution.RequestContext;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * Abstract class for claims validator tests.
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidatorTest.java
index 4a15855..2ffe974 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AccessTokenHashValidatorTest.java
@@ -32,7 +32,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.oauth2.sdk.token.BearerAccessToken;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link AccessTokenHashValidator}.*/
 public class AccessTokenHashValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidatorTest.java
index ed9ca1f..3b6b1cf 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidatorTest.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link AudienceClaimsValidator}. */
 public class AudienceClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationConditionTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationConditionTest.java
index bd697c7..fe36f87 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationConditionTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthTimeRequestedActivationConditionTest.java
@@ -19,7 +19,7 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 public class AuthTimeRequestedActivationConditionTest extends AbstractClaimsValidatorTest {
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidatorTest.java
index e187a2f..f51bd3e 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationAudienceClaimsValidatorTest.java
@@ -31,7 +31,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link AuthenticationAudienceClaimsValidator}. */
 public class AuthenticationAudienceClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidatorTest.java
index 7c32ae9..43819ed 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/AuthenticationTimeClaimsValidatorTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link AuthenticationTimeClaimsValidator}. */
 public class AuthenticationTimeClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidatorTest.java
index 356c695..02ce3e9 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ChainingJWTClaimsValidatorTest.java
@@ -35,7 +35,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import net.shibboleth.oidc.jwt.claims.AbstractClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link ChainingJWTClaimsValidator} class.*/
 public class ChainingJWTClaimsValidatorTest extends AbstractClaimsValidatorTest{
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidatorTest.java
index eeaec68..b74244c 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExactMatchClaimsValidatorTest.java
@@ -25,8 +25,8 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 /** Test for the {@link ExactMatchClaimsValidator}. */
 public class ExactMatchClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidatorTest.java
index d66e2bd..fe3ab16 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ExpiryClaimsValidatorTest.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link ExpiryClaimsValidatorTest}. */
 public class ExpiryClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidatorTest.java
index d796fab..d998a21 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/IssuedAtClaimsValidatorTest.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link IssuedAtClaimsValidator}. */
 public class IssuedAtClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidatorTest.java
index 29bc89e..3b17ca8 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/JWTIdentifierClaimsValidatorTest.java
@@ -23,15 +23,15 @@ import java.util.Date;
 import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.ReplayCache;
 import org.opensaml.storage.impl.MemoryStorageService;
+import org.opensaml.storage.impl.StorageServiceReplayCache;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link JWTIdentifierClaimsValidator}. */
 public class JWTIdentifierClaimsValidatorTest {
@@ -44,7 +44,7 @@ public class JWTIdentifierClaimsValidatorTest {
     @BeforeMethod
     public void setup() throws ComponentInitializationException {
         validator = new JWTIdentifierClaimsValidator();
-        ReplayCache replayCache = new ReplayCache();
+        StorageServiceReplayCache replayCache = new StorageServiceReplayCache();
         MemoryStorageService storageService = new MemoryStorageService();
         storageService.setId("mockId");
         storageService.initialize();
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidatorTest.java
index 70f1245..5ce0081 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/NotBeforeClaimsValidatorTest.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link NotBeforeClaimsValidator}. */
 public class NotBeforeClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidatorTest.java
index a028a9d..f8090f2 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/ProhibitedClaimsValidatorTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link ProhibitedClaimsValidator}. */
 public class ProhibitedClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategyTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategyTest.java
index b6d4e1e..e470aaf 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategyTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequestedEssentialACRClaimsLookupStrategyTest.java
@@ -18,7 +18,7 @@ import com.nimbusds.openid.connect.sdk.claims.ClaimsSetRequest;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link RequestedEssentialACRClaimsLookupStrategy}.*/
 public class RequestedEssentialACRClaimsLookupStrategyTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidatorTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidatorTest.java
index 8fa627c..1fe22de 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidatorTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/jwt/claims/impl/RequiredClaimsValidatorTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.Test;
 import com.nimbusds.jwt.JWTClaimsSet;
 
 import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Test for the {@link RequiredClaimsValidator}. */
 public class RequiredClaimsValidatorTest extends AbstractClaimsValidatorTest {
diff --git a/oidc-common-dist/pom.xml b/oidc-common-dist/pom.xml
index 67a10ad..924bd99 100644
--- a/oidc-common-dist/pom.xml
+++ b/oidc-common-dist/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-dist</artifactId>
diff --git a/oidc-common-metadata-api/pom.xml b/oidc-common-metadata-api/pom.xml
index a6d268d..02eb7f1 100644
--- a/oidc-common-metadata-api/pom.xml
+++ b/oidc-common-metadata-api/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-metadata-api</artifactId>
@@ -20,7 +20,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-service</artifactId>
+            <scope>provided</scope>
+        </dependency>          
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-core</artifactId>
             <scope>provided</scope>
         </dependency>          
@@ -33,7 +38,12 @@
             <groupId>com.nimbusds</groupId>
             <artifactId>oauth2-oidc-sdk</artifactId>
         </dependency>
-    </dependencies>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <scope>provided</scope>
+        </dependency>
+     </dependencies>
     
     <build>
         <plugins>
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/AbstractEvaluableMetadataCriterion.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/AbstractEvaluableMetadataCriterion.java
index b81415d..e4beb3d 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/AbstractEvaluableMetadataCriterion.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/AbstractEvaluableMetadataCriterion.java
@@ -21,8 +21,8 @@ import java.util.function.Predicate;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * Base class for all metadata criterion classes. If the correct object type this criterion accepts is not provided, 
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientInformationResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientInformationResolver.java
index d3b873f..3e6edb0 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientInformationResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientInformationResolver.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.metadata;
 import com.nimbusds.oauth2.sdk.client.ClientInformation;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving {@link ClientInformation} instances which meet certain supplied criteria.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientSecretValueResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientSecretValueResolver.java
index 3edc44f..f7d3b93 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientSecretValueResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ClientSecretValueResolver.java
@@ -17,9 +17,9 @@
 
 package net.shibboleth.oidc.metadata;
 
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving client secret values (as {@link String}s) which meet certain supplied
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
index 350d25c..71ccc9e 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
@@ -23,9 +23,9 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-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.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /** A dynamic version of a {@link BackingStore}.
  * 
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/JSONMetadataResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/JSONMetadataResolver.java
index b7329a0..72123eb 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/JSONMetadataResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/JSONMetadataResolver.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.metadata;
 import java.util.Map;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving {@link Map} instances which meet certain supplied criteria.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MapBasedMetadataResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MapBasedMetadataResolver.java
index 9ff8baa..bbd10de 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MapBasedMetadataResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MapBasedMetadataResolver.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.metadata;
 import java.util.Map;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving Maps which meet certain supplied criteria.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
index a639aee..a8a37a5 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/MetadataManagementData.java
@@ -23,7 +23,7 @@ import java.util.concurrent.locks.StampedLock;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Class that holds management data about an entities metadata.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/OIDCMetadataResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/OIDCMetadataResolver.java
index 05fa270..2f0752d 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/OIDCMetadataResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/OIDCMetadataResolver.java
@@ -17,9 +17,9 @@
 
 package net.shibboleth.oidc.metadata;
 
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 
 /**
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
index 03a6253..41757f1 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
@@ -24,11 +24,10 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Objects;
 
-import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
-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.logic.Constraint;
+import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
 
 /**
  * This class is a sortable container of {@link ProviderMetadataResolver}s, wrapped into a serviceable component.
@@ -57,7 +56,7 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
      * @param key what to set
      */
     public void setSortKey(final int key) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         sortKey = key;
     }
 
@@ -68,7 +67,7 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
      */
     @Nonnull
     public void setEmbeddedResolver(@Nonnull final ProviderMetadataResolver theResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         resolver = Constraint.isNotNull(theResolver, "ProviderMetadataResolver cannot be null");
     }
 
@@ -110,7 +109,7 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
 
     @Override
     public int compareTo(final ProviderMetadataProviderContainer other) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
         final int result = sortKey.compareTo(other.sortKey);
         if (result != 0) {
             return result;
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataResolver.java
index 0beb81a..241b774 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataResolver.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.metadata;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving {@link OIDCProviderMetadata} instances which meet certain supplied criteria.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableClientInformationResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableClientInformationResolver.java
index 6065a9c..320143e 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableClientInformationResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableClientInformationResolver.java
@@ -21,7 +21,7 @@ import java.time.Instant;
 
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Specialization of {@link ClientInformationResolver} that supports on-demand refresh.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableProviderMetadataResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableProviderMetadataResolver.java
index 417dbcc..8e6e129 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableProviderMetadataResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RefreshableProviderMetadataResolver.java
@@ -21,7 +21,7 @@ import java.time.Instant;
 
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Specialization of {@link ProviderMetadataResolver} that supports on-demand refresh.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
index 281170a..7db6071 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
@@ -28,13 +28,12 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Objects;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
 
 /**
  * This class exists primarily to allow the parsing of relying-party.xml to create a serviceable implementation of
@@ -68,7 +67,7 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
      * @param key what to set
      */
     public void setSortKey(final int key) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         sortKey = Integer.valueOf(key);
     }
 
@@ -79,7 +78,7 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
      */
     @Nonnull
     public void setEmbeddedResolver(@Nonnull final ClientInformationResolver theResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         resolver = Constraint.isNotNull(theResolver, "ClientInformationResolver cannot be null");
     }
 
@@ -166,7 +165,7 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
     /** {@inheritDoc} */
     @Override
     public int compareTo(final RelyingPartyClientInformationProvider other) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
         final int result = sortKey.compareTo(other.sortKey);
         if (result != 0) {
             return result;
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/ExpirationTimeContext.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/ExpirationTimeContext.java
index 6e9dbf2..2fd6a82 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/ExpirationTimeContext.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/ExpirationTimeContext.java
@@ -23,7 +23,7 @@ import java.time.Instant;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.Immutable;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Context to hold information pertaining to the computation of a metadata's expiration time.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/MetadataCache.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/MetadataCache.java
index dc097ed..ce06a53 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/MetadataCache.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/cache/MetadataCache.java
@@ -21,9 +21,9 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A cache for loading, storing, and retrieving metadata against against the supplied {@link CriteriaSet}.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientIDCriterion.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientIDCriterion.java
index b08e4fe..01d0f79 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientIDCriterion.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientIDCriterion.java
@@ -21,9 +21,9 @@ import javax.annotation.Nonnull;
 
 import com.nimbusds.oauth2.sdk.id.ClientID;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * A {@link Criterion} representing an OIDC client ID.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientSecretReferenceCriterion.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientSecretReferenceCriterion.java
index 3075a01..076b18e 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientSecretReferenceCriterion.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ClientSecretReferenceCriterion.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.metadata.criterion;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * A {@link Criterion} representing a reference to a client secret.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/IssuerIDCriterion.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/IssuerIDCriterion.java
index 3769823..cc4f334 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/IssuerIDCriterion.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/IssuerIDCriterion.java
@@ -24,9 +24,9 @@ import javax.annotation.concurrent.Immutable;
 
 import com.nimbusds.oauth2.sdk.id.Issuer;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * A {@link Criterion} representing an OIDC issuer ID.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ResourceLocationCriterion.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ResourceLocationCriterion.java
index af0026e..dfa3a25 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ResourceLocationCriterion.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/criterion/ResourceLocationCriterion.java
@@ -21,8 +21,8 @@ import java.util.Objects;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.Criterion;
 
 /**
  * A {@link Criterion} representing a resource location.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/filter/MetadataFilterContext.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/filter/MetadataFilterContext.java
index 0e234f2..be07d5d 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/filter/MetadataFilterContext.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/filter/MetadataFilterContext.java
@@ -17,8 +17,7 @@
 
 package net.shibboleth.oidc.metadata.filter;
 
-
-import net.shibboleth.utilities.java.support.collection.ClassIndexedSet;
+import net.shibboleth.shared.collection.ClassIndexedSet;
 
 /**
  * Class used to provide contextual information at runtime to {@link MetadataFilter} implementations.
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/MetadataPolicyResolver.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/MetadataPolicyResolver.java
index 7a0c068..523750f 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/MetadataPolicyResolver.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/policy/MetadataPolicyResolver.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.metadata.policy;
 
 import java.util.Map;
 
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Resolver;
+import net.shibboleth.shared.component.IdentifiedComponent;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Resolver;
 
 /**
  * A resolver that is capable of resolving map of metadata policies (in the entry values as {@link MetadataPolicy}
diff --git a/oidc-common-metadata-impl/pom.xml b/oidc-common-metadata-impl/pom.xml
index b6a399d..7181cc4 100644
--- a/oidc-common-metadata-impl/pom.xml
+++ b/oidc-common-metadata-impl/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>net.shibboleth.oidc</groupId>
 		<artifactId>oidc-common-parent</artifactId>
-		<version>2.2.2-SNAPSHOT</version>
+		<version>3.0.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>oidc-common-metadata-impl</artifactId>
@@ -27,88 +27,108 @@
             <scope>compile</scope>
         </dependency>
 		<dependency>
-			<groupId>net.shibboleth.ext</groupId>
-			<artifactId>spring-extensions</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-spring</artifactId>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-velocity-spring</artifactId>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-support</artifactId>
 			<scope>provided</scope>
 		</dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-profile-api</artifactId>
             <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-profile-impl</artifactId>
+            <scope>provided</scope>
         </dependency>
 		<dependency>
-			<groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
 			<artifactId>opensaml-profile-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
 			<artifactId>idp-core</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-crypto-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-crypto-impl</artifactId>
 			<scope>provided</scope>
 		</dependency>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-profile-api</artifactId>
             <scope>provided</scope>
         </dependency>
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-metadata-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-saml-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-api</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-attribute-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-resolver-api</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-attribute-resolver-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
 			<artifactId>opensaml-storage-api</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
 			<artifactId>opensaml-saml-impl</artifactId>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
 			<artifactId>opensaml-xmlsec-impl</artifactId>
 			<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>
 		<!-- Test Dependencies -->
 		<dependency>
-			<groupId>net.shibboleth.oidc</groupId>
+            <groupId>${idp.groupId}</groupId>
+			<artifactId>idp-testing</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+            <groupId>${oidc-common.groupId}</groupId>
 			<artifactId>oidc-common-saml-impl</artifactId>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
 			<artifactId>idp-saml-api</artifactId>
 			<scope>test</scope>
 		</dependency>
@@ -124,8 +144,8 @@
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-resolver-spring</artifactId>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-attribute-resolver-spring</artifactId>
 			<scope>test</scope>
 		</dependency>
 		<!-- Needed for Nimbus use in tests. -->
@@ -136,33 +156,19 @@
 		</dependency>
 		<dependency>
 			<groupId>${opensaml.groupId}</groupId>
-			<artifactId>opensaml-core</artifactId>
+			<artifactId>opensaml-testing</artifactId>
 			<version>${opensaml.version}</version>
-			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
 			<artifactId>idp-profile-api</artifactId>
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-core</artifactId>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>net.shibboleth.idp</groupId>
-			<artifactId>idp-attribute-resolver-spring</artifactId>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>net.shibboleth.ext</groupId>
-			<artifactId>spring-extensions</artifactId>
-			<type>test-jar</type>
+            <groupId>${shib-shared.groupId}</groupId>
+			<artifactId>shib-testing</artifactId>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
index 34d6310..b2642f0 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
@@ -44,17 +44,16 @@ import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidc.metadata.filter.MetadataFilterContext;
 import net.shibboleth.oidc.metadata.filter.MetadataSource;
-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.annotation.constraint.Positive;
-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.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.primitive.TimerSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+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.annotation.constraint.Positive;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.primitive.TimerSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 
 /**
@@ -202,8 +201,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
     * @param predicate the predicate.
     */
    public void setMetadataValidPredicate(@Nonnull final Predicate<MetadataType> predicate) {
-       ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-       ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+       ifInitializedThrowUnmodifiabledComponentException();
+       ifDestroyedThrowDestroyedComponentException();
        
       metadataValidPredicate = Constraint.isNotNull(predicate, "Is metadata valid predicate can not be null");
    }
@@ -223,8 +222,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
      * @param strategy the strategy.
      */
     public void setCriteriaToIdentifierStrategy(@Nonnull final Function<CriteriaSet, IdentifierType> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         criteriaToIdentifierStrategy =  
                 Constraint.isNotNull(strategy,"Criteria to identifier strategy can not be null");
@@ -245,8 +244,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
      * @param strategy the strategy.
      */
     public void setIdentifierExtractionStrategy(@Nonnull final Function<MetadataType, IdentifierType> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         identifierExtractionStrategy = Constraint.isNotNull(strategy, "Identifier extraction strategy can not be null");
     }
@@ -267,8 +266,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
      */
     public void setMetadataFilterStrategy(
             @Nonnull final BiFunction<MetadataType, MetadataFilterContext, MetadataType> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         metadataFilterStrategy = Constraint.isNotNull(strategy, "Metadata filter strategy can not be null");
     }
@@ -291,8 +290,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
      */
     public void setMetadataBeforeRemovalHook(
             @Nullable final BiConsumer<List<MetadataType>, IdentifierType> hook) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         metadataBeforeRemovalHook = hook;
     }
@@ -306,8 +305,8 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
      * @param factor delay factor used to compute the next refresh time
      */
     public void setRefreshDelayFactor(@Nonnull final Float factor) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         if (factor <= 0 || factor >= 1) {
             throw new 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
index e50ddaf..def766c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
@@ -30,11 +30,11 @@ import javax.annotation.Nullable;
 import com.google.common.base.Predicates;
 
 import net.shibboleth.oidc.metadata.filter.MetadataFilterContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A based metadata cache builder specification.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
index 1f5825e..c6cf6b7 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
@@ -41,13 +41,12 @@ import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
 import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
-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.Positive;
-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.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A {@link MetadataCache metadata cache} implementation that supports 'refresh-ahead' semantics for batch 
@@ -171,8 +170,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param predicate the predicate.
      */
     public void setSourceMetadataValidPredicate(@Nonnull final Predicate<byte[]> predicate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
        sourceMetadataValidPredicate = 
                Constraint.isNotNull(predicate, "Is source metadata valid predicate can not be null");
@@ -193,8 +192,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param strategy the loading strategy.
      */
     public void setLoadingStrategy(@Nonnull final LoadingStrategy strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         loadingStrategy = Constraint.isNotNull(strategy, "Loading strategy can not be null");
     }
@@ -214,8 +213,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param strategy the parsing strategy.
      */
     public void setParsingStrategy(@Nonnull final Function<byte[], List<MetadataType>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         parsingStrategy = Constraint.isNotNull(strategy, "Parsing strategy can not be null");
     }
@@ -235,8 +234,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param strategy the strategy.
      */
     public void setSourceMetadataExpiryStrategy(@Nonnull final Function<byte[], Instant> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         sourceMetadataExpiryStrategy = 
                 Constraint.isNotNull(strategy, "Source metadata expiry strategy can not be null");
@@ -258,8 +257,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param required does the metadata lookup need to match the given criteria.
      */
     public void setMatchOnIdentifierRequired(final boolean required) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         matchOnIdentifierRequired = required;
     }
@@ -289,8 +288,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param delay minimum amount of time between refreshes
      */
     public void setMinRefreshDelay(@Positive @Nonnull final Duration delay) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         Constraint.isFalse(delay == null || delay.isNegative(), "Minimum refresh delay must be greater than 0");
         minRefreshDelay = delay;
@@ -311,8 +310,8 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
      * @param delay maximum amount of time, in milliseconds, between refresh intervals
      */
     public void setMaxRefreshDelay(@Positive @Nonnull final Duration delay) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         Constraint.isFalse(delay == null || delay.isNegative(), "Maximum refresh delay must be greater than 0");
         maxRefreshDelay = delay;
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
index 5c1ace2..62c2201 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
@@ -30,8 +30,8 @@ import javax.annotation.Nullable;
 import com.google.common.base.Predicates;
 
 import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A specification for building a batch read-ahead metadata cache.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
index f9e58c4..0e560a4 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
@@ -35,7 +35,7 @@ import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
 import net.shibboleth.oidc.metadata.cache.CacheLoadingException;
 import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.impl.ResolverHelper;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Default strategy for loading information from a file.*/
 @ThreadSafe
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
index 888e35e..0c87e02 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
@@ -33,7 +33,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.type.MapType;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Deserializes a UTF-8 JSON string into a Map.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
index bd23885..51f1b15 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 import com.nimbusds.oauth2.sdk.id.Issuer;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** Strategy for extracting the {@link IssuerIDCriterion} from a {@link CriteriaSet}. */
 public class DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy implements Function<CriteriaSet, Issuer> {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
index 05701fc..20b267a 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
@@ -24,7 +24,7 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Simple strategy for computing an expiry time by adding an expiry duration to the current time.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
index bf2d0a4..867a057 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
@@ -47,14 +47,13 @@ import net.shibboleth.oidc.metadata.DynamicBackingStore;
 import net.shibboleth.oidc.metadata.MetadataManagementData;
 import net.shibboleth.oidc.metadata.cache.ExpirationTimeContext;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
-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.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+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.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A metadata cache implementation that supports 'read-through' semantics. Does not support 'refresh-ahead' semantics
@@ -170,8 +169,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param duration the minimum cache duration
      */
     public void setMinCacheDuration(@Nonnull final Duration duration) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         Constraint.isNotNull(duration, "Duration cannot be null");
         Constraint.isFalse(duration.isNegative(), "Duration cannot be negative");
@@ -197,8 +196,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param strategy the strategy used to fetch metadata using a 'read-through' semantic.
      */
     public void setFetchStrategy(@Nonnull final Function<CriteriaSet, MetadataType> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         fetchStrategy = Constraint.isNotNull(strategy, "Dynamic Metadata fetch strategy can not be null");
     }
@@ -209,8 +208,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param delay The initialCleanupTaskDelay to set.
      */
     public void setInitialCleanupTaskDelay(@Nonnull final Duration delay) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         Constraint.isNotNull(delay, "Cleanup task delay can not be null");
         Constraint.isFalse(delay.isNegative() || delay.isZero(), "Cleanup task delay must be positive");
@@ -247,8 +246,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param interval the interval to set
      */
     public void setCleanupTaskInterval(@Nonnull final Duration interval) {    
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         Constraint.isNotNull(interval, "Cleanup task interval may not be null");
         Constraint.isFalse(interval.isNegative() || interval.isZero(), "Cleanup task interval must be positive");
@@ -262,8 +261,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param flag true if idle entity data should be removed, false otherwise
      */
     public void setRemoveIdleEntityData(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         removeIdleEntityData = flag;
     }
     
@@ -276,8 +275,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param max the maximum entity data idle time
      */
     public void setMaxIdleEntityData(@Nonnull final Duration max) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         Constraint.isNotNull(max, "Max idle time cannot be null");
         Constraint.isFalse(max.isNegative(), "Max idle time cannot be negative");
@@ -292,8 +291,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      */
     public void setMetadataExpirationTimeStrategy(
             @Nonnull final Function<ExpirationTimeContext<MetadataType>, Instant> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         metadataExpirationTimeStrategy = Constraint.isNotNull(strategy, "Metadata expiration strategy can not be null");
     }
@@ -374,8 +373,8 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
      * @param baseName the Metrics base name
      */
     public synchronized void setMetricsBaseName(@Nullable final String baseName) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         metricsBaseName = StringSupport.trimOrNull(baseName);
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
index 5c20e47..a2d8aee 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
@@ -26,8 +26,8 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.oidc.metadata.cache.ExpirationTimeContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A specification for building a dynamic read-through metadata cache.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
index dcfc99c..d32d2b5 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
@@ -31,14 +31,13 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
-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.annotation.constraint.NotLive;
-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.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A {@link MetadataCache metadata cache} implementation that does not support reading and writing to
@@ -82,8 +81,8 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
      * @param strategy the strategy used to fetch metadata using a 'read-through' semantic.
      */
     public void setFetchStrategy(@Nonnull final Function<CriteriaSet, MetadataType> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         fetchStrategy = Constraint.isNotNull(strategy, "Dynamic Metadata fetch strategy can not be null");
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
index 7176fb0..81f64d1 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
@@ -23,8 +23,8 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A specification for building a fetch-through metadata cache.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
index 917e5c3..16b0b7a 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.impl.DefaultBatchBackingStore;
 import net.shibboleth.oidc.metadata.impl.DefaultDynamicBackingStore;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * A builder that creates, initializes, and safely publishes the correct {@link MetadataCache metadata cache} 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
index 7953fd0..44c3642 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
@@ -29,15 +29,15 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
 
-import net.shibboleth.ext.spring.resource.PreferFileSystemResourceLoader;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicyResolver;
 import net.shibboleth.oidc.metadata.policy.impl.OIDCMetadataPolicyResolver;
 import net.shibboleth.oidc.profile.config.navigate.ResolverBasedRegistrationMetadataPolicyLookupFunction;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
 
 /**
  * A factory for building a function that resolves maps of metadata policies from the profile request context. The
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractClientSecretValueResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractClientSecretValueResolver.java
index 069e165..e55e7a4 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractClientSecretValueResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractClientSecretValueResolver.java
@@ -18,7 +18,7 @@
 package net.shibboleth.oidc.metadata.impl;
 
 import net.shibboleth.oidc.metadata.ClientSecretValueResolver;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
 
 /**
  * Base class for {@link ClientSecretValueResolver}s.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
index 2725292..ce7e08e 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
@@ -18,6 +18,7 @@
 package net.shibboleth.oidc.metadata.impl;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -28,11 +29,11 @@ import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.methods.HttpGet;
-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.HttpGet;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
 import org.opensaml.security.httpclient.HttpClientSecuritySupport;
 import org.slf4j.Logger;
@@ -42,17 +43,15 @@ import org.slf4j.MDC;
 import com.google.common.base.Strings;
 import com.google.common.net.MediaType;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-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.utilities.java.support.primitive.StringSupport;
-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.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Abstract strategy for fetching metadata dynamically over HTTP.
@@ -93,7 +92,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
     @Nullable private HttpClientSecurityParameters httpClientSecurityParameters;
     
     /** HttpClient ResponseHandler instance to use. */
-    @Nonnull private final ResponseHandler<MetadataType> responseHandler;
+    @Nonnull private final HttpClientResponseHandler<MetadataType> responseHandler;
     
     /**
      * 
@@ -103,7 +102,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
      * @param handler the response handler used to convert the HTTP response to the metadata type.
      */
     protected AbstractDynamicHTTPFetchingStrategy(@Nonnull final HttpClient client, 
-            @Nonnull final ResponseHandler<MetadataType> handler) {
+            @Nonnull final HttpClientResponseHandler<MetadataType> handler) {
         responseHandler = Constraint.isNotNull(handler, "Response handler can not be null");
         httpClient = Constraint.isNotNull(client, "HTTP Client can not be null");
     }
@@ -165,8 +164,8 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
      * @param params the security parameters
      */
     public void setHttpClientSecurityParameters(@Nullable final HttpClientSecurityParameters params) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         httpClientSecurityParameters = params;
     }
@@ -189,8 +188,8 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
      * @param types the new supported content types to set
      */
     public void setSupportedContentTypes(@Nullable final List<String> types) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         if (types == null) {
             supportedContentTypes = Collections.emptyList();
         } else {
@@ -205,7 +204,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
     @Override
     @Nullable public MetadataType apply(@Nonnull final CriteriaSet criteria) {
         log.debug("{} fetching metadata based on criteria: {}", getId(), criteria);
-        final HttpUriRequest request = buildHttpRequest(criteria);
+        final ClassicHttpRequest request = buildHttpRequest(criteria);
         if (request == null) {
             log.debug("Could not build request based on input criteria, unable to query");
             return null;
@@ -214,11 +213,11 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
         final HttpClientContext context = buildHttpClientContext(request);
         
         try {
-            MDC.put(MDC_ATTRIB_CURRENT_REQUEST_URI, request.getURI().toString());
-            final MetadataType result = httpClient.execute(request, responseHandler, context);
-            HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getURI().getScheme());
+            MDC.put(MDC_ATTRIB_CURRENT_REQUEST_URI, request.getUri().toString());
+            final MetadataType result = httpClient.execute(request, context, responseHandler);
+            HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getUri().getScheme());
             return result;
-        } catch (final IOException e) {
+        } catch (final IOException | IllegalArgumentException | URISyntaxException e) {
             log.warn("Unable to fetch metadata from remote HTTP source",e);
             return null;
         } finally {
@@ -233,7 +232,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
     * 
     * @return a new instance of {@link HttpClientContext}
     */
-   private HttpClientContext buildHttpClientContext(@Nonnull final HttpUriRequest request) {
+   private HttpClientContext buildHttpClientContext(@Nonnull final ClassicHttpRequest request) {
        final HttpClientContext context = HttpClientContext.create();
        
        HttpClientSecuritySupport.marshalSecurityParameters(context, httpClientSecurityParameters, true);
@@ -248,7 +247,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
     * @param criteria the input criteria set
     * @return the newly constructed request, or null if it can not be built from the supplied criteria
     */
-   @Nullable private HttpUriRequest buildHttpRequest(@Nonnull final CriteriaSet criteria) {
+   @Nullable private ClassicHttpRequest buildHttpRequest(@Nonnull final CriteriaSet criteria) {
        final String url = buildRequestURL(criteria);
        log.debug("Built request URL of: {}", url);
        
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
index 6bb1c14..fe01570 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
@@ -32,9 +32,8 @@ import org.springframework.core.io.Resource;
 
 import com.nimbusds.oauth2.sdk.id.Identifier;
 
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.ResolverException;
 
 
 /**
@@ -83,8 +82,8 @@ public abstract class AbstractFileOIDCEntityResolver<Key extends Identifier, Val
      * @param file path to the metadata file
      */
     protected void setMetadataFile(@Nonnull final File file) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         metadataFile = Constraint.isNotNull(file, "Metadata file cannot be null");
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
index de3c6ed..9464d3d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
@@ -31,14 +31,12 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Strings;
 import com.nimbusds.oauth2.sdk.id.Identifier;
 
-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.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.utilities.java.support.resolver.Resolver;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A base class for {@link Resolver}s used for resolving entities containing identifiers based on {@link Identifier}. 
@@ -100,8 +98,8 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
      * @param failFast whether problems during initialization should cause the provider to fail
      */
     public void setFailFastInitialization(final boolean failFast) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         failFastInitialization = failFast;
     }
 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
index 4d8644d..a11b13d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
@@ -36,17 +36,16 @@ import net.shibboleth.oidc.metadata.AbstractEvaluableMetadataCriterion;
 import net.shibboleth.oidc.metadata.OIDCMetadataResolver;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.component.DestructableComponent;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.CriterionPredicateRegistry;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.resolver.ResolverSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.DestructableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriterionPredicateRegistry;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.resolver.ResolverSupport;
 
 /**
  * An abstract metadata resolver which supports any type of metadata. 
@@ -107,8 +106,8 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
     
     /** {@inheritDoc} */
     @Override @Nullable public MetadataType resolveSingle(final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final Iterable<MetadataType> iterable = resolve(criteria);
         if (iterable != null) {
@@ -123,8 +122,8 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
     /** {@inheritDoc} */
     @Override
     @Nonnull public Iterable<MetadataType> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
                
         try {            
             final List<MetadataType> metadata = getCache().get(criteria);            
@@ -209,8 +208,8 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
      * @param flag true if must satisfy all, false otherwise
      */
     public void setSatisfyAnyPredicates(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         satisfyAnyPredicates = flag;
     }
     
@@ -229,8 +228,8 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
      * @param registry the registry instance to use
      */
     public void setCriterionPredicateRegistry(@Nullable final CriterionPredicateRegistry<MetadataType> registry) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         criterionPredicateRegistry = registry;
     }
 
@@ -262,8 +261,8 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
      * @param failFast whether problems during initialization should cause the provider to fail
      */
     public void setFailFastInitialization(final boolean failFast) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         failFastInitialization = failFast;
     }
     
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
index a5b69c4..8c7dd58 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
@@ -34,11 +34,10 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.oauth2.sdk.ParseException;
 import com.nimbusds.oauth2.sdk.id.Identifier;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-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.ResolverException;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Base class for metadata providers that cache and periodically refresh their entities.
@@ -135,8 +134,8 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
      * @param delay minimum amount of time between refreshes
      */
     public void setMinRefreshDelay(@Positive @Nonnull final Duration delay) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         Constraint.isFalse(delay == null || delay.isNegative(), "Minimum refresh delay must be greater than 0");
         minRefreshDelay = delay;
@@ -148,8 +147,8 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
      * @param delay maximum amount of time, in milliseconds, between refresh intervals
      */
     public void setMaxRefreshDelay(@Positive @Nonnull final Duration delay) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         Constraint.isFalse(delay == null || delay.isNegative(), "Maximum refresh delay must be greater than 0");
         maxRefreshDelay = delay;
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/BaseStorageServiceClientInformationComponent.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/BaseStorageServiceClientInformationComponent.java
index f5c8402..ae93027 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/BaseStorageServiceClientInformationComponent.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/BaseStorageServiceClientInformationComponent.java
@@ -23,12 +23,11 @@ import org.opensaml.storage.StorageService;
 
 import net.shibboleth.oidc.metadata.ClientInformationManager;
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A base class for {@link ClientInformationManager} and {@link ClientInformationResolver} implementations
@@ -70,7 +69,7 @@ public abstract class BaseStorageServiceClientInformationComponent extends Abstr
      * @param storage the back-end to use
      */
     public void setStorageService(@Nonnull final StorageService storage) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         storageService = Constraint.isNotNull(storage, "StorageService cannot be null");
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
index e8a97f2..0067051 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
@@ -33,14 +33,13 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
 import net.shibboleth.oidc.metadata.RefreshableClientInformationResolver;
-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.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+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.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A client information provider that uses registered resolvers, in turn, to answer queries.
@@ -80,8 +79,8 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
      */
     public void setResolvers(@Nullable @NonnullElements final List<? extends ClientInformationResolver> newResolvers)
             throws ResolverException {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         if (newResolvers == null || newResolvers.isEmpty()) {
             resolvers = Collections.emptyList();
@@ -94,7 +93,7 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
     @Override
     @Nullable public OIDCClientInformation resolveSingle(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
 
         final Iterable<OIDCClientInformation> iterable = resolve(criteria);
         if (iterable != null) {
@@ -110,7 +109,7 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
     @Override
     @Nonnull public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
 
         for (final ClientInformationResolver resolver : resolvers) {
             try {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
index 831bbc7..abb2ba0 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
@@ -33,14 +33,13 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.RefreshableProviderMetadataResolver;
-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.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+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.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A provider metadata provider that uses registered resolvers, in turn, to answer queries.
@@ -80,8 +79,8 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
      */
     public void setResolvers(@Nullable @NonnullElements final List<? extends ProviderMetadataResolver> newResolvers)
             throws ResolverException {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         if (newResolvers == null || newResolvers.isEmpty()) {
             resolvers = Collections.emptyList();
@@ -94,7 +93,7 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
     @Override
     @Nullable public OIDCProviderMetadata resolveSingle(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
 
         final Iterable<OIDCProviderMetadata> iterable = resolve(criteria);
         if (iterable != null) {
@@ -110,7 +109,7 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
     @Override
     @Nonnull public Iterable<OIDCProviderMetadata> resolve(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
 
         for (final ProviderMetadataResolver resolver : resolvers) {
             try {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
index 3cb3f7b..3e1f18d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
@@ -77,11 +77,11 @@ import net.shibboleth.oidc.saml.xmlobject.OAuthRPExtensions;
 import net.shibboleth.oidc.security.CredentialConversionUtil;
 import net.shibboleth.oidc.security.credential.JWKReferenceCredential;
 import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * An implementation of {@link MetadataNodeProcessor} which supports adding an instance of
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
index 3bce8d1..e4cca82 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
@@ -28,10 +28,10 @@ import javax.annotation.concurrent.ThreadSafe;
 
 import net.shibboleth.oidc.metadata.DynamicBackingStore;
 import net.shibboleth.oidc.metadata.MetadataManagementData;
-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.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Default implementation of a {@link DynamicBackingStore}.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
index 3b899de..e50b6be 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
@@ -41,10 +41,9 @@ import net.minidev.json.JSONArray;
 import net.minidev.json.JSONObject;
 import net.shibboleth.oidc.metadata.RefreshableClientInformationResolver;
 import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * An OIDC metadata provider that pulls client metadata from a file on the local filesystem.
@@ -88,8 +87,8 @@ public class FilesystemClientInformationResolver extends AbstractFileOIDCEntityR
     /** {@inheritDoc} */
     @Override
     public Iterable<OIDCClientInformation> resolve(final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final ClientIDCriterion clientIdCriterion = criteria.get(ClientIDCriterion.class);
         if (clientIdCriterion == null || clientIdCriterion.getClientID() == null) {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
index 0736de2..7e64cf8 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
@@ -38,13 +38,12 @@ import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.oauth2.sdk.util.JSONObjectUtils;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.RefreshableProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-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.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * An OIDC metadata provider that pulls provider metadata from a file on the local filesystem.
@@ -96,7 +95,7 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
@@ -106,8 +105,8 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
     @Override
     @Nullable public Iterable<OIDCProviderMetadata> resolve(@Nullable final CriteriaSet criteria)
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final IssuerIDCriterion issuerIdCriterion = criteria.get(IssuerIDCriterion.class);
         if (issuerIdCriterion == null) {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
index 526999a..293f9ec 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
@@ -27,12 +27,11 @@ import javax.annotation.concurrent.Immutable;
 import javax.annotation.concurrent.ThreadSafe;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.util.EntityUtils;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
@@ -42,13 +41,11 @@ import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.net.MediaTypeSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.net.MediaTypeSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A dynamic strategy for fetching OpenID Connect Provider Configuration Metadata from its well-known location
@@ -75,7 +72,7 @@ public class HTTPProviderConfigurationFetchingStrategy
     @Nonnull private BiFunction<Issuer, String, String> wellKnownLocationCompositionStrategy;
 
     protected HTTPProviderConfigurationFetchingStrategy(@Nonnull final HttpClient client,
-            @Nonnull final ResponseHandler<OIDCProviderMetadata> handler) {
+            @Nonnull final HttpClientResponseHandler<OIDCProviderMetadata> handler) {
         super(client, handler);
         wellKnownPath = DEFAULT_OPENID_PROVIDER_WELL_KNOWN_PATH;
         wellKnownLocationCompositionStrategy = new DefaultWellKnownPathCompositionStrategy();
@@ -89,8 +86,8 @@ public class HTTPProviderConfigurationFetchingStrategy
      * @param path the path.
      */
     public void setWellKnownPath(@Nonnull @NotEmpty final String path) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         wellKnownPath = Constraint.isNotEmpty(path, "Well-know path can not be null");
     }
@@ -102,8 +99,8 @@ public class HTTPProviderConfigurationFetchingStrategy
      */
     public void setWellKnownLocationCompositionStrategy(@Nullable final
             BiFunction<Issuer, String, String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         if (strategy != null) {
             wellKnownLocationCompositionStrategy = strategy;
@@ -144,15 +141,15 @@ public class HTTPProviderConfigurationFetchingStrategy
     @Immutable
     @ThreadSafe
     public static final class OIDCProviderMetadataResponseHandler 
-                                                implements ResponseHandler<OIDCProviderMetadata> {        
+                                                implements HttpClientResponseHandler<OIDCProviderMetadata> {        
         
         /** Class logger. */
         @Nonnull private final Logger log = LoggerFactory.getLogger(OIDCProviderMetadataResponseHandler.class);
 
         @Override
-        @Nullable public OIDCProviderMetadata handleResponse(final HttpResponse response) throws IOException {
+        @Nullable public OIDCProviderMetadata handleResponse(final ClassicHttpResponse response) throws IOException {
             
-            final int httpStatusCode = response.getStatusLine().getStatusCode();
+            final int httpStatusCode = response.getCode();
             
             final String currentRequestURI = MDC.get(MDC_ATTRIB_CURRENT_REQUEST_URI);
             
@@ -222,13 +219,9 @@ public class HTTPProviderConfigurationFetchingStrategy
          * @param response the received response
          * @throws ResolverException if the response was not valid, or if there is a fatal error validating the response
          */
-        protected void validateHttpResponse(@Nonnull final HttpResponse response) throws ResolverException {
+        protected void validateHttpResponse(@Nonnull final ClassicHttpResponse response) throws ResolverException {
 
-            String contentTypeValue = null;
-            final Header contentType = response.getEntity().getContentType();
-            if (contentType != null && contentType.getValue() != null) {
-                contentTypeValue = StringSupport.trimOrNull(contentType.getValue());
-            }
+            String contentTypeValue = response.getEntity().getContentType();
             log.debug("Saw raw Content-Type from response header '{}'", contentTypeValue);
             
             if (!MediaTypeSupport.validateContentType(contentTypeValue,Set.of(CONTENT_TYPE), true, false)) {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/JSONMapMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/JSONMapMetadataResolver.java
index fe5aaf9..4d8ce21 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/JSONMapMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/JSONMapMetadataResolver.java
@@ -23,7 +23,7 @@ import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.metadata.JSONMetadataResolver;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Concrete metadata resolver for OIDC Provider configuration metadata resolution.*/
 public class JSONMapMetadataResolver 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCMapBasedMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCMapBasedMetadataResolver.java
index af9deae..3b0c08c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCMapBasedMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCMapBasedMetadataResolver.java
@@ -23,7 +23,7 @@ import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.metadata.MapBasedMetadataResolver;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Concrete metadata resolver for OIDC Provider configuration metadata resolution.*/
 public class OIDCMapBasedMetadataResolver extends AbstractOIDCMetadataResolver<String, Map<String,Object>> 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolver.java
index e119200..82c4196 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolver.java
@@ -24,7 +24,7 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Concrete metadata resolver for OIDC Provider configuration metadata resolution.*/
 public class OIDCProviderMetadataResolver extends AbstractOIDCMetadataResolver<Issuer, OIDCProviderMetadata> 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
index 338c4f0..031ffaa 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
@@ -29,14 +29,13 @@ import org.slf4j.LoggerFactory;
 import org.springframework.core.io.Resource;
 
 import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-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.logic.ConstraintViolationException;
-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.collection.LazySet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A client secret value resolver that fetches the values from the given Properties file.
@@ -55,7 +54,7 @@ public class PropertiesClientSecretValueResolver extends AbstractClientSecretVal
      * @param resource The properties resource containing client secret values.
      */
     public void setResource(@Nonnull final Resource resource) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         propertiesResource = Constraint.isNotNull(resource, "Properties resource cannot be null");
         final Properties properties = new Properties();
         try {
@@ -90,8 +89,8 @@ public class PropertiesClientSecretValueResolver extends AbstractClientSecretVal
     /** {@inheritDoc} */
     @Override
     public @Nullable String resolveSingle(@Nonnull final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final ClientSecretReferenceCriterion criterion = criteria.get(ClientSecretReferenceCriterion.class);
         final Properties properties = new Properties();
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
index 0514180..57c7850 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
@@ -27,14 +27,13 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-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.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
-
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.service.ServiceableComponent;
 
 /**
  * This class uses the service interface to implement {@link ProviderMetadataResolver}.
@@ -60,46 +59,32 @@ public class ReloadingProviderMetadataProvider extends AbstractIdentifiableIniti
 
     @Override
     public Iterable<OIDCProviderMetadata> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ServiceableComponent<ProviderMetadataResolver> component = null;
-        try {
-            component = service.getServiceableComponent();
-            if (null == component) {
-                log.error("ReloadingProviderMetadataProvider '{}': Error accessing underlying source: "
-                        + "Invalid configuration.", getId());
-            } else {
-                final ProviderMetadataResolver resolver = component.getComponent();
-                return resolver.resolve(criteria);
-            }
+        ifNotInitializedThrowUninitializedComponentException();
+
+        try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
+            final ProviderMetadataResolver resolver = component.getComponent();
+            return resolver.resolve(criteria);
         } catch (final ResolverException e) {
             log.error("ProviderMetadataResolver '{}': Error during resolution", getId(), e);
-        } finally {
-            if (null != component) {
-                component.unpinComponent();
-            }
+        } catch (final ServiceException e) {
+            log.error("ReloadingProviderMetadataProvider '{}': Error accessing underlying source: "
+                    + "Invalid configuration.", getId());
         }
         return Collections.emptySet();
     }
 
     @Override
     public OIDCProviderMetadata resolveSingle(@Nonnull final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ServiceableComponent<ProviderMetadataResolver> component = null;
-        try {
-            component = service.getServiceableComponent();
-            if (null == component) {
-                log.error("ReloadingProviderMetadataProvider '{}': Error accessing underlying source: "
-                        + "Invalid configuration.", getId());
-            } else {
-                final ProviderMetadataResolver resolver = component.getComponent();
-                return resolver.resolveSingle(criteria);
-            }
+        ifNotInitializedThrowUninitializedComponentException();
+
+        try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
+            final ProviderMetadataResolver resolver = component.getComponent();
+            return resolver.resolveSingle(criteria);
         } catch (final ResolverException e) {
             log.error("ProviderMetadataResolver '{}': Error during resolution", getId(), e);
-        } finally {
-            if (null != component) {
-                component.unpinComponent();
-            }
+        } catch (final ServiceException e) {
+            log.error("ReloadingProviderMetadataProvider '{}': Error accessing underlying source: "
+                    + "Invalid configuration.", getId());
         }
         return null;
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
index 552e92f..b8b9877 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
@@ -28,13 +28,13 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-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.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.service.ServiceableComponent;
 
 /**
  * This class uses the service interface to implement {@link ClientInformationResolver}.
@@ -62,23 +62,16 @@ public class ReloadingRelyingPartyClientInformationProvider extends AbstractIden
     @Override @Nonnull public Iterable<OIDCClientInformation> resolve(final CriteriaSet criteria) 
             throws ResolverException {
 
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ServiceableComponent<ClientInformationResolver> component = null;
-        try {
-            component = service.getServiceableComponent();
-            if (null == component) {
-                log.error("RelyingPartyClientInformationProvider '{}': Error accessing underlying source: "
-                        + "Invalid configuration.", getId());
-            } else {
-                final ClientInformationResolver resolver = component.getComponent();
-                return resolver.resolve(criteria);
-            }
+        ifNotInitializedThrowUninitializedComponentException();
+
+        try (final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent()) {
+            final ClientInformationResolver resolver = component.getComponent();
+            return resolver.resolve(criteria);
         } catch (final ResolverException e) {
             log.error("RelyingPartyClientInformationProvider '{}': Error during resolution", getId(), e);
-        } finally {
-            if (null != component) {
-                component.unpinComponent();
-            }
+        } catch (final ServiceException e) {
+            log.error("RelyingPartyClientInformationProvider '{}': Error accessing underlying source: "
+                    + "Invalid configuration.", getId());
         }
         return Collections.emptySet();
     }
@@ -87,23 +80,15 @@ public class ReloadingRelyingPartyClientInformationProvider extends AbstractIden
     @Override @Nullable public OIDCClientInformation resolveSingle(final CriteriaSet criteria) 
             throws ResolverException {
 
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ServiceableComponent<ClientInformationResolver> component = null;
-        try {
-            component = service.getServiceableComponent();
-            if (null == component) {
-                log.error("RelyingPartyClientInformationProvider '{}': Error accessing underlying source: "
-                        + "Invalid configuration.", getId());
-            } else {
-                final ClientInformationResolver resolver = component.getComponent();
-                return resolver.resolveSingle(criteria);
-            }
+        ifNotInitializedThrowUninitializedComponentException();
+        try (final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent()) {
+            final ClientInformationResolver resolver = component.getComponent();
+            return resolver.resolveSingle(criteria);
         } catch (final ResolverException e) {
             log.error("RelyingPartyResolver '{}': Error during resolution", getId(), e);
-        } finally {
-            if (null != component) {
-                component.unpinComponent();
-            }
+        } catch (final ServiceException e) {
+            log.error("RelyingPartyClientInformationProvider '{}': Error accessing underlying source: "
+                    + "Invalid configuration.", getId());
         }
         return null;
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverHelper.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverHelper.java
index a4db2b5..7e2b5f2 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverHelper.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverHelper.java
@@ -24,7 +24,7 @@ import java.io.InputStream;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Helper methods for (OIDC) metadata resolution classes.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
index d8e665b..cc7bdb0 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
@@ -36,14 +36,13 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-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.utilities.java.support.service.ReloadableService;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ReloadableService;
 
 /**
  * A client secret value resolver that fetches the values from the given {@link AttributeResolver} service.
@@ -77,7 +76,7 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
      * @param resolver The attribute resolver service used for the client secret value resolution.
      */
     public void setAttributeResolver(@Nonnull final ReloadableService<AttributeResolver> resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         service = Constraint.isNotNull(resolver, "Attribute resolver service can not be null");
     }
     
@@ -96,7 +95,7 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
      * @param ids The list of attribute IDs that may contain the resolved client secret values.
      */
     public void setAttributeIds(@Nonnull final List<String> ids) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         attributeIds = (List<String>) Constraint.isNotEmpty(ids, "The list of attribute ids cannot be empty");
     }
     
@@ -112,8 +111,8 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
     /** {@inheritDoc} */
     @Override
     public @Nonnull Iterable<String> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final ClientSecretReferenceCriterion referenceCriterion = criteria.get(ClientSecretReferenceCriterion.class);
         Constraint.isNotNull(referenceCriterion,
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
index a6298f3..664cea4 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
@@ -37,10 +37,9 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
 import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A {@link ClientInformationResolver} exploiting {@link StorageService} for fetching the stored data.
@@ -60,8 +59,8 @@ public class StorageServiceClientInformationResolver extends BaseStorageServiceC
     @Override
     @Nullable public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria)
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifNotInitializedThrowUninitializedComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         final ClientIDCriterion clientIdCriterion = criteria.get(ClientIDCriterion.class);
         if (clientIdCriterion == null || clientIdCriterion.getClientID() == null) {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
index 47d750c..d47e7c2 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
@@ -35,9 +35,9 @@ import com.nimbusds.oauth2.sdk.auth.Secret;
 import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
 import net.shibboleth.oidc.security.credential.BasicNimbusSecretCredential;
 import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Implementation of {@link org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider} which provides basic support for
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
index 850c618..8d1e661 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
@@ -39,11 +39,11 @@ import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
 import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
 import net.shibboleth.oidc.security.credential.BasicNimbusSecretCredential;
 import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Implementation of {@link org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider} which provides basic support for
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
index 4147740..914a46d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
@@ -45,11 +45,11 @@ import net.shibboleth.oidc.saml.xmlobject.JwksData;
 import net.shibboleth.oidc.security.CredentialConversionUtil;
 import net.shibboleth.oidc.security.credential.BasicJWKCredential;
 import net.shibboleth.oidc.security.credential.JWKCredential;
-import net.shibboleth.utilities.java.support.codec.Base64Support;
-import net.shibboleth.utilities.java.support.codec.DecodingException;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.codec.Base64Support;
+import net.shibboleth.shared.codec.DecodingException;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Implementation of {@link org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider} which provides basic support for
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/JWKSReferenceProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/JWKSReferenceProvider.java
index 4fb9cf1..253fc2f 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/JWKSReferenceProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/JWKSReferenceProvider.java
@@ -36,9 +36,9 @@ import org.slf4j.LoggerFactory;
 import net.shibboleth.oidc.saml.xmlobject.JwksUri;
 import net.shibboleth.oidc.security.credential.BasicJWKReferenceCredential;
 import net.shibboleth.oidc.security.credential.JWKReferenceCredential;
-import net.shibboleth.utilities.java.support.collection.LazySet;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Implementation of {@link org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider} which provides basic support for
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
index 999dda6..4474856 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
@@ -30,8 +30,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.collection.Pair;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.collection.Pair;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 /**
  * <p>A function that applies the given {@link MetadataPolicy} to the given object. The input is given as a {@link
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
index cb7525e..54ba704 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
@@ -25,24 +25,23 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.util.EntityUtils;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-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.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /** The response handler for parsing the metadata policy document into a map. */
 public class DefaultMetadataPolicyResponseHandler extends AbstractIdentifiableInitializableComponent
-        implements ResponseHandler<Map<String, MetadataPolicy>> {        
+        implements HttpClientResponseHandler<Map<String, MetadataPolicy>> {        
     
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(DefaultMetadataPolicyResponseHandler.class);
@@ -56,8 +55,8 @@ public class DefaultMetadataPolicyResponseHandler extends AbstractIdentifiableIn
      * @param strategy What to set.
      */
     public void setParsingStrategy(@Nonnull final Function<byte[], List<Map<String, MetadataPolicy>>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         parsingStrategy = Constraint.isNotNull(strategy, "Parsing strategy cannot be null");
     }
@@ -73,9 +72,9 @@ public class DefaultMetadataPolicyResponseHandler extends AbstractIdentifiableIn
     
     /** {@inheritDoc} */
     @Override
-    @Nullable public Map<String, MetadataPolicy> handleResponse(final HttpResponse response) throws IOException {
+    @Nullable public Map<String, MetadataPolicy> handleResponse(final ClassicHttpResponse response) throws IOException {
         
-        final int httpStatusCode = response.getStatusLine().getStatusCode();
+        final int httpStatusCode = response.getCode();
         
         final String currentRequestURI = 
                 MDC.get(MetadataPolicyViaLocationFetchingStrategy.MDC_ATTRIB_CURRENT_REQUEST_URI);
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
index f58388f..531e89c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.collection.Pair;
+import net.shibboleth.shared.collection.Pair;
 
 /**
  * <p>
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelper.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelper.java
index 07bd800..fd4d7b6 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelper.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelper.java
@@ -27,7 +27,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 /**
  * Static utility methods related to metadata policies.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
index 51feee9..befa71d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
@@ -25,8 +25,8 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.io.FileSystemResource;
@@ -38,11 +38,10 @@ import net.shibboleth.oidc.metadata.cache.impl.DefaultFileLoadingStrategy;
 import net.shibboleth.oidc.metadata.criterion.ResourceLocationCriterion;
 import net.shibboleth.oidc.metadata.impl.AbstractDynamicHTTPFetchingStrategy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-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.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * A fetching strategy that exploits {@link ResourceLocationCriterion} from the given {@link CriteriaSet} to resolve
@@ -67,7 +66,7 @@ public class MetadataPolicyViaLocationFetchingStrategy
      * @param handler the response handler used to convert the HTTP response to the metadata policy.
      */
     public MetadataPolicyViaLocationFetchingStrategy(final HttpClient client,
-            final ResponseHandler<Map<String, MetadataPolicy>> handler) {
+            final HttpClientResponseHandler<Map<String, MetadataPolicy>> handler) {
         super(client, handler);
     }
     
@@ -77,8 +76,8 @@ public class MetadataPolicyViaLocationFetchingStrategy
      * @param strategy What to set.
      */
     public void setParsingStrategy(@Nonnull final Function<byte[], List<Map<String, MetadataPolicy>>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         
         parsingStrategy = Constraint.isNotNull(strategy, "Parsing strategy cannot be null");
     }
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolver.java
index 44569ed..5d66b3c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolver.java
@@ -25,7 +25,7 @@ import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.impl.AbstractOIDCMetadataResolver;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicyResolver;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * Concrete resolver implementation for metadata policy resolution.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
index 11702f1..79ff23e 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
@@ -29,7 +29,7 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.oidc.metadata.impl.ClientInformationNodeProcessor;
 import net.shibboleth.oidc.profile.spring.relyingparty.metadata.impl.MetadataNamespaceHandler;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Parser for a <ClientInformation> node processor.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
index 0860395..4703b58 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
@@ -21,8 +21,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.function.Function;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.springframework.beans.factory.BeanCreationException;
@@ -31,11 +31,12 @@ import org.springframework.context.ApplicationContext;
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
 import net.shibboleth.oidc.metadata.RelyingPartyClientInformationProvider;
 import net.shibboleth.oidc.metadata.impl.ChainingClientInformationResolver;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.service.ServiceException;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.NonnullFunction;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
 
 /**
  * Strategy for summoning up a {@link ClientInformationResolver} from a populated {@link ApplicationContext}.
@@ -46,11 +47,11 @@ import net.shibboleth.utilities.java.support.service.ServiceableComponent;
  * </p>
  */
 public class ClientInformationResolverServiceStrategy extends AbstractIdentifiableInitializableComponent
-        implements Function<ApplicationContext, ServiceableComponent<ClientInformationResolver>> {
+        implements NonnullFunction<ApplicationContext, AbstractServiceableComponent<ClientInformationResolver>> {
 
     /** {@inheritDoc} */
-    @Nullable
-    public ServiceableComponent<ClientInformationResolver> apply(@Nullable final ApplicationContext appContext) {
+	@Nonnull
+    public AbstractServiceableComponent<ClientInformationResolver> apply(@Nullable final ApplicationContext appContext) {
         final Collection<RelyingPartyClientInformationProvider> resolvers =
                 appContext.getBeansOfType(RelyingPartyClientInformationProvider.class).values();
 
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/MetadataNamespaceHandler.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/MetadataNamespaceHandler.java
index b6476df..fd38a62 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/MetadataNamespaceHandler.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/MetadataNamespaceHandler.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.profile.spring.relyingparty.metadata.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler;
 import net.shibboleth.oidc.profile.spring.relyingparty.metadata.filter.impl.ClientInformationParser;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.spring.custom.BaseSpringNamespaceHandler;
 
 /** Namespace handler for <code>urn:mace:shibboleth:2.0:metadata:oidc</code>. */
 public class MetadataNamespaceHandler extends BaseSpringNamespaceHandler {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
index 381c6e9..07e28d5 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
@@ -21,11 +21,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.context.ApplicationContext;
@@ -33,11 +31,12 @@ import org.springframework.context.ApplicationContext;
 import net.shibboleth.oidc.metadata.ProviderMetadataProviderContainer;
 import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.impl.ChainingProviderMetadataResolver;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.service.ServiceException;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.NonnullFunction;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
 
 /**
  * Strategy for summoning up a {@link ProviderMetadataResolver} from a populated {@link ApplicationContext}.
@@ -48,11 +47,11 @@ import net.shibboleth.utilities.java.support.service.ServiceableComponent;
  * </p>
  */
 public class ProviderMetadataResolverServiceStrategy extends AbstractIdentifiableInitializableComponent
-        implements Function<ApplicationContext, ServiceableComponent<ProviderMetadataResolver>> {
+        implements NonnullFunction<ApplicationContext, AbstractServiceableComponent<ProviderMetadataResolver>> {
 
     /** {@inheritDoc} */
-    @Nullable
-    public ServiceableComponent<ProviderMetadataResolver> apply(@Nonnull final ApplicationContext appContext) {
+    @Nonnull
+    public AbstractServiceableComponent<ProviderMetadataResolver> apply(@Nonnull final ApplicationContext appContext) {
         final Collection<ProviderMetadataProviderContainer> containers =
                 appContext.getBeansOfType(ProviderMetadataProviderContainer.class).values();
 
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheTest.java
index 8c0a0e4..d98b139 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheTest.java
@@ -28,7 +28,6 @@ import java.net.URISyntaxException;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
@@ -51,8 +50,8 @@ import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.metadata.impl.DefaultBatchBackingStore;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** Tests for the {@link BatchMetadataCache}.*/
 public class BatchMetadataCacheTest {
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheTest.java
index baad887..f74a579 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheTest.java
@@ -51,8 +51,8 @@ import net.shibboleth.oidc.metadata.MetadataManagementData;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.metadata.impl.DefaultDynamicBackingStore;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** Test for the MetadataCache. */
 public class DynamicMetadataCacheTest {
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheTest.java
index fda2dfb..23091b1 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheTest.java
@@ -21,7 +21,7 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 public class FetchThroughMetadataCacheTest {
     
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilderTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilderTest.java
index 620ffd9..865f3c0 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilderTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilderTest.java
@@ -37,7 +37,7 @@ import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
 import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /** Tests for the {@link MetadataCacheBuilder}.*/
 public class MetadataCacheBuilderTest {
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactoryTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactoryTest.java
index 69c264c..85041ee 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactoryTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactoryTest.java
@@ -29,11 +29,11 @@ import org.springframework.context.support.GenericXmlApplicationContext;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import net.shibboleth.ext.spring.util.AnnotationParameterNameDiscoverer;
 import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
 import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.spring.util.AnnotationParameterNameDiscoverer;
 
 /** Test for MetadataPolicyLookupStrategyFactory.*/
 public class MetadataPolicyLookupStrategyFactoryTest {
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/BaseClientSecretValueResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/BaseClientSecretValueResolverTest.java
index 4d80c1c..2da40f7 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/BaseClientSecretValueResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/BaseClientSecretValueResolverTest.java
@@ -21,11 +21,11 @@ import org.testng.annotations.Test;
 
 import net.shibboleth.oidc.metadata.ClientSecretValueResolver;
 import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.DestroyedComponentException;
-import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.DestroyedComponentException;
+import net.shibboleth.shared.component.UninitializedComponentException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Base unit tests for all implementations of {@link ClientSecretValueResolver}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolverTest.java
index 4473813..8e95b12 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolverTest.java
@@ -15,9 +15,9 @@ import com.nimbusds.oauth2.sdk.id.Issuer;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 public class ChainingProviderMetadataResolverTest {
     
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessorTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessorTest.java
index a983f9d..5b5828d 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessorTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessorTest.java
@@ -62,15 +62,15 @@ import com.nimbusds.openid.connect.sdk.rp.ApplicationType;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
-import net.shibboleth.ext.spring.resource.ResourceHelper;
 import net.shibboleth.oidc.metadata.keyinfo.ext.impl.provider.ClientSecretProvider;
 import net.shibboleth.oidc.metadata.keyinfo.ext.impl.provider.InlineJwksProvider;
 import net.shibboleth.oidc.metadata.keyinfo.ext.impl.provider.JWKSReferenceProvider;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.resource.Resource;
-import net.shibboleth.utilities.java.support.xml.SchemaBuilder;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.resource.Resource;
+import net.shibboleth.shared.spring.resource.ResourceHelper;
+import net.shibboleth.shared.xml.SchemaBuilder;
 
 /**
  * Unit tests for {@link ClientInformationNodeProcessor}.
@@ -113,10 +113,10 @@ public class ClientInformationNodeProcessorTest extends XMLObjectBaseTestCase {
         
     }
     
-    protected SchemaValidationFilter buildSchemaValidationFilter() {
+    protected SchemaValidationFilter buildSchemaValidationFilter() throws ComponentInitializationException {
         final SAMLSchemaBuilder samlSchemaBuilder = new SAMLSchemaBuilder(SAMLSchemaBuilder.SAML1Version.SAML_11);
         final SchemaBuilder schemaBuilder = new SchemaBuilder();
-        schemaBuilder.setResourceResolver(new net.shibboleth.utilities.java.support.xml.ClasspathResolver());
+        schemaBuilder.setResourceResolver(new net.shibboleth.shared.xml.ClasspathResolver());
         final Collection<Resource> schemaResources = new ArrayList<>();
         schemaResources.add(ResourceHelper.of(
                 new ClassPathResource(org.opensaml.saml.common.xml.SAMLConstants.XMLSIG_SCHEMA_LOCATION)));
@@ -126,7 +126,9 @@ public class ClientInformationNodeProcessorTest extends XMLObjectBaseTestCase {
         schemaResources.add(ResourceHelper.of(new ClassPathResource("/schema/saml-metadata-ext-oidcmd.xsd")));
         schemaBuilder.setSchemaResources(schemaResources);
         samlSchemaBuilder.setSchemaBuilder(schemaBuilder);
-        return new SchemaValidationFilter(samlSchemaBuilder);        
+        final SchemaValidationFilter schemaFilter = new SchemaValidationFilter(samlSchemaBuilder);
+        schemaFilter.initialize();
+        return schemaFilter;
     }
     
     @Test
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/DefaultFileLoadingStrategyTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/DefaultFileLoadingStrategyTest.java
index f606368..d983207 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/DefaultFileLoadingStrategyTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/DefaultFileLoadingStrategyTest.java
@@ -54,7 +54,7 @@ public class DefaultFileLoadingStrategyTest {
     public void testFileDoesNotExist() throws IOException {
         final Resource resource = 
                 new ClassPathResource("/net/shibboleth/oidc/metadata/impl/no-file.txt");
-        final DefaultFileLoadingStrategy strategy = new DefaultFileLoadingStrategy(resource);
+        new DefaultFileLoadingStrategy(resource);
     }
     
     @Test
@@ -94,7 +94,7 @@ public class DefaultFileLoadingStrategyTest {
         when(mockFile.getPath()).thenReturn("no path");
 
         final DefaultFileLoadingStrategy strategy = new DefaultFileLoadingStrategy(mockResource);
-        final byte[] loaded = strategy.load(new CacheLoadingContext(null, null));
+        strategy.load(new CacheLoadingContext(null, null));
     }
     
 
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolverTest.java
index f8c99fd..fcdb74b 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolverTest.java
@@ -34,8 +34,8 @@ import com.nimbusds.openid.connect.sdk.OIDCScopeValue;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Unit tests for {@link FilesystemClientInformationResolver}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategyTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategyTest.java
index ea26629..626154e 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategyTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategyTest.java
@@ -18,6 +18,7 @@
 package net.shibboleth.oidc.metadata.impl;
 
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
@@ -25,14 +26,15 @@ import static org.testng.Assert.assertNull;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
+import org.apache.hc.core5.http.protocol.HttpContext;
 import org.mockito.Mockito;
 import org.slf4j.MDC;
 import org.springframework.core.io.ClassPathResource;
@@ -44,7 +46,7 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.metadata.impl.HTTPProviderConfigurationFetchingStrategy.OIDCProviderMetadataResponseHandler;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /** Tests for HTTPProviderConfigurationFetchingStrategy.*/
 public class HTTPProviderConfigurationFetchingStrategyTest {
@@ -52,27 +54,17 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
     
     @Test
     public void testProviderConfigurationLoads_Success() throws Exception {
-        
+        //TODO look closer
         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 var metadata = 
                 new ClassPathResource("/net/shibboleth/oidc/metadata/impl/openid-configuration.json");
         final var metadataAsString = CharStreams.toString(new InputStreamReader(
                 metadata.getInputStream(), StandardCharsets.UTF_8));
         
-        Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(metadataAsString));
-        Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (ResponseHandler) Mockito.any(),
-                (HttpContext) Mockito.any()))
+        Mockito.when(httpClient.execute(any(ClassicHttpRequest.class),any(HttpContext.class),any(HttpClientResponseHandler.class)))
                 .thenReturn(OIDCProviderMetadata.parse(metadataAsString));
         
-        
-        
         final HTTPProviderConfigurationFetchingStrategy strategy = 
                 new HTTPProviderConfigurationFetchingStrategy(httpClient, 
                         new OIDCProviderMetadataResponseHandler());
@@ -89,19 +81,16 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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 BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
         
         final var metadata = 
                 new ClassPathResource("/net/shibboleth/oidc/metadata/impl/openid-configuration.json");
         final var metadataAsString = CharStreams.toString(new InputStreamReader(
                 metadata.getInputStream(), StandardCharsets.UTF_8));
         
-        final var StringEntity = new StringEntity(metadataAsString);
-        StringEntity.setContentType(new BasicHeader("Content-Type", "application/json"));        
-        Mockito.when(httpResponse.getEntity()).thenReturn(StringEntity);
+        final var StringEntity = new StringEntity(metadataAsString, ContentType.APPLICATION_JSON);
+        httpResponse.setEntity(StringEntity);
         
         MDC.put(AbstractDynamicHTTPFetchingStrategy.MDC_ATTRIB_CURRENT_REQUEST_URI, 
                 "https://op.example.com/.well-known/openid-configuration");
@@ -117,19 +106,16 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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 BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
         
         final var metadata = 
                 new ClassPathResource("/net/shibboleth/oidc/metadata/impl/openid-configuration.json");
         final var metadataAsString = CharStreams.toString(new InputStreamReader(
                 metadata.getInputStream(), StandardCharsets.UTF_8));
         
-        final var StringEntity = new StringEntity(metadataAsString);
-        StringEntity.setContentType(new BasicHeader("Content-Type", "application/json"));        
-        Mockito.when(httpResponse.getEntity()).thenReturn(StringEntity);
+        final var StringEntity = new StringEntity(metadataAsString, ContentType.APPLICATION_JSON);
+        httpResponse.setEntity(StringEntity);
         
         MDC.put(AbstractDynamicHTTPFetchingStrategy.MDC_ATTRIB_CURRENT_REQUEST_URI, 
                 "https://wrongissuer.example.com/.well-known/openid-configuration");
@@ -145,10 +131,8 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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(304);        
+        final BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_NOT_MODIFIED);
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
 
         final var handledMetadata = responseHandler.handleResponse(httpResponse);        
         assertNull(handledMetadata);
@@ -160,10 +144,8 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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(500);
+        final BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
 
         final var handledMetadata = responseHandler.handleResponse(httpResponse);        
         assertNull(handledMetadata);
@@ -174,19 +156,16 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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 BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_OK);
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
         
         final var metadata = 
                 new ClassPathResource("/net/shibboleth/oidc/metadata/impl/openid-configuration.json");
         final var metadataAsString = CharStreams.toString(new InputStreamReader(
                 metadata.getInputStream(), StandardCharsets.UTF_8));
         
-        final var StringEntity = new StringEntity(metadataAsString);
-        StringEntity.setContentType(new BasicHeader("Content-Type", "application/xml"));        
-        Mockito.when(httpResponse.getEntity()).thenReturn(StringEntity);
+        final var StringEntity = new StringEntity(metadataAsString, ContentType.APPLICATION_JSON);
+        httpResponse.setEntity(StringEntity);
 
         final var handledMetadata = responseHandler.handleResponse(httpResponse);
         
@@ -199,14 +178,11 @@ public class HTTPProviderConfigurationFetchingStrategyTest {
         
         final OIDCProviderMetadataResponseHandler responseHandler = new OIDCProviderMetadataResponseHandler();
 
-        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 BasicClassicHttpResponse httpResponse =new BasicClassicHttpResponse(HttpStatus.SC_OK);
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
         
-        final var StringEntity = new StringEntity("");
-        StringEntity.setContentType(new BasicHeader("Content-Type", "application/json"));        
-        Mockito.when(httpResponse.getEntity()).thenReturn(StringEntity);
+        final var StringEntity = new StringEntity("", ContentType.APPLICATION_JSON);
+        httpResponse.setEntity(StringEntity);
 
         final var handledMetadata = responseHandler.handleResponse(httpResponse);
         
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCMapMetadataResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCMapMetadataResolverTest.java
index 0028534..f526603 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCMapMetadataResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCMapMetadataResolverTest.java
@@ -48,9 +48,9 @@ import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
 import net.shibboleth.oidc.metadata.cache.impl.BatchMetadataCache;
 import net.shibboleth.oidc.metadata.cache.impl.ManuallyTriggeredScheduledExecutorService;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 //TODO complete tests if we keep this.
 public class OIDCMapMetadataResolverTest {
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolverTest.java
index a4727a7..d4d91ce 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/OIDCProviderMetadataResolverTest.java
@@ -37,16 +37,16 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.http.HttpHeaders;
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.message.BasicHttpResponse;
-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.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.ProtocolVersion;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
+import org.apache.hc.core5.http.protocol.HttpContext;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
@@ -68,10 +68,10 @@ import net.shibboleth.oidc.metadata.cache.impl.DynamicMetadataCache;
 import net.shibboleth.oidc.metadata.cache.impl.ManuallyTriggeredScheduledExecutorService;
 import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
 import net.shibboleth.oidc.metadata.impl.HTTPProviderConfigurationFetchingStrategy.OIDCProviderMetadataResponseHandler;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.Criterion;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.Criterion;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** Tests for the {@link OIDCProviderMetadataResolver} .*/
 public class OIDCProviderMetadataResolverTest {
@@ -231,7 +231,7 @@ public class OIDCProviderMetadataResolverTest {
         // from the execute call.
         httpClient = mock(HttpClient.class);
         when(httpClient.
-                execute(any(HttpUriRequest.class),any(ResponseHandler.class),any(HttpContext.class)))
+                execute(any(ClassicHttpRequest.class) ,any(HttpContext.class),any(HttpClientResponseHandler.class)))
                 .thenReturn(OIDCProviderMetadata.parse(GOOD_PROVIDER_CONFIGURATION_INFO));
         
         
@@ -482,10 +482,10 @@ public class OIDCProviderMetadataResolverTest {
     @Test
     void testResponseHandler_WrongMIMEType() throws IOException {
         final OIDCProviderMetadataResponseHandler handler = new OIDCProviderMetadataResponseHandler();
-        final BasicHttpResponse httpResponse = 
-                new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), HttpStatus.SC_OK, "OK");
-        final ByteArrayEntity entity = new ByteArrayEntity(GOOD_PROVIDER_CONFIGURATION_INFO.getBytes());
-        entity.setContentType(new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/not_json"));
+        final BasicClassicHttpResponse httpResponse = 
+                new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
+        httpResponse.setVersion(new ProtocolVersion("HTTP", 1, 1));
+        final ByteArrayEntity entity = new ByteArrayEntity(GOOD_PROVIDER_CONFIGURATION_INFO.getBytes(), ContentType.APPLICATION_JSON);
         httpResponse.setEntity(entity);
         final OIDCProviderMetadata metadata = handler.handleResponse(httpResponse);
         
@@ -515,7 +515,7 @@ public class OIDCProviderMetadataResolverTest {
         
         // Take down the source and see if it still resolves from the cache.
         when(httpClient.
-                execute(any(HttpUriRequest.class),any(ResponseHandler.class),any(HttpContext.class)))
+                execute(any(HttpUriRequest.class),any(HttpContext.class),any(HttpClientResponseHandler.class)))
                 .thenReturn(null);
         
         final Iterable<OIDCProviderMetadata> foundFromCache = 
@@ -529,7 +529,7 @@ public class OIDCProviderMetadataResolverTest {
         dynCache.initialize();
         
         when(httpClient.
-                execute(any(HttpUriRequest.class),any(ResponseHandler.class),any(HttpContext.class)))
+        		execute(any(HttpUriRequest.class),any(HttpContext.class),any(HttpClientResponseHandler.class)))
                 .thenReturn(null);
         final Iterable<OIDCProviderMetadata> found = 
                 dynResolver.resolve(new CriteriaSet(new IssuerIDCriterion(new Issuer("https://example.oidc.op.org"))));
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolverTest.java
index 0507b48..e4dfbfe 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolverTest.java
@@ -25,10 +25,10 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.UnmodifiableComponentException;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.UnmodifiableComponentException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Unit tests for {@link PropertiesClientSecretValueResolver}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolverTest.java
index 01244ce..5690b7e 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolverTest.java
@@ -39,17 +39,17 @@ import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
 import com.unboundid.ldap.listener.InMemoryListenerConfig;
 import com.unboundid.ldap.sdk.LDAPException;
 
-import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
-import net.shibboleth.ext.spring.config.StringToDurationConverter;
-import net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader;
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
-import net.shibboleth.idp.testing.DatabaseTestingSupport;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.UnmodifiableComponentException;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.service.ReloadableService;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.component.UnmodifiableComponentException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
+import net.shibboleth.shared.spring.config.StringToDurationConverter;
+import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
+import net.shibboleth.shared.testing.DatabaseTestingSupport;
 
 /**
  * Unit tests for {@link ResolverServiceClientSecretValueResolver}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManagerTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManagerTest.java
index 7633e64..33545a2 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManagerTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManagerTest.java
@@ -31,7 +31,7 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
 import net.shibboleth.oidc.metadata.ClientInformationManagerException;
 import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Unit tests for {@link StorageServiceClientInformationManager}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
index e99fb4b..ce2eaf3 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcerTest.java
@@ -24,7 +24,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.collection.Pair;
+import net.shibboleth.shared.collection.Pair;
 
 /**
  * Unit tests for {@link DefaultMetadataPolicyEnforcer}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelperTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelperTest.java
index 8a13c5e..4705e5c 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelperTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyHelperTest.java
@@ -26,7 +26,7 @@ import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
 
 /**
  * Unit tests for {@link MetadataPolicyHelper}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
index 3dc9d4c..1ceb036 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/metadata/policy/impl/OIDCMetadataPolicyResolverTest.java
@@ -36,8 +36,8 @@ import net.shibboleth.oidc.metadata.cache.impl.DefaultJSONMapParsingStrategy;
 import net.shibboleth.oidc.metadata.cache.impl.DefaultSourceMetadataExpirationTimeStrategy;
 import net.shibboleth.oidc.metadata.cache.impl.MetadataCacheBuilder;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
  * Unit tests for {@link OIDCMetadataPolicyResolver}.
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
index 737c10a..bc3dd7c 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadClientResolverServiceConfigurationTest.java
@@ -23,8 +23,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
 
-import javax.servlet.http.HttpServletResponse;
-
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
@@ -32,22 +30,23 @@ import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.Assert;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import net.shibboleth.ext.spring.service.ReloadableSpringService;
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.idp.profile.impl.ReloadServiceConfiguration;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.oidc.metadata.ClientInformationResolver;
 import net.shibboleth.oidc.metadata.RelyingPartyClientInformationProvider;
 import net.shibboleth.oidc.metadata.impl.ChainingClientInformationResolver;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.NonnullSupplier;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.service.ServiceableComponent;
+import net.shibboleth.shared.spring.service.ReloadableSpringService;
 
 /**
  * Unit tests for {@link ClientInformationResolverServiceStrategy}.
@@ -64,7 +63,7 @@ public class ReloadClientResolverServiceConfigurationTest {
     private List<Resource> oneResolver;
     
     private List<Resource> twoResolvers;
-    
+
     @BeforeClass public void setup() throws IOException, ComponentInitializationException {
         oneResolver = new ArrayList<>();
         oneResolver.add(new ClassPathResource("/net/shibboleth/oidc/metadata/impl/oidc-metadata-providers.xml"));
@@ -91,10 +90,12 @@ public class ReloadClientResolverServiceConfigurationTest {
         final Instant time = service.getLastReloadAttemptInstant();
         service.reload();
         Assert.assertNotEquals(time, service.getLastReloadAttemptInstant());
-        final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent();
-        final ClientInformationResolver resolver = component.getComponent();
-        component.unpinComponent();
-        Assert.assertEquals(getChainSize(resolver), 1);
+        try (final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent()) {
+        	final ClientInformationResolver resolver = component.getComponent();
+        	Assert.assertEquals(getChainSize(resolver), 1);
+        } catch (final ServiceException e) {
+        	Assert.fail();
+        }
     }
     
     protected int getChainSize(final ClientInformationResolver resolver) {
@@ -111,10 +112,12 @@ public class ReloadClientResolverServiceConfigurationTest {
         final Instant time = service.getLastReloadAttemptInstant();
         service.reload();
         Assert.assertNotEquals(time, service.getLastReloadAttemptInstant());
-        final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent();
-        final ClientInformationResolver resolver = component.getComponent();
-        component.unpinComponent();
-        Assert.assertEquals(getChainSize(resolver), 2);
+        try (final ServiceableComponent<ClientInformationResolver> component = service.getServiceableComponent()) {
+        	final ClientInformationResolver resolver = component.getComponent();
+        	Assert.assertEquals(getChainSize(resolver), 2);
+        } catch (final ServiceException e) {
+        	Assert.fail();
+        }
     }
 
     @Test(expectedExceptions = ComponentInitializationException.class) public void noResources()
@@ -140,7 +143,7 @@ public class ReloadClientResolverServiceConfigurationTest {
     protected static ReloadServiceConfiguration initializeAction(final ReloadableService<?> reloadableService, 
             final HttpServletResponse response) throws ComponentInitializationException {
         final ReloadServiceConfiguration action = new ReloadServiceConfiguration();
-        action.setHttpServletResponse(response);
+        action.setHttpServletResponseSupplier(NonnullSupplier.of(response));
         action.setServiceLookupStrategy(new Function<ProfileRequestContext,ReloadableService<?>>() {
             public ReloadableService<?> apply(ProfileRequestContext input) {
                 return reloadableService;
@@ -149,9 +152,4 @@ public class ReloadClientResolverServiceConfigurationTest {
         action.initialize();
         return action;
     }
-    
-    @AfterClass public void teardown() {
-        ComponentSupport.destroy(service);
-    }
-
 }
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
index 9adb5dc..7a389df 100644
--- a/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
+++ b/oidc-common-metadata-impl/src/test/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ReloadProviderMetadataResolverServiceConfigurationTest.java
@@ -23,8 +23,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
 
-import javax.servlet.http.HttpServletResponse;
-
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
@@ -32,21 +30,22 @@ import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.Assert;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import net.shibboleth.ext.spring.service.ReloadableSpringService;
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.idp.profile.impl.ReloadServiceConfiguration;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
 import net.shibboleth.oidc.metadata.impl.ChainingProviderMetadataResolver;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.NonnullSupplier;
+import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.shared.service.ServiceException;
+import net.shibboleth.shared.service.ServiceableComponent;
+import net.shibboleth.shared.spring.service.ReloadableSpringService;
 
 /**
  * Unit tests for {@link ProviderMetadataResolverServiceStrategy}.
@@ -61,7 +60,7 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
     private List<Resource> oneResolver;
     
     private List<Resource> twoResolvers;
-    
+
     @BeforeClass public void setup() throws IOException, ComponentInitializationException {
         oneResolver = new ArrayList<>();
         oneResolver.add(new ClassPathResource("/net/shibboleth/oidc/metadata/impl/oidc-provider-metadata-providers.xml"));
@@ -88,10 +87,12 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
         final Instant time = service.getLastReloadAttemptInstant();
         service.reload();
         Assert.assertNotEquals(time, service.getLastReloadAttemptInstant());
-        final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent();
-        final ProviderMetadataResolver resolver = component.getComponent();
-        component.unpinComponent();
-        Assert.assertEquals(getChainSize(resolver), 1);
+        try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
+            final ProviderMetadataResolver resolver = component.getComponent();
+            Assert.assertEquals(getChainSize(resolver), 1);
+        } catch (final ServiceException e) {
+        	Assert.fail();
+        }
     }
     
     protected int getChainSize(final ProviderMetadataResolver resolver) {
@@ -105,10 +106,12 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
         final Instant time = service.getLastReloadAttemptInstant();
         service.reload();
         Assert.assertNotEquals(time, service.getLastReloadAttemptInstant());
-        final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent();
-        final ProviderMetadataResolver resolver = component.getComponent();
-        component.unpinComponent();
-        Assert.assertEquals(getChainSize(resolver), 2);
+        try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
+            final ProviderMetadataResolver resolver = component.getComponent();
+            Assert.assertEquals(getChainSize(resolver), 2);
+        } catch (final ServiceException e) {
+        	Assert.fail();
+        }
     }
 
     @Test(expectedExceptions = ComponentInitializationException.class) public void noResources()
@@ -134,7 +137,7 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
     protected static ReloadServiceConfiguration initializeAction(final ReloadableService<?> reloadableService, 
             final HttpServletResponse response) throws ComponentInitializationException {
         final ReloadServiceConfiguration action = new ReloadServiceConfiguration();
-        action.setHttpServletResponse(response);
+        action.setHttpServletResponseSupplier(NonnullSupplier.of(response));
         action.setServiceLookupStrategy(new Function<ProfileRequestContext,ReloadableService<?>>() {
             public ReloadableService<?> apply(ProfileRequestContext input) {
                 return reloadableService;
@@ -144,8 +147,4 @@ public class ReloadProviderMetadataResolverServiceConfigurationTest {
         return action;
     }
     
-    @AfterClass public void teardown() {
-        ComponentSupport.destroy(service);
-    }
-
 }
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/test/resources/net/shibboleth/oidc/metadata/impl/service.xml b/oidc-common-metadata-impl/src/test/resources/net/shibboleth/oidc/metadata/impl/service.xml
index c25979a..f4119e6 100644
--- a/oidc-common-metadata-impl/src/test/resources/net/shibboleth/oidc/metadata/impl/service.xml
+++ b/oidc-common-metadata-impl/src/test/resources/net/shibboleth/oidc/metadata/impl/service.xml
@@ -10,9 +10,9 @@
                             
     <!-- This BeanPostProcessor auto-sets identifiable beans with the bean name (if not already set). -->
     <bean id="shibboleth.IdentifiableBeanPostProcessor"
-        class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />     
+        class="net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor" />     
                             
-    <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.loader">classpath, string</prop>
@@ -26,7 +26,7 @@
         </property>
     </bean>
     
-    <bean id="shibboleth.ClientSecretValueResolverService" class="net.shibboleth.ext.spring.service.ReloadableSpringService"
+    <bean id="shibboleth.ClientSecretValueResolverService" class="net.shibboleth.shared.spring.service.ReloadableSpringService"
         depends-on="shibboleth.VelocityEngine"
         p:beanPostProcessors-ref="shibboleth.IdentifiableBeanPostProcessor"
         p:failFast="false" p:reloadCheckDelay="0">
diff --git a/oidc-common-plugin/pom.xml b/oidc-common-plugin/pom.xml
index 79f5ec0..6549fa4 100644
--- a/oidc-common-plugin/pom.xml
+++ b/oidc-common-plugin/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>net.shibboleth.oidc</groupId>
 		<artifactId>oidc-common-parent</artifactId>
-		<version>2.2.2-SNAPSHOT</version>
+		<version>3.0.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>oidc-common-plugin</artifactId>
diff --git a/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonModule.java b/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonModule.java
index bee1dde..c484765 100644
--- a/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonModule.java
+++ b/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonModule.java
@@ -19,8 +19,8 @@ package net.shibboleth.oidc.common;
 
 import java.io.IOException;
 
-import net.shibboleth.idp.module.ModuleException;
 import net.shibboleth.idp.module.impl.PluginIdPModule;
+import net.shibboleth.profile.module.ModuleException;
 
 /** OIDC Common module implementation.*/
 public class OIDCCommonModule extends PluginIdPModule {
diff --git a/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonPlugin.java b/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonPlugin.java
index 865ae5d..242de1b 100644
--- a/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonPlugin.java
+++ b/oidc-common-plugin/src/main/java/net/shibboleth/oidc/common/OIDCCommonPlugin.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;
 
 /** OIDC Common plugin implementation.*/
 public class OIDCCommonPlugin extends FirstPartyIdPPlugin{
diff --git a/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/module.properties b/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/module.properties
index 92b7b3c..f83dfa5 100644
--- a/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/module.properties
+++ b/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/module.properties
@@ -1,12 +1,12 @@
 # Properties defining this module.
 
 # Class to Module ID mappings
-net.shibboleth.oidc.common.OIDCCommonModule = idp.oidc.common.3
+net.shibboleth.oidc.common.OIDCCommonModule = idp.oidc.common.4
 
 # Module Owner
-idp.oidc.common.3.plugin = net.shibboleth.oidc.common
+idp.oidc.common.4.plugin = net.shibboleth.oidc.common
 
-idp.oidc.common.3.name = Module to provide common OIDC processing
-idp.oidc.common.3.desc = Module that provides common OIDC processing functions for other plugins to use
-idp.oidc.common.3.url = /OIDCCommon
+idp.oidc.common.4.name = Module to provide common OIDC processing
+idp.oidc.common.4.desc = Module that provides common OIDC processing functions for other plugins to use
+idp.oidc.common.4.url = /OIDCCommon
 
diff --git a/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/plugin.properties b/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/plugin.properties
index 5be8893..ec15040 100644
--- a/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/plugin.properties
+++ b/oidc-common-plugin/src/main/resources/net/shibboleth/oidc/common/plugin.properties
@@ -2,7 +2,7 @@
 
 plugin.id = net.shibboleth.oidc.common
 # Only used when package manifest is not available
-plugin.version = 2.2.2
+plugin.version = 3.0.0
 
 # No prereqs
 #plugin.modules.required =
diff --git a/oidc-common-profile-api/pom.xml b/oidc-common-profile-api/pom.xml
index a28ea8b..c0441b0 100644
--- a/oidc-common-profile-api/pom.xml
+++ b/oidc-common-profile-api/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-profile-api</artifactId>
@@ -19,32 +19,37 @@
 
     <dependencies>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-crypto-api</artifactId>
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-profile-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-saml-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-authn-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-metadata-api</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
index 26962c7..fc1f2b0 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
@@ -20,10 +20,11 @@ package net.shibboleth.oidc.authn.principal;
 import javax.annotation.Nonnull;
 
 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;
+
 import com.google.common.base.MoreObjects;
 
 /** Principal based on a OIDC Authentication Context Class Reference. */
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
index 2ceec92..a062070 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
@@ -20,9 +20,9 @@ package net.shibboleth.oidc.profile.audit;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.idp.profile.IdPAuditFields;
-import net.shibboleth.idp.profile.context.AuditContext;
 import net.shibboleth.idp.saml.profile.SAMLAuditFields;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.profile.context.AuditContext;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * Constants to use for audit logging fields stored in an {@link AuditContext}. 
@@ -30,7 +30,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
  * @since 2.2.0
  */
 public final class AuditFields {
-    
+	
     /** OIDC client ID. */
     @Nonnull @NotEmpty public static final String CLIENT_ID = SAMLAuditFields.SERVICE_PROVIDER;
     
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/JSONSecurityConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/JSONSecurityConfiguration.java
index e685d11..c10092d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/JSONSecurityConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/JSONSecurityConfiguration.java
@@ -19,7 +19,8 @@ package net.shibboleth.oidc.profile.config;
 
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
+import org.opensaml.security.config.BasicSecurityConfiguration;
+
 import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
@@ -31,7 +32,7 @@ import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
  * 
  * @since 2.2.0
  */
-public class JSONSecurityConfiguration extends SecurityConfiguration {
+public class JSONSecurityConfiguration extends BasicSecurityConfiguration {
     
     /** Configuration used when decrypting JWE tokens. */
     @Nullable private DecryptionConfiguration jwtDecryptConfig;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
index 787241f..cb9b194 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
@@ -28,7 +28,7 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Generic configuration for an OIDC 1.0 authentication request.*/
 public interface OIDCAuthenticationProfileConfiguration extends OAuth2AuthorizationProfileConfiguration {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
index 764fc08..9e5fc6a 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
@@ -22,7 +22,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * Configuration of an OIDC 1.0 authentication request.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
index a8c7e94..60e159b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
@@ -25,11 +25,11 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationCodeProducingProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
 
 /** 
  * Configuration of an OIDC 1.0 authentication request.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java
index 764b94e..cd3023b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java
@@ -24,10 +24,10 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NonNegative;
 
 /**
  * Configuration of OpenID Connect Dynamic Client Registration 1.0. 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java
index e7b410f..4c9ebfa 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java
@@ -27,9 +27,9 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-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.Positive;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Positive;
 
 /** 
  * Configuration common to ID Token producing profiles.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java
index 25074c7..122f0cd 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java
@@ -17,7 +17,7 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
 
 /** 
  * Profile configuration for an OpenID Connect Provider Configuration.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java
index f736abc..19c5b31 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java
@@ -22,7 +22,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** Profile configuration generic to all OIDC SSO profiles.*/
 public interface OIDCSSOProfileConfiguration extends OIDCProfileConfiguration {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProviderConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProviderConfiguration.java
index 9b58ff6..de3a25b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProviderConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProviderConfiguration.java
@@ -17,11 +17,11 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2RefreshTokenProducingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenEncryptionProfileConfiguration;
+import net.shibboleth.profile.config.AttributeResolvingProfileConfiguration;
 
 /**
  * Profile configuration for an OIDC SSO Provider.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
index baf974c..101d901 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSORelyingPartyConfiguration.java
@@ -17,9 +17,9 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableClientProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenEncryptionProfileConfiguration;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
 
 /**
  * Profile configuration for an OIDC SSO Client or Relying Party.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfiguration.java
deleted file mode 100644
index c38cdfd..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfiguration.java
+++ /dev/null
@@ -1,133 +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.oidc.profile.config;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.xmlsec.EncryptionConfiguration;
-import org.opensaml.xmlsec.SignatureSigningConfiguration;
-
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
-
-/**
- * Class extends SecurityConfiguration to support separate configuration for various encryption and signature
- * validation operations.
- * 
- * @deprecated use {@link JSONSecurityConfiguration}
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class OIDCSecurityConfiguration extends SecurityConfiguration {
-    
-    /** Configuration used when decrypting request object information. */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    private EncryptionConfiguration requestObjectDecryptConfig;
-    
-    /** Configuration used when validating request object information. */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    private SignatureSigningConfiguration requestObjectSignatureValidationConfig;
-
-    /** Configuration used when validating token endpoint authentication JWT signatures. */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    private SignatureSigningConfiguration tokenEndpointJwtSignatureValidationConfig;
-    
-    /** Configuration used when decrypting JWE tokens. */
-    @Nullable
-    private DecryptionConfiguration jwtDecryptConfig;
-    
-    /**
-     * Get the configuration used when decrypting request object information.
-     * 
-     * @return configuration used when decrypting request object information, or null
-     * 
-     * @deprecated
-     */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    public EncryptionConfiguration getRequestObjectDecryptionConfiguration() {
-        return requestObjectDecryptConfig;
-    }
-    
-   /**
-    * Set the configuration used when decrypting request object information.
-    * 
-    * @param config configuration used when decrypting request object information, or null
-    * 
-    * @deprecated
-    */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    public void setRequestObjectDecryptionConfiguration(@Nullable final EncryptionConfiguration config) {
-        requestObjectDecryptConfig = config;
-    }
-
-   /**
-    * Get the configuration used when validating request object information.
-    * 
-    * @return configuration used when validating request object information, or null
-    * 
-    * @deprecated
-    */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    public SignatureSigningConfiguration getRequestObjectSignatureValidationConfiguration() {
-        return requestObjectSignatureValidationConfig;
-    }
-
-   /**
-    * Set the configuration used when validating request object information.
-    * 
-    * @param config used when validating request object information, or null
-    * 
-    * @deprecated
-    */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    public void setRequestObjectSignatureValidationConfiguration(@Nullable final SignatureSigningConfiguration config) {
-        requestObjectSignatureValidationConfig = config;
-    }
-
-   /**
-    * Get the configuration used when validating token endpoint authentication JWT signatures.
-    * 
-    * @return configuration used when validating token endpoint authentication JWT signatures, or null
-    * 
-    * @deprecated
-    */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    @Nullable
-    public SignatureSigningConfiguration getTokenEndpointJwtSignatureValidationConfiguration() {
-        return tokenEndpointJwtSignatureValidationConfig;
-    }
-
-   /**
-    * Set the configuration used when validating token endpoint authentication JWT signatures.
-    * 
-    * @param config used when validating token endpoint authentication JWT signatures, or null
-    * 
-    * @deprecated
-    */
-    @Deprecated(since="2.2.0", forRemoval=true)
-    public void setTokenEndpointJwtSignatureValidationConfiguration(
-           @Nullable final SignatureSigningConfiguration config) {
-        tokenEndpointJwtSignatureValidationConfig = config;
-    }
-    
-
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java
index 9372ca2..8572940 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java
@@ -24,12 +24,12 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenEncryptionProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenValidatingProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
+import net.shibboleth.profile.config.AttributeResolvingProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
 
 /**
  * Configuration for an OpenID Connect core protocol UserInfo endpoint.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AllowPKCEPlainPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AllowPKCEPlainPredicate.java
index 99933d0..364ad84 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AllowPKCEPlainPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AllowPKCEPlainPredicate.java
@@ -21,10 +21,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.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
index c97836e..dac49f9 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
@@ -22,7 +22,7 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.authn.config.navigate.PostAuthenticationFlowsLookupFunction;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 
 /**
  * A predicate implementation that checks if attribute-release is included in the list of post authentication flows
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AuthorizationCodeFlowEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AuthorizationCodeFlowEnabledPredicate.java
index 878117c..5703d9e 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AuthorizationCodeFlowEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AuthorizationCodeFlowEnabledPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncodeConsentPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncodeConsentPredicate.java
index cf2faf1..cf06926 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncodeConsentPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncodeConsentPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptRequestObjectPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptRequestObjectPredicate.java
index a722e1c..16af7c9 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptRequestObjectPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptRequestObjectPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 
 /** A predicate that determines if the RequestObject JWT should be encrypted based on the profile configuration.*/
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptionOptionalPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptionOptionalPredicate.java
index fa44779..58b945b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptionOptionalPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EncryptionOptionalPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenEncryptionProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EnforceRefreshTokenRotationPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EnforceRefreshTokenRotationPredicate.java
index 8144af5..58d22e7 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EnforceRefreshTokenRotationPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/EnforceRefreshTokenRotationPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ForcePKCEPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ForcePKCEPredicate.java
index 0f1a1ed..7dfe71c 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ForcePKCEPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ForcePKCEPredicate.java
@@ -21,10 +21,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.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 
 /**
  * A predicate implementation that forwards to {@link OIDCSSOProfileConfiguration#isForcePKCE(ProfileRequestContext)}.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/HybridFlowEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/HybridFlowEnabledPredicate.java
index 1ef3e54..0ab818d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/HybridFlowEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/HybridFlowEnabledPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCFlowAwareProfileConfiguration;
 
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ImplicitFlowEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ImplicitFlowEnabledPredicate.java
index a173f88..1cf571b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ImplicitFlowEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/ImplicitFlowEnabledPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IncludeIssuerInAuthenticationResponsePredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IncludeIssuerInAuthenticationResponsePredicate.java
index 760799f..f44ab1e 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IncludeIssuerInAuthenticationResponsePredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IncludeIssuerInAuthenticationResponsePredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IssueIdTokenViaRefreshTokenPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IssueIdTokenViaRefreshTokenPredicate.java
index 2daf563..645b4da 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IssueIdTokenViaRefreshTokenPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/IssueIdTokenViaRefreshTokenPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/RefreshTokensEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/RefreshTokensEnabledPredicate.java
index 6f24a1d..bdf7e0b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/RefreshTokensEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/RefreshTokensEnabledPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/SignRequestObjectPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/SignRequestObjectPredicate.java
index f81f3b6..f6d7f39 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/SignRequestObjectPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/SignRequestObjectPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 
 /** A predicate that determines if the RequestObject JWT should be signed based on the profile configuration.*/
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/UseRequestObjectPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/UseRequestObjectPredicate.java
index b8d9b06..1c51cfa 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/UseRequestObjectPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/UseRequestObjectPredicate.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 
 /** A predicate that determines if a RequestObject JWT should be used based on the profile configuration.*/
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenClaimsSetManipulationStrategyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenClaimsSetManipulationStrategyLookupFunction.java
index 75d3315..6e5905d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenClaimsSetManipulationStrategyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenClaimsSetManipulationStrategyLookupFunction.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.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 
 /**
  * A function that returns
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenLifetimeLookupFunction.java
index bdface3..c66c5ef 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
index a23253e..bae049c 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AccessTokenTypeLookupFunction.java
@@ -21,9 +21,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
 
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AcrClaimAlwaysEssentialLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AcrClaimAlwaysEssentialLookupFunction.java
index 017a854..3cfc924 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AcrClaimAlwaysEssentialLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AcrClaimAlwaysEssentialLookupFunction.java
@@ -21,9 +21,9 @@ 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.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AlwaysIncludedAttributesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AlwaysIncludedAttributesLookupFunction.java
index d6531dc..9064861 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AlwaysIncludedAttributesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AlwaysIncludedAttributesLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AudienceRestrictionsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AudienceRestrictionsLookupFunction.java
index cbdbbaf..f1272c6 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AudienceRestrictionsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AudienceRestrictionsLookupFunction.java
@@ -27,13 +27,13 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.google.common.collect.ImmutableCollection.Builder;
 import com.google.common.collect.ImmutableList;
 
-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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
-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;
 
 /**
  * A function that returns the effective audience restrictions to include in ID tokens, based on combining a relying
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthorizationCodeClaimsSetManipulationStrategyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthorizationCodeClaimsSetManipulationStrategyLookupFunction.java
index 98d5165..3a5511f 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthorizationCodeClaimsSetManipulationStrategyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthorizationCodeClaimsSetManipulationStrategyLookupFunction.java
@@ -24,9 +24,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationCodeProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthzCodeLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthzCodeLifetimeLookupFunction.java
index 6c9a411..5137145 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthzCodeLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/AuthzCodeLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationCodeProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClaimsValidatorLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClaimsValidatorLookupFunction.java
index 358b3bd..cf315cd 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClaimsValidatorLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClaimsValidatorLookupFunction.java
@@ -21,9 +21,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableProfileConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
index a530389..12be56b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
@@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
-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 {@link String}. May be {@code null} if the value is not found or the 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DataEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DataEncryptionAlgorithmsLookupFunction.java
deleted file mode 100644
index c0b4292..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DataEncryptionAlgorithmsLookupFunction.java
+++ /dev/null
@@ -1,59 +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.oidc.profile.config.navigate;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.EncryptionConfiguration;
-
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-
-/**
- * A function that returns {@link EncryptionConfiguration#getDataEncryptionAlgorithms()} if it is available in the
- * security configuration of the profile configuration. The profile configuration is fetched from the
- * {@link RelyingPartyContext} obtained via a lookup function, by default a child of the {@link ProfileRequestContext}.
- * 
- * <p>
- * If a specific setting is unavailable, an empty list is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class DataEncryptionAlgorithmsLookupFunction extends AbstractRelyingPartyLookupFunction<List<String>> {
-
-    /** {@inheritDoc} */
-    @Nullable
-    public List<String> apply(@Nullable final ProfileRequestContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final EncryptionConfiguration encryptionConfig =
-                    rpc.getProfileConfig().getSecurityConfiguration(input).getEncryptionConfiguration();
-            if (encryptionConfig != null && encryptionConfig.getDataEncryptionAlgorithms() != null) {
-                return encryptionConfig.getDataEncryptionAlgorithms();
-            }
-        }
-        return Collections.emptyList();
-    }
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DeniedUserInfoAttributesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DeniedUserInfoAttributesLookupFunction.java
index f665127..fb9c4c3 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DeniedUserInfoAttributesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/DeniedUserInfoAttributesLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCUserInfoConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/EncodedAttributesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/EncodedAttributesLookupFunction.java
index b6bd03d..e6aebd4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/EncodedAttributesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/EncodedAttributesLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/GrantTypesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/GrantTypesLookupFunction.java
index 417a581..873204d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/GrantTypesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/GrantTypesLookupFunction.java
@@ -26,9 +26,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.oauth2.sdk.GrantType;
 
-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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenLifetimeLookupFunction.java
index 195c7ce..644e599 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenManipulationStrategyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenManipulationStrategyLookupFunction.java
index 6b4225a..671e6fa 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenManipulationStrategyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IDTokenManipulationStrategyLookupFunction.java
@@ -24,9 +24,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IssuedClaimsValidatorLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IssuedClaimsValidatorLookupFunction.java
index bce349c..d88ba16 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IssuedClaimsValidatorLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/IssuedClaimsValidatorLookupFunction.java
@@ -21,9 +21,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenValidatingProfileConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
index cf1ce80..51e5302 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
@@ -24,10 +24,10 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
index 2bf9452..6c3080c 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
@@ -24,10 +24,10 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
index 9dd87ea..e042b1b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
@@ -30,8 +30,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
-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;
 
 /**
  * Strategy to locate the set of JWK credentials to publish in a KeySet document.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
index 0e16f82..c0c0c88 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
@@ -24,10 +24,10 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTDecryptionConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTDecryptionConfigurationLookupFunction.java
index f29b3e5..460a60c 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTDecryptionConfigurationLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTDecryptionConfigurationLookupFunction.java
@@ -23,12 +23,12 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.config.navigate.AbstractDefaultSecurityConfigurationLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
 
@@ -43,7 +43,7 @@ import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
  * @since 2.2.0
  */
 public class JWTDecryptionConfigurationLookupFunction 
-            extends AbstractRelyingPartyLookupFunction<List<DecryptionConfiguration>> {
+            extends AbstractDefaultSecurityConfigurationLookupFunction<List<DecryptionConfiguration>> {
 
     /** A resolver for default security configurations. */
     @Nullable
@@ -82,9 +82,7 @@ public class JWTDecryptionConfigurationLookupFunction
 
         // Check for a per-profile default (relying party independent) config.
         if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(
-                            input.getProfileId());
+            final SecurityConfiguration defaultConfig = getDefaultSecurityConfiguration(rpc.getConfiguration(), input);
             if (defaultConfig instanceof JSONSecurityConfiguration
                     && ((JSONSecurityConfiguration) defaultConfig)
                     .getJwtDecryptionConfiguration() != null) {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTEncryptionConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTEncryptionConfigurationLookupFunction.java
index ab2e559..53fe7be 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTEncryptionConfigurationLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTEncryptionConfigurationLookupFunction.java
@@ -23,12 +23,12 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.config.navigate.AbstractDefaultSecurityConfigurationLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 
@@ -43,7 +43,7 @@ import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
  * @since 2.2.0
  */
 public class JWTEncryptionConfigurationLookupFunction 
-            extends AbstractRelyingPartyLookupFunction<List<EncryptionConfiguration>> {
+            extends AbstractDefaultSecurityConfigurationLookupFunction<List<EncryptionConfiguration>> {
 
     /** A resolver for default security configurations. */
     @Nullable
@@ -78,8 +78,7 @@ public class JWTEncryptionConfigurationLookupFunction
 
         // Check for a per-profile default (relying party independent) config.
         if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(input.getProfileId());
+            final SecurityConfiguration defaultConfig = getDefaultSecurityConfiguration(rpc.getConfiguration(), input);
             if (defaultConfig instanceof JSONSecurityConfiguration
                     && ((JSONSecurityConfiguration) defaultConfig)
                     .getJwtEncryptionConfiguration() != null) {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureSigningConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureSigningConfigurationLookupFunction.java
index d3425b7..bf0bfd2 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureSigningConfigurationLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureSigningConfigurationLookupFunction.java
@@ -23,12 +23,12 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.config.navigate.AbstractDefaultSecurityConfigurationLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 
@@ -43,7 +43,7 @@ import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
  * @since 2.2.0
  */
 public class JWTSignatureSigningConfigurationLookupFunction 
-            extends AbstractRelyingPartyLookupFunction<List<SignatureSigningConfiguration>> {
+            extends AbstractDefaultSecurityConfigurationLookupFunction<List<SignatureSigningConfiguration>> {
 
     /** A resolver for default security configurations. */
     @Nullable
@@ -78,8 +78,7 @@ public class JWTSignatureSigningConfigurationLookupFunction
 
         // Check for a per-profile default (relying party independent) config.
         if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(input.getProfileId());
+            final SecurityConfiguration defaultConfig = getDefaultSecurityConfiguration(rpc.getConfiguration(), input);
             if (defaultConfig instanceof JSONSecurityConfiguration
                     && ((JSONSecurityConfiguration) defaultConfig)
                     .getJwtSignatureSigningConfiguration() != null) {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureValidationConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureValidationConfigurationLookupFunction.java
index 9167e52..338f279 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureValidationConfigurationLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWTSignatureValidationConfigurationLookupFunction.java
@@ -23,12 +23,12 @@ import java.util.List;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.config.navigate.AbstractDefaultSecurityConfigurationLookupFunction;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
 
@@ -43,7 +43,7 @@ import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
  * @since 2.2.0
  */
 public class JWTSignatureValidationConfigurationLookupFunction 
-            extends AbstractRelyingPartyLookupFunction<List<SignatureValidationConfiguration>> {
+            extends AbstractDefaultSecurityConfigurationLookupFunction<List<SignatureValidationConfiguration>> {
 
     /** A resolver for default security configurations. */
     @Nullable
@@ -82,9 +82,7 @@ public class JWTSignatureValidationConfigurationLookupFunction
 
         // Check for a per-profile default (relying party independent) config.
         if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(
-                            input.getProfileId());
+            final SecurityConfiguration defaultConfig = getDefaultSecurityConfiguration(rpc.getConfiguration(), input);
             if (defaultConfig instanceof JSONSecurityConfiguration
                     && ((JSONSecurityConfiguration) defaultConfig)
                     .getJwtSignatureValidationConfiguration() != null) {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/KeyTransportEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/KeyTransportEncryptionAlgorithmsLookupFunction.java
deleted file mode 100644
index 1dfe21e..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/KeyTransportEncryptionAlgorithmsLookupFunction.java
+++ /dev/null
@@ -1,59 +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.oidc.profile.config.navigate;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.EncryptionConfiguration;
-
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-
-/**
- * A function that returns {@link EncryptionConfiguration#getKeyTransportEncryptionAlgorithms()} if it is available in
- * the security configuration of the profile configuration. The profile configuration is fetched from the
- * {@link RelyingPartyContext} obtained via a lookup function, by default a child of the {@link ProfileRequestContext}.
- * 
- * <p>
- * If a specific setting is unavailable, an empty list is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class KeyTransportEncryptionAlgorithmsLookupFunction extends AbstractRelyingPartyLookupFunction<List<String>> {
-
-    /** {@inheritDoc} */
-    @Nullable
-    public List<String> apply(@Nullable final ProfileRequestContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final EncryptionConfiguration encryptionConfig =
-                    rpc.getProfileConfig().getSecurityConfiguration(input).getEncryptionConfiguration();
-            if (encryptionConfig != null && encryptionConfig.getKeyTransportEncryptionAlgorithms() != null) {
-                return encryptionConfig.getKeyTransportEncryptionAlgorithms();
-            }
-        }
-        return Collections.emptyList();
-    }
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/MessageContextLookupFunctionAdaptor.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/MessageContextLookupFunctionAdaptor.java
index 48ef6fb..b7d88e4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/MessageContextLookupFunctionAdaptor.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/MessageContextLookupFunctionAdaptor.java
@@ -27,7 +27,7 @@ import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.context.navigate.RecursiveTypedParentContextLookup;
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Adaptor function that allows a profile request context lookup function to work inside a message handler.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
index aaef502..d4b2031 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
@@ -30,8 +30,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 values for the configured key as {@link String}. May return an empty list 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
index ffded26..bb23bae 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
@@ -33,7 +33,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
 
 /**
  * Implements a set of default logic for determining the custom principals to derive the
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
index f3c9c0d..e534799 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
@@ -31,9 +31,9 @@ import javax.annotation.concurrent.ThreadSafe;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Implements a set of logic for determining the principals to use from OIDC 'amr' or 'acr' claims.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenChainLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenChainLifetimeLookupFunction.java
index 9494f42..d3a5cdd 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenChainLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenChainLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2RefreshTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenClaimsSetManipulationStrategyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenClaimsSetManipulationStrategyLookupFunction.java
index 2fb9ca7..c16c877 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenClaimsSetManipulationStrategyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenClaimsSetManipulationStrategyLookupFunction.java
@@ -24,9 +24,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenLifetimeLookupFunction.java
index 845148e..4415127 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2RefreshTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenTimeoutLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenTimeoutLookupFunction.java
index 17b9575..d8d27c4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenTimeoutLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RefreshTokenTimeoutLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2RefreshTokenProducingProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationMetadataPolicyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationMetadataPolicyLookupFunction.java
index 314fc86..9760277 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationMetadataPolicyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationMetadataPolicyLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationValidityPeriodLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationValidityPeriodLookupFunction.java
index 63011be..4d15247 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationValidityPeriodLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RegistrationValidityPeriodLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectDecryptionConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectDecryptionConfigurationLookupFunction.java
deleted file mode 100644
index ee047c1..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectDecryptionConfigurationLookupFunction.java
+++ /dev/null
@@ -1,92 +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.oidc.profile.config.navigate;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
-import net.shibboleth.oidc.profile.config.OIDCSecurityConfiguration;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.EncryptionConfiguration;
-
-/**
- * A function that returns a {@link EncryptionConfiguration} list for request object decryption by way of various lookup
- * strategies.
- * 
- * <p>
- * If a specific setting is unavailable, a null value is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class RequestObjectDecryptionConfigurationLookupFunction
-        extends AbstractRelyingPartyLookupFunction<List<EncryptionConfiguration>> {
-
-    /** A resolver for default security configurations. */
-    @Nullable
-    private RelyingPartyConfigurationResolver rpResolver;
-
-    /**
-     * Set the resolver for default security configurations.
-     * 
-     * @param resolver the resolver to use
-     */
-    public void setRelyingPartyConfigurationResolver(@Nullable final RelyingPartyConfigurationResolver resolver) {
-        rpResolver = resolver;
-    }
-
-    /** {@inheritDoc} */
-    @Nullable
-    public List<EncryptionConfiguration> apply(@Nullable final ProfileRequestContext input) {
-
-        final List<EncryptionConfiguration> configs = new ArrayList<>();
-
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc.getSecurityConfiguration(input) instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                            .getRequestObjectDecryptionConfiguration() != null) {
-                configs.add(((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                        .getRequestObjectDecryptionConfiguration());
-            }
-        }
-
-        // Check for a per-profile default (relying party independent) config.
-        if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(input.getProfileId());
-            if (defaultConfig instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) defaultConfig).getRequestObjectDecryptionConfiguration() != null) {
-                configs.add(((OIDCSecurityConfiguration) defaultConfig).getRequestObjectDecryptionConfiguration());
-            }
-        }
-        // TODO: Add Support for global default ?
-        return configs;
-    }
-
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectSignatureValidationConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectSignatureValidationConfigurationLookupFunction.java
deleted file mode 100644
index dbabdab..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RequestObjectSignatureValidationConfigurationLookupFunction.java
+++ /dev/null
@@ -1,93 +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.oidc.profile.config.navigate;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
-import net.shibboleth.oidc.profile.config.OIDCSecurityConfiguration;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.SignatureSigningConfiguration;
-
-/**
- * A function that returns a {@link SignatureSigningConfiguration} list for request object signature validation by way
- * of various lookup strategies.
- * 
- * <p>
- * If a specific setting is unavailable, a null value is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class RequestObjectSignatureValidationConfigurationLookupFunction
-        extends AbstractRelyingPartyLookupFunction<List<SignatureSigningConfiguration>> {
-
-    /** A resolver for default security configurations. */
-    @Nullable
-    private RelyingPartyConfigurationResolver rpResolver;
-
-    /**
-     * Set the resolver for default security configurations.
-     * 
-     * @param resolver the resolver to use
-     */
-    public void setRelyingPartyConfigurationResolver(@Nullable final RelyingPartyConfigurationResolver resolver) {
-        rpResolver = resolver;
-    }
-
-    /** {@inheritDoc} */
-    @Nullable
-    public List<SignatureSigningConfiguration> apply(@Nullable final ProfileRequestContext input) {
-
-        final List<SignatureSigningConfiguration> configs = new ArrayList<>();
-
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc != null && pc.getSecurityConfiguration(input) instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                            .getRequestObjectSignatureValidationConfiguration() != null) {
-                configs.add(((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                        .getRequestObjectSignatureValidationConfiguration());
-            }
-        }
-
-        // Check for a per-profile default (relying party independent) config.
-        if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(input.getProfileId());
-            if (defaultConfig instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) defaultConfig)
-                    .getRequestObjectSignatureValidationConfiguration() != null) {
-                configs.add(
-                        ((OIDCSecurityConfiguration) defaultConfig).getRequestObjectSignatureValidationConfiguration());
-            }
-        }
-        // TODO: Support for Global Default configuration?
-        return configs;
-    }
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
index ed329a7..c3765e4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
@@ -27,11 +27,11 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicyResolver;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * A lookup function for the map of {@link MetadataPolicy} objects, resolved via configurable
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
index bb9d678..64f457b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationMethodLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationMethodLookupFunction.java
index 355af53..61916a8 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationMethodLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationMethodLookupFunction.java
@@ -21,9 +21,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration.OAuth2TokenRevocationMethod;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SecretExpirationPeriodLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SecretExpirationPeriodLookupFunction.java
index fbe17b0..bb175de 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SecretExpirationPeriodLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SecretExpirationPeriodLookupFunction.java
@@ -23,9 +23,9 @@ 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.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SignatureAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SignatureAlgorithmsLookupFunction.java
deleted file mode 100644
index dc338d5..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/SignatureAlgorithmsLookupFunction.java
+++ /dev/null
@@ -1,59 +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.oidc.profile.config.navigate;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.SignatureSigningConfiguration;
-
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-
-/**
- * A function that returns {@link SignatureSigningConfiguration#getSignatureAlgorithms()} if it is available in the
- * security configuration of the profile configuration. The profile configuration is fetched from the
- * {@link RelyingPartyContext} obtained via a lookup function, by default a child of the {@link ProfileRequestContext}.
- * 
- * <p>
- * If a specific setting is unavailable, an empty list is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class SignatureAlgorithmsLookupFunction extends AbstractRelyingPartyLookupFunction<List<String>> {
-
-    /** {@inheritDoc} */
-    @Nullable
-    public List<String> apply(@Nullable final ProfileRequestContext input) {
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final SignatureSigningConfiguration sigConfig =
-                    rpc.getProfileConfig().getSecurityConfiguration(input).getSignatureSigningConfiguration();
-            if (sigConfig != null && sigConfig.getSignatureAlgorithms() != null) {
-                return sigConfig.getSignatureAlgorithms();
-            }
-        }
-        return Collections.emptyList();
-    }
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointAuthMethodLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointAuthMethodLookupFunction.java
index 0750b20..e3bc729 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointAuthMethodLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointAuthMethodLookupFunction.java
@@ -26,9 +26,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 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.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.profile.config.ProfileConfiguration;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableProfileConfiguration;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointJwtSignatureValidationConfigurationLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointJwtSignatureValidationConfigurationLookupFunction.java
deleted file mode 100644
index 6e01061..0000000
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/TokenEndpointJwtSignatureValidationConfigurationLookupFunction.java
+++ /dev/null
@@ -1,92 +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.oidc.profile.config.navigate;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-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.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
-import net.shibboleth.oidc.profile.config.OIDCSecurityConfiguration;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.xmlsec.SignatureSigningConfiguration;
-
-/**
- * A function that returns a {@link SignatureSigningConfiguration} list for token endpoint JWT signature validation by
- * way of various lookup strategies.
- * 
- * <p>
- * If a specific setting is unavailable, a null value is returned.
- * </p>
- * 
- * @deprecated
- */
- at Deprecated(since="2.2.0", forRemoval=true)
-public class TokenEndpointJwtSignatureValidationConfigurationLookupFunction
-        extends AbstractRelyingPartyLookupFunction<List<SignatureSigningConfiguration>> {
-
-    /** A resolver for default security configurations. */
-    @Nullable private RelyingPartyConfigurationResolver rpResolver;
-
-    /**
-     * Set the resolver for default security configurations.
-     * 
-     * @param resolver the resolver to use
-     */
-    public void setRelyingPartyConfigurationResolver(@Nullable final RelyingPartyConfigurationResolver resolver) {
-        rpResolver = resolver;
-    }
-
-    /** {@inheritDoc} */
-    @Nullable public List<SignatureSigningConfiguration> apply(@Nullable final ProfileRequestContext input) {
-
-        final List<SignatureSigningConfiguration> configs = new ArrayList<>();
-
-        final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null) {
-            final ProfileConfiguration pc = rpc.getProfileConfig();
-            if (pc.getSecurityConfiguration(input) instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                            .getTokenEndpointJwtSignatureValidationConfiguration() != null) {
-                configs.add(((OIDCSecurityConfiguration) pc.getSecurityConfiguration(input))
-                        .getTokenEndpointJwtSignatureValidationConfiguration());
-            }
-        }
-
-        // Check for a per-profile default (relying party independent) config.
-        if (input != null && rpResolver != null) {
-            final SecurityConfiguration defaultConfig =
-                    rpResolver.getDefaultSecurityConfiguration(input.getProfileId());
-            if (defaultConfig instanceof OIDCSecurityConfiguration
-                    && ((OIDCSecurityConfiguration) defaultConfig).
-                        getTokenEndpointJwtSignatureValidationConfiguration() != null) {
-                configs.add(
-                        ((OIDCSecurityConfiguration) defaultConfig).
-                            getTokenEndpointJwtSignatureValidationConfiguration());
-            }
-        }
-        // TODO: Support for Global Default configuration?
-        return configs;
-    }
-}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OAuthAuthorizationRequest.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OAuthAuthorizationRequest.java
index f4028b2..3bf7bff 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OAuthAuthorizationRequest.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OAuthAuthorizationRequest.java
@@ -28,7 +28,7 @@ import com.nimbusds.oauth2.sdk.Scope;
 import com.nimbusds.oauth2.sdk.id.ClientID;
 import com.nimbusds.oauth2.sdk.id.State;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * An OAuth 2.0 authorization request.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
index ee4f25a..eb57fbb 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OIDCAuthenticationRequest.java
@@ -35,9 +35,9 @@ import com.nimbusds.openid.connect.sdk.Prompt;
 import com.nimbusds.openid.connect.sdk.claims.ACR;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /**
  * OpenID Connect Authentication Request. Extends the OAuth 2.0 authorization request.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcError.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcError.java
index 0e0bc00..63430dd 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcError.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcError.java
@@ -23,7 +23,7 @@ import com.nimbusds.oauth2.sdk.ErrorObject;
 import com.nimbusds.oauth2.sdk.OAuth2Error;
 import com.nimbusds.oauth2.sdk.http.HTTPResponse;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Supplemental error objects for any missing values in the Nimbus library.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcEventIds.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcEventIds.java
index 1d82226..cf12b46 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcEventIds.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/core/OidcEventIds.java
@@ -19,7 +19,7 @@ package net.shibboleth.oidc.profile.core;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * OpenID Connect -specific constants to use for {@link org.opensaml.profile.action.ProfileAction}
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONErrorResponse.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONErrorResponse.java
index 7c3808e..b324d6f 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONErrorResponse.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONErrorResponse.java
@@ -26,7 +26,7 @@ import com.nimbusds.oauth2.sdk.ErrorResponse;
 import com.nimbusds.oauth2.sdk.http.HTTPResponse;
 
 import net.minidev.json.JSONObject;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Class for creating JSON Error response for requests expecting JSON response. 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONSuccessResponse.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONSuccessResponse.java
index 2f7fb7f..283afd7 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONSuccessResponse.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/JSONSuccessResponse.java
@@ -26,7 +26,7 @@ import com.nimbusds.oauth2.sdk.SuccessResponse;
 import com.nimbusds.oauth2.sdk.http.HTTPResponse;
 
 import net.minidev.json.JSONObject;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * Class for creating JSON Success response. 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/context/AbstractOIDCEntityContext.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/context/AbstractOIDCEntityContext.java
index 3fa8285..374425b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/context/AbstractOIDCEntityContext.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/messaging/context/AbstractOIDCEntityContext.java
@@ -21,8 +21,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.messaging.context.BaseContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Abstract base class for subcontexts that carry information about a OIDC entity.  This context will often
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AccessTokenProducingProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AccessTokenProducingProfileConfiguration.java
index 79218b3..d258aa3 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AccessTokenProducingProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AccessTokenProducingProfileConfiguration.java
@@ -26,8 +26,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Positive;
 
 /** 
  * Configuration common to OAuth 2.0 access token producing profiles.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationCodeProducingProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationCodeProducingProfileConfiguration.java
index cec5ea6..45830c3 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationCodeProducingProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationCodeProducingProfileConfiguration.java
@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.shared.annotation.constraint.Positive;
 
 /** 
  * Configuration common to authorizaton code producing profiles.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
index b991354..e7c9669 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
@@ -23,10 +23,10 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /** 
  * Configuration for a generic OAuth 2.0 authorization request. 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableClientProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableClientProfileConfiguration.java
index c7178a4..e47c89d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableClientProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableClientProfileConfiguration.java
@@ -24,7 +24,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /** 
  * OAuth 2.0 profile configurations that support OAuth-defined client authentication methods.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableProfileConfiguration.java
index c9fbe0a..35562aa 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ClientAuthenticableProfileConfiguration.java
@@ -26,9 +26,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
-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.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /** OAuth 2.0 profile configurations that support OAuth-defined client authentication methods.*/
 public interface OAuth2ClientAuthenticableProfileConfiguration 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ProfileConfiguration.java
index 7a59c8e..b52f7cf 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ProfileConfiguration.java
@@ -17,7 +17,7 @@
 
 package net.shibboleth.oidc.profile.oauth2.config;
 
-import net.shibboleth.idp.profile.config.ConditionalProfileConfiguration;
+import net.shibboleth.profile.config.ConditionalProfileConfiguration;
 
 /** Common interface for OAuth 2.0 Profile Configurations.*/
 public interface OAuth2ProfileConfiguration extends ConditionalProfileConfiguration {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2RefreshTokenProducingProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2RefreshTokenProducingProfileConfiguration.java
index bed39ef..56ba3c8 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2RefreshTokenProducingProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2RefreshTokenProducingProfileConfiguration.java
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.shared.annotation.constraint.Positive;
 
 /** 
  * Configuration common to OAuth 2.0 refresh token producing profiles.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
index 0cc0f36..0423a48 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.profile.oauth2.config;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.profile.config.AttributeResolvingProfileConfiguration;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Profile interface for OAuth 2 token "audience" profile configuration.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java
index 9697a87..7f1c408 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java
@@ -27,10 +27,10 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.profile.config.OIDCSSOProviderConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 
 /**
  * OIDC-aware OAuth 2.0 token endpoint profile configuration. 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java
index eeb0c1d..14b03c5 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java
@@ -19,7 +19,7 @@ package net.shibboleth.oidc.profile.oauth2.config;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Profile configuration for OAuth2 Token Introspection.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
index 3c994e4..958d586 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
@@ -25,8 +25,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Positive;
 
 /**
  * Configuration for the OAuth 2.0 Token Revocation profile.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenValidatingProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenValidatingProfileConfiguration.java
index 4cd1ba0..7a532e9 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenValidatingProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenValidatingProfileConfiguration.java
@@ -22,8 +22,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
+import net.shibboleth.profile.config.OverriddenIssuerProfileConfiguration;
 
 /**
  *  Profile configuration for OIDC-aware OAuth 2.0 token endpoints. 
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfigurationTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfigurationTest.java
deleted file mode 100644
index bb7b428..0000000
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCSecurityConfigurationTest.java
+++ /dev/null
@@ -1,57 +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.oidc.profile.config;
-
-import org.mockito.Mockito;
-import org.opensaml.xmlsec.EncryptionConfiguration;
-import org.opensaml.xmlsec.SignatureSigningConfiguration;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for {@link OIDCSecurityConfiguration}.
- */
-public class OIDCSecurityConfigurationTest {
-
-    /** OIDC sec. config.*/
-    private OIDCSecurityConfiguration config;
-
-    @BeforeMethod
-    protected void setUp() throws Exception {
-        config = new OIDCSecurityConfiguration();
-    }
-
-    @Test
-    public void testInitialState() {
-        Assert.assertNull(config.getRequestObjectDecryptionConfiguration());
-        Assert.assertNull(config.getRequestObjectSignatureValidationConfiguration());
-    }
-
-    @Test
-    public void testSetters() {
-        config = new OIDCSecurityConfiguration();
-        final EncryptionConfiguration confEnc = Mockito.mock(EncryptionConfiguration.class);
-        config.setRequestObjectDecryptionConfiguration(confEnc);
-        Assert.assertEquals(confEnc, config.getRequestObjectDecryptionConfiguration());
-        final SignatureSigningConfiguration confDec = Mockito.mock(SignatureSigningConfiguration.class);
-        config.setRequestObjectSignatureValidationConfiguration(confDec);
-        Assert.assertEquals(confDec, config.getRequestObjectSignatureValidationConfiguration());
-    }
-
-}
\ No newline at end of file
diff --git a/oidc-common-profile-impl/pom.xml b/oidc-common-profile-impl/pom.xml
index 8d8fed4..c34da30 100644
--- a/oidc-common-profile-impl/pom.xml
+++ b/oidc-common-profile-impl/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-profile-impl</artifactId>
@@ -19,35 +19,40 @@
     
     <dependencies>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-profile-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-crypto-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-metadata-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-profile-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-authn-api</artifactId>
             <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>
@@ -63,14 +68,30 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-spring</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-profile-api</artifactId>
             <scope>test</scope>
             <type>test-jar</type>
         </dependency>
         <dependency>
-            <groupId>net.shibboleth.idp</groupId>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
             <artifactId>idp-profile-spring</artifactId>
+            <version>5.0.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationRequestAuditExtractor.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationRequestAuditExtractor.java
index f002e54..ab12b9d 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationRequestAuditExtractor.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationRequestAuditExtractor.java
@@ -24,7 +24,7 @@ import javax.annotation.Nonnull;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A base class for audit extractors that lookup the {@link OIDCAuthenticationRequest}.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationResponseAuditExtractor.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationResponseAuditExtractor.java
index d5b29b1..093e514 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationResponseAuditExtractor.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractAuthenticationResponseAuditExtractor.java
@@ -25,7 +25,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A base class for audit extractors that lookup the {@link AuthenticationResponse}.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractClaimsSetAuditExtractor.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractClaimsSetAuditExtractor.java
index 2f5b9bb..a4c729d 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractClaimsSetAuditExtractor.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/AbstractClaimsSetAuditExtractor.java
@@ -33,12 +33,11 @@ import org.slf4j.LoggerFactory;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-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.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /** 
  * An abstract audit extractor function to extract claims from the located claims set.
@@ -86,8 +85,8 @@ public abstract class AbstractClaimsSetAuditExtractor<T> extends AbstractInitial
      * @param claim the claim name
      */
     public synchronized void setClaimName(@Nonnull final String claim) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         claimName = Constraint.isNotNull(claim, "claimName can not be null");
     }
@@ -99,8 +98,8 @@ public abstract class AbstractClaimsSetAuditExtractor<T> extends AbstractInitial
      */
     public synchronized void setClaimsSetLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, ClaimsSet> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         claimsSetLookupStrategy = Constraint.isNotNull(strategy, "claimsSetLookupStrategy can not be null");
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/ClaimSetFromJWTLookupStrategy.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/ClaimSetFromJWTLookupStrategy.java
index dea56c9..d63439c 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/ClaimSetFromJWTLookupStrategy.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/ClaimSetFromJWTLookupStrategy.java
@@ -31,8 +31,8 @@ import com.nimbusds.jwt.JWT;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
-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;
 
 /** Strategy to pull out a ClaimsSet from a located JWT.*/
 public class ClaimSetFromJWTLookupStrategy implements Function<ProfileRequestContext, ClaimsSet> {
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/DateBasedJWTClaimAuditExtractor.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/DateBasedJWTClaimAuditExtractor.java
index d8874c7..dbf1839 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/DateBasedJWTClaimAuditExtractor.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/audit/impl/DateBasedJWTClaimAuditExtractor.java
@@ -30,9 +30,8 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.claims.ClaimsSet;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /** A JWT claim extractor function that returns a formatted String representation of the JSON Date.*/
 public class DateBasedJWTClaimAuditExtractor extends AbstractClaimsSetAuditExtractor<String> {
@@ -54,7 +53,7 @@ public class DateBasedJWTClaimAuditExtractor extends AbstractClaimsSetAuditExtra
      * @param format formatting string
      */
     public void setDateTimeFormat(@Nullable @NotEmpty final String format) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         if (StringSupport.trimOrNull(format) != null) {
             dateTimeFormatter = DateTimeFormatter.ofPattern(StringSupport.trimOrNull(format));
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
index 8f46fc3..797b74d 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
@@ -36,15 +36,15 @@ import com.google.common.base.Predicates;
 import net.shibboleth.oidc.profile.config.OIDCSSOProviderConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCSSORelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Base class for profiles that support OIDC's concept of SSO, which spans multiple endpoints.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
index 2bf7013..1d4097a 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCAuthorizationConfiguration.java
@@ -37,14 +37,14 @@ import com.google.common.base.Predicates;
 import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProfileConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Implementation of a profile configuration for the OpenID Connect authorization endpoint.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCDynamicRegistrationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCDynamicRegistrationConfiguration.java
index 7fab902..f6fae6d 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCDynamicRegistrationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCDynamicRegistrationConfiguration.java
@@ -29,10 +29,10 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.shared.annotation.constraint.NonNegative;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
 
 /**
  * Implemenation of a profile configuration for the OpenID Connect dynamic client registration.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCProviderInformationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCProviderInformationConfiguration.java
index d379eed..4139664 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCProviderInformationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCProviderInformationConfiguration.java
@@ -24,11 +24,11 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCProviderInformationConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.profile.config.AbstractConditionalProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
 
 /**
  * Implementation of a profile configuration for the OpenID Connect Provider Configuration.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCPublishKeySetConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCPublishKeySetConfiguration.java
index 3d5b7ff..216977b 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCPublishKeySetConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCPublishKeySetConfiguration.java
@@ -19,9 +19,9 @@ package net.shibboleth.oidc.profile.config.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.oidc.profile.config.OIDCPublishKeySetConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.profile.config.AbstractConditionalProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Implementation of a profile configuration for publishing OP key set.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCUserInfoConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCUserInfoConfiguration.java
index 726da3b..e31ccfe 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCUserInfoConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/DefaultOIDCUserInfoConfiguration.java
@@ -32,12 +32,12 @@ import com.google.common.base.Predicates;
 
 import net.shibboleth.oidc.profile.config.OIDCUserInfoConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2TokenValidatingConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  *  Implementation of a profile configuration for the OpenID Connect core protocol userinfo endpoint.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoder.java
index 6fc0e73..df87696 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoder.java
@@ -20,7 +20,6 @@ package net.shibboleth.oidc.profile.decoding.impl;
 import java.io.IOException;
 
 import javax.annotation.Nonnull;
-import javax.servlet.http.HttpServletRequest;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecoder;
@@ -30,10 +29,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.nimbusds.oauth2.sdk.ParseException;
-import com.nimbusds.oauth2.sdk.http.ServletUtils;
+import com.nimbusds.oauth2.sdk.http.JakartaServletUtils;
 import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 import com.nimbusds.openid.connect.sdk.AuthenticationResponseParser;
 
+import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.oidc.profile.decoding.OIDCMessageDecoder;
 
 /** 
@@ -61,7 +61,7 @@ public class HTTPPostAuthnResponseDecoder extends AbstractHttpServletRequestMess
         
         try {
             final AuthenticationResponse inboundMessage = 
-                    AuthenticationResponseParser.parse(ServletUtils.createHTTPRequest(request));
+                    AuthenticationResponseParser.parse(JakartaServletUtils.createHTTPRequest(request));
             messageContext.setMessage(inboundMessage);
         } catch (final ParseException | IOException e) {
             log.error("Unable to parse incomming authentication response",e);
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoder.java
index aa6c6ba..905bff6 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoder.java
@@ -20,7 +20,6 @@ package net.shibboleth.oidc.profile.decoding.impl;
 import java.io.IOException;
 
 import javax.annotation.Nonnull;
-import javax.servlet.http.HttpServletRequest;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecoder;
@@ -30,10 +29,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.nimbusds.oauth2.sdk.ParseException;
-import com.nimbusds.oauth2.sdk.http.ServletUtils;
+import com.nimbusds.oauth2.sdk.http.JakartaServletUtils;
 import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 import com.nimbusds.openid.connect.sdk.AuthenticationResponseParser;
 
+import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.oidc.profile.decoding.OIDCMessageDecoder;
 
 
@@ -62,7 +62,7 @@ public class HTTPRedirectAuthnResponseDecoder extends AbstractHttpServletRequest
         
         try {
             final AuthenticationResponse inboundMessage = 
-                    AuthenticationResponseParser.parse(ServletUtils.createHTTPRequest(request));
+                    AuthenticationResponseParser.parse(JakartaServletUtils.createHTTPRequest(request));
             messageContext.setMessage(inboundMessage);
         } catch (final ParseException | IOException e) {
             log.error("Unable to parse incomming authentication response",e);
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
index 7854db7..13747e8 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/AbstractOIDCMessageEncoder.java
@@ -37,9 +37,8 @@ import com.nimbusds.openid.connect.sdk.claims.ACR;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.encoding.AuthenticationContextClassReferenceSupport;
 import net.shibboleth.oidc.profile.encoding.OIDCMessageEncoder;
-import net.shibboleth.utilities.java.support.collection.Pair;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.net.URLBuilder;
+import net.shibboleth.shared.collection.Pair;
+import net.shibboleth.shared.net.URLBuilder;
 
 /**
  * Base class for OIDC message encoders.
@@ -68,8 +67,8 @@ public abstract class AbstractOIDCMessageEncoder extends AbstractHttpServletResp
      */
     public void setAuthorizationParamsAreValidPredicate(
             @Nullable final Predicate<List<Pair<String, String>>> predicate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         if (predicate != null) {
             authorizationParamsAreValidPredicate = predicate;
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoder.java
index 1f49834..70559af 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoder.java
@@ -24,7 +24,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
@@ -34,14 +33,14 @@ import org.opensaml.messaging.encoder.MessageEncodingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.codec.HTMLEncoder;
-import net.shibboleth.utilities.java.support.collection.Pair;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.net.HttpServletSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.codec.HTMLEncoder;
+import net.shibboleth.shared.collection.Pair;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.servlet.HttpServletSupport;
 
 /**
  * A {@link MessageEncoder message encoder} that encodes an OpenID authentication request by
@@ -71,8 +70,8 @@ public class HTTPPostAuthnRequestEncoder extends AbstractOIDCMessageEncoder {
      * @param newVelocityTemplateId the new Velocity template id
      */
     public void setVelocityTemplateId(@Nonnull @NotEmpty final String newVelocityTemplateId) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         velocityTemplateId = 
                 Constraint.isNotEmpty(newVelocityTemplateId, "Velocity template id must not not be null or empty");
     }
@@ -83,8 +82,8 @@ public class HTTPPostAuthnRequestEncoder extends AbstractOIDCMessageEncoder {
      * @param newVelocityEngine the new VelocityEngine instane
      */
     public void setVelocityEngine(@Nonnull final VelocityEngine newVelocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
         velocityEngine = Constraint.isNotNull(newVelocityEngine, "Velocity engine can not be null");
     }
     
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoder.java
index 0406c82..a0c4b77 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoder.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 
 import javax.annotation.Nonnull;
-import javax.servlet.http.HttpServletResponse;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.encoder.MessageEncoder;
@@ -29,10 +28,11 @@ import org.opensaml.messaging.encoder.MessageEncodingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.servlet.http.HttpServletResponse;
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
-import net.shibboleth.utilities.java.support.net.HttpServletSupport;
-import net.shibboleth.utilities.java.support.net.URLBuilder;
+import net.shibboleth.shared.net.URLBuilder;
+import net.shibboleth.shared.servlet.HttpServletSupport;
 
 /**
  * A {@link MessageEncoder message encoder} that encodes an OpenID authentication request by 
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/OIDCResponseEncoderFactory.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/OIDCResponseEncoderFactory.java
index 1346da9..e075940 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/OIDCResponseEncoderFactory.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/OIDCResponseEncoderFactory.java
@@ -30,10 +30,10 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.oauth2.sdk.Response;
 
-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.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.logic.Constraint;
 
 /**
  * A source of encoders that first verifies a message being an instance of Nimbus
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/SimpleNimbusResponseEncoder.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/SimpleNimbusResponseEncoder.java
index 2c19d80..2e132cd 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/SimpleNimbusResponseEncoder.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/encoding/impl/SimpleNimbusResponseEncoder.java
@@ -20,7 +20,6 @@ package net.shibboleth.oidc.profile.encoding.impl;
 import java.io.IOException;
 
 import javax.annotation.Nonnull;
-import javax.servlet.http.HttpServletResponse;
 
 import org.opensaml.messaging.encoder.MessageEncodingException;
 import org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder;
@@ -29,7 +28,9 @@ import org.slf4j.LoggerFactory;
 
 import com.nimbusds.oauth2.sdk.Response;
 import com.nimbusds.oauth2.sdk.http.HTTPResponse;
-import com.nimbusds.oauth2.sdk.http.ServletUtils;
+import com.nimbusds.oauth2.sdk.http.JakartaServletUtils;
+
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * A message encodes that encodes the Nimbus a {@link Response} in the message context inside the attached
@@ -51,7 +52,7 @@ public class SimpleNimbusResponseEncoder extends AbstractHttpServletResponseMess
         try {
             final HttpServletResponse response = getHttpServletResponse();           
             final HTTPResponse resp = ((Response) getMessageContext().getMessage()).toHTTPResponse();
-            ServletUtils.applyHTTPResponse(resp, response);
+            JakartaServletUtils.applyHTTPResponse(resp, response);
         } catch (final IOException e) {
             throw new MessageEncodingException("Problem encoding response", e);
         }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AbstractBuildErrorResponseFromEvent.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AbstractBuildErrorResponseFromEvent.java
index 7d80763..220e61a 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AbstractBuildErrorResponseFromEvent.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AbstractBuildErrorResponseFromEvent.java
@@ -34,8 +34,7 @@ import com.nimbusds.oauth2.sdk.ErrorResponse;
 import com.nimbusds.oauth2.sdk.http.HTTPResponse;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * This action is extended by error response actions. Action reads an event from the configured {@link EventContext}
@@ -103,7 +102,7 @@ public abstract class AbstractBuildErrorResponseFromEvent<T extends ErrorRespons
      * @param strategy lookup strategy
      */
     public void setEventContextLookupStrategy(@Nonnull final Function<ProfileRequestContext, EventContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         eventContextLookupStrategy = Constraint.isNotNull(strategy, "EventContext lookup strategy cannot be null");
     }
@@ -114,7 +113,7 @@ public abstract class AbstractBuildErrorResponseFromEvent<T extends ErrorRespons
      * @param errors map of eventIds to pre-configured error objects.
      */
     public void setMappedErrors(@Nonnull final Map<String, ErrorObject> errors) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         mappedErrors = Constraint.isNotNull(errors, "Mapped errors cannot be null");
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactory.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactory.java
index 7826423..c5f13a5 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactory.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactory.java
@@ -31,14 +31,14 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.encoding.OIDCMessageEncoder;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
 
 /**
  * Message encoder factory function that returns the first encoder suitable for the given request method found in the
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessage.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessage.java
index 2673f19..c7d6ecf 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessage.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessage.java
@@ -29,6 +29,7 @@ import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.config.SecurityConfiguration;
 import org.opensaml.security.credential.Credential;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,13 +40,11 @@ import com.nimbusds.jose.jwk.JWKSet;
 import net.minidev.json.JSONObject;
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.profile.messaging.JSONSuccessResponse;
 import net.shibboleth.oidc.security.CredentialConversionUtil;
-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.logic.Constraint;
 
 /**
  * Action that forms outbound message containing keyset. Keys of the keyset are located from security configuration
@@ -86,7 +85,7 @@ public class FormOutboundKeySetResponseMessage extends AbstractProfileAction {
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
@@ -99,8 +98,8 @@ public class FormOutboundKeySetResponseMessage extends AbstractProfileAction {
      */
     public void setCredentialsToPublishLookupStrategy(
             @Nonnull final Function<JSONSecurityConfiguration, List<Credential>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         credentialsToPublishLookupStrategy = Constraint.isNotNull(strategy,
                 "credentialsToPublishLookupStrategy can not be null");
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTDecryptionParameters.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTDecryptionParameters.java
index d950975..40121ef 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTDecryptionParameters.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTDecryptionParameters.java
@@ -32,7 +32,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.metadata.context.OIDCMetadataContext;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableClientProfileConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
@@ -44,12 +43,12 @@ import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.DecryptionConfigurationCriterion;
-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.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Action that resolves and populates {@link DecryptionParameters} on an {@link SecurityParametersContext}
@@ -108,7 +107,7 @@ public class PopulateJWTDecryptionParameters extends AbstractProfileAction {
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
@@ -120,7 +119,7 @@ public class PopulateJWTDecryptionParameters extends AbstractProfileAction {
      * @param newResolver   resolver to use
      */
     public void setDecryptionParametersResolver(@Nonnull final DecryptionParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         resolver = Constraint.isNotNull(newResolver, "DecryptionParametersResolver cannot be null");
     }
@@ -132,7 +131,7 @@ public class PopulateJWTDecryptionParameters extends AbstractProfileAction {
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, List<DecryptionConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         configurationLookupStrategy = Constraint.isNotNull(strategy,
                 "DecryptionConfiguration lookup strategy cannot be null");
@@ -145,7 +144,7 @@ public class PopulateJWTDecryptionParameters extends AbstractProfileAction {
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "SecurityParametersContext lookup strategy cannot be null");
@@ -158,7 +157,7 @@ public class PopulateJWTDecryptionParameters extends AbstractProfileAction {
      */
     public void setClientMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext, OIDCMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcClientMetadataContextLookupStrategy = strategy;
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTEncryptionParameters.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTEncryptionParameters.java
index 2f8ab60..3558d30 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTEncryptionParameters.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTEncryptionParameters.java
@@ -38,7 +38,6 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Predicates;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
-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.config.logic.EncryptionOptionalPredicate;
@@ -52,14 +51,14 @@ import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.EncryptionConfigurationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
-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.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import net.shibboleth.profile.context.RelyingPartyContext;
+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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * Action that resolves and populates {@link EncryptionParameters} on an {@link SecurityParametersContext}
@@ -139,7 +138,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
@@ -152,8 +151,8 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      */
     public void setSecurityParametersContextLookupStrategy(
             final Function<ProfileRequestContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "securityParametersContextLookupStrategy can not be null");
@@ -166,7 +165,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      */
     public void setClientMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext, OIDCMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcClientMetadataContextLookupStrategy = strategy;
     }
@@ -178,7 +177,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      */
     public void setProviderMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext, OIDCProviderMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcProviderMetadataContextLookupStrategy = strategy;
     }
@@ -189,8 +188,8 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      * @param name the friendly name
      */
     public void setForFriendlyName(@Nonnull @NotEmpty final String name) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         forFriendlyName = Constraint.isNotEmpty(name, "ForFriendlyName can not be null or empty");
     }
@@ -202,8 +201,8 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, List<EncryptionConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
+        ifDestroyedThrowDestroyedComponentException();
 
         configurationLookupStrategy =
                 Constraint.isNotNull(strategy, "EncryptionConfiguration lookup strategy cannot be null");
@@ -215,7 +214,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      * @param newResolver encParamsresolver to use
      */
     public void setEncryptionParametersResolver(@Nonnull final EncryptionParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         encParamsresolver = Constraint.isNotNull(newResolver, "EncryptionParametersResolver cannot be null");
     }
@@ -226,7 +225,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      * @param condition condition to set
      */
     public void setEncryptionOptionalPredicate(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         encryptionOptionalPredicate = Constraint.isNotNull(condition, "Condition cannot be null");
     }
@@ -237,7 +236,7 @@ public class PopulateJWTEncryptionParameters extends AbstractProfileAction {
      * @param flag the flag to set
      */
     public void setEncryptionOptional(@Nonnull final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);        
+        ifInitializedThrowUnmodifiabledComponentException();        
         encryptionOptionalPredicate = flag ? Predicates.alwaysTrue() : Predicates.alwaysFalse();
     }
 
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParameters.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParameters.java
index 1762756..959be98 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParameters.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParameters.java
@@ -39,11 +39,10 @@ import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
 import net.shibboleth.oidc.security.jose.SignatureSigningParametersResolver;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-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.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 
 /**
@@ -113,7 +112,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setClientMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext, OIDCMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcClientMetadataContextLookupStrategy = strategy;
     }
@@ -125,7 +124,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setProviderMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext, OIDCProviderMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcProviderMetadataContextLookupStrategy = strategy;
     }
@@ -138,7 +137,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setExistingParametersContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext,SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         existingParametersContextLookupStrategy = strategy;
     }
@@ -150,7 +149,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "SecurityParametersContext lookup strategy cannot be null");
@@ -163,7 +162,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, List<SignatureSigningConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         configurationLookupStrategy =
                 Constraint.isNotNull(strategy, "SignatureSigningConfiguration lookup strategy cannot be null");
@@ -176,7 +175,7 @@ public class PopulateJWTSignatureSigningParameters
      */
     public void setSignatureSigningParametersResolver(
             @Nonnull final SignatureSigningParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         resolver = Constraint.isNotNull(newResolver, "SignatureSigningParametersResolver cannot be null");
     }
@@ -191,7 +190,7 @@ public class PopulateJWTSignatureSigningParameters
      * @param flag flag to set
      */
     public void setNoResultIsError(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         noResultIsError = flag;
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParametersHandler.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParametersHandler.java
index 41dada6..1cca299 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParametersHandler.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureSigningParametersHandler.java
@@ -35,7 +35,6 @@ import org.opensaml.saml.criterion.RoleDescriptorCriterion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-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.config.OIDCAuthorizationConfiguration;
@@ -49,12 +48,12 @@ import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ClientSecretCredentialCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.oidc.security.jose.criterion.SignatureSigningConfigurationCriterion;
-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.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /**
  * 
@@ -124,7 +123,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<MessageContext,RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
@@ -137,7 +136,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<MessageContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy =
                 Constraint.isNotNull(strategy, "JWTSecurityParametersContext lookup strategy cannot be null");
@@ -150,7 +149,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setClientMetadataContextLookupStrategy(
             @Nonnull final Function<MessageContext, OIDCMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcClientMetadataContextLookupStrategy = 
                 Constraint.isNotNull(strategy, "OIDCMetadataContext lookup strategy cannot be null");
@@ -163,7 +162,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setProviderMetadataContextLookupStrategy(
             @Nonnull final Function<MessageContext, OIDCProviderMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         oidcProviderMetadataContextLookupStrategy = 
                 Constraint.isNotNull(strategy, "OIDCProviderMetadataContext lookup strategy cannot be null");
@@ -176,7 +175,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setSignatureSigningParametersResolver(
             @Nonnull final SignatureSigningParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         resolver = Constraint.isNotNull(newResolver, "SignatureSigningParametersResolver cannot be null");
     }
@@ -189,7 +188,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setExistingParametersContextLookupStrategy(
             @Nullable final Function<MessageContext,SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         existingParametersContextLookupStrategy = strategy;
     }
@@ -201,7 +200,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setMetadataContextLookupStrategy(
             @Nonnull final Function<MessageContext,SAMLMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         metadataContextLookupStrategy =
                 Constraint.isNotNull(strategy, "SAMLMetadataContext lookup strategy cannot be null");
@@ -214,7 +213,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<MessageContext, List<SignatureSigningConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         configurationLookupStrategy =
                 Constraint.isNotNull(strategy, "SignatureSigningConfiguration lookup strategy cannot be null");
@@ -230,7 +229,7 @@ public class PopulateJWTSignatureSigningParametersHandler extends AbstractMessag
      * @param flag flag to set
      */
     public void setNoResultIsError(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         noResultIsError = flag;
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParameters.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParameters.java
index a154fb9..87a5478 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParameters.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParameters.java
@@ -36,11 +36,10 @@ import net.shibboleth.oidc.security.jose.SignatureValidationConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureValidationParameters;
 import net.shibboleth.oidc.security.jose.SignatureValidationParametersResolver;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-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.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Action that resolves and populates {@link SignatureValidationParameters} on a {@link SecurityParametersContext}
@@ -91,7 +90,7 @@ public class PopulateJWTSignatureValidationParameters
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "SecurityParametersContext lookup strategy cannot be null");
@@ -104,7 +103,7 @@ public class PopulateJWTSignatureValidationParameters
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,List<SignatureValidationConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         configurationLookupStrategy = Constraint.isNotNull(strategy,
                 "SignatureValidationConfiguration lookup strategy cannot be null");
@@ -117,7 +116,7 @@ public class PopulateJWTSignatureValidationParameters
      */
     public void setSignatureValidationParametersResolver(
             @Nonnull final SignatureValidationParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         resolver = Constraint.isNotNull(newResolver, "SignatureValidationParametersResolver cannot be null");
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParametersHandler.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParametersHandler.java
index c9c9e6d..47fb295 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParametersHandler.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/impl/PopulateJWTSignatureValidationParametersHandler.java
@@ -34,12 +34,11 @@ import net.shibboleth.oidc.security.jose.SignatureValidationParameters;
 import net.shibboleth.oidc.security.jose.SignatureValidationParametersResolver;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
 import net.shibboleth.oidc.security.jose.criterion.SignatureValidationConfigurationCriterion;
-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.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 
 /**
@@ -79,7 +78,7 @@ public class PopulateJWTSignatureValidationParametersHandler extends AbstractMes
      */
     public void setSecurityParametersContextLookupStrategy(
             @Nonnull final Function<MessageContext, SecurityParametersContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
 
         securityParametersContextLookupStrategy = Constraint.isNotNull(strategy,
                 "SecurityParametersContext lookup strategy cannot be null");
@@ -92,7 +91,7 @@ public class PopulateJWTSignatureValidationParametersHandler extends AbstractMes
      */
     public void setConfigurationLookupStrategy(
             @Nonnull final Function<MessageContext,List<SignatureValidationConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         configurationLookupStrategy = Constraint.isNotNull(strategy,
                 "SignatureValidationConfiguration lookup strategy cannot be null");
@@ -105,7 +104,7 @@ public class PopulateJWTSignatureValidationParametersHandler extends AbstractMes
      */
     public void setSignatureValidationParametersResolver(
             @Nonnull final SignatureValidationParametersResolver newResolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        ifInitializedThrowUnmodifiabledComponentException();
         
         resolver = Constraint.isNotNull(newResolver, "SignatureValidationParametersResolver cannot be null");
     }
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/ClientIDFromOIDCMetadataContextLookupFunction.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/ClientIDFromOIDCMetadataContextLookupFunction.java
index 11c52f7..1799232 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/ClientIDFromOIDCMetadataContextLookupFunction.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/ClientIDFromOIDCMetadataContextLookupFunction.java
@@ -31,7 +31,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.oidc.metadata.context.OIDCMetadataContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A function that returns client_id via client information stored in {@link OIDCMetadataContext}.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/IssuerIDFromOIDCProviderMetadataContextLookupFunction.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/IssuerIDFromOIDCProviderMetadataContextLookupFunction.java
index 953b58f..1d5c209 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/IssuerIDFromOIDCProviderMetadataContextLookupFunction.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/logic/IssuerIDFromOIDCProviderMetadataContextLookupFunction.java
@@ -31,7 +31,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.oidc.metadata.context.OIDCProviderMetadataContext;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * A function that returns the issuer id via the provider information stored in {@link OIDCProviderMetadataContext}.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
index 1d245af..c7cf116 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
@@ -33,20 +33,20 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.google.common.base.Predicates;
 import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod;
 
-import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableClientProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ClientAuthenticableProfileConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.profile.config.AbstractConditionalProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NonNegative;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Base class for OAuth profile configurations that support OAuth-defined client authentication methods.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
index 5fd3a00..1f38a0b 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
@@ -28,7 +28,7 @@ import com.google.common.base.Predicates;
 
 import net.shibboleth.oidc.profile.config.OIDCFlowAwareProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Base class for OIDC protocol configuration, containing configuration bits shared by all flow aware OIDC protocol
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
index 4a826fb..b1799d2 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
@@ -26,9 +26,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenValidatingProfileConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
 
 /**
  * Base class for profile configurations that validate previously issued OAuth2 tokens.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenAudienceConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenAudienceConfiguration.java
index 8062e17..b14b7b3 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenAudienceConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenAudienceConfiguration.java
@@ -30,13 +30,13 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.google.common.base.Predicates;
 
-import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenAudienceConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.profile.config.AbstractConditionalProfileConfiguration;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  * Implementation of an OAuth 2.0 token "audience" profile configuration.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
index 09b4bc9..dc2caed 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenConfiguration.java
@@ -35,13 +35,13 @@ import com.nimbusds.oauth2.sdk.GrantType;
 
 import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-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.utilities.java.support.logic.FunctionSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.StringSupport;
 
 /**
  *  Implementation of an OIDC-aware OAuth 2 token endpoint profile configuration.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenIntrospectionConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenIntrospectionConfiguration.java
index c722c88..8a47551 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenIntrospectionConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenIntrospectionConfiguration.java
@@ -21,7 +21,7 @@ package net.shibboleth.oidc.profile.oauth2.config.impl;
 import javax.annotation.Nonnull;
 
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenIntrospectionConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  *  Implementation of a profile configuration for the OAuth2 Token Introspection.
diff --git a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenRevocationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenRevocationConfiguration.java
index a7c7a16..2b8a823 100644
--- a/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenRevocationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/DefaultOAuth2TokenRevocationConfiguration.java
@@ -26,11 +26,11 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.FunctionSupport;
 
 /**
  *  Implementation of a profile configuration for OAuth2 Token Revocation.
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/config/impl/OIDCCoreProtocolConfigurationTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/config/impl/OIDCCoreProtocolConfigurationTest.java
index fe969e2..0565f27 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/config/impl/OIDCCoreProtocolConfigurationTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/config/impl/OIDCCoreProtocolConfigurationTest.java
@@ -20,14 +20,14 @@ package net.shibboleth.oidc.profile.config.impl;
 import java.time.Duration;
 import java.util.Collections;
 
+import org.opensaml.security.config.BasicSecurityConfiguration;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.profile.config.SecurityConfiguration;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
 import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
  * Unit tests for {@link DefaultOIDCAuthorizationConfiguration}.
@@ -39,7 +39,7 @@ public class OIDCCoreProtocolConfigurationTest {
     @BeforeMethod
     protected void setUp() throws Exception {
         config = new DefaultOIDCAuthorizationConfiguration();
-        config.setSecurityConfiguration(new SecurityConfiguration());
+        config.setSecurityConfiguration(new BasicSecurityConfiguration());
         config.initialize();
     }
 
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoderTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoderTest.java
index 50b3431..9dd7846 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoderTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPPostAuthnResponseDecoderTest.java
@@ -22,12 +22,16 @@ import static org.testng.Assert.assertTrue;
 
 import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 import com.nimbusds.openid.connect.sdk.AuthenticationSuccessResponse;
 
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletRequestSupplier;
+
 public class HTTPPostAuthnResponseDecoderTest {
     
     /** Mock servlet response.*/
@@ -38,7 +42,8 @@ public class HTTPPostAuthnResponseDecoderTest {
     
     @BeforeMethod public void setUp() throws Exception {    
         decoder = new HTTPPostAuthnResponseDecoder();      
-        mockRequest = new MockHttpServletRequest();        
+        mockRequest = new MockHttpServletRequest();
+        HttpServletRequestResponseContext.loadCurrent(mockRequest, new MockHttpServletResponse());
     }
 
     @Test
@@ -48,7 +53,7 @@ public class HTTPPostAuthnResponseDecoderTest {
         mockRequest.addParameter("state", "91c28622815dd9a92ef7c984c74c9e39.65317332");
         mockRequest.addParameter("code", "XSpej7DkB2WYcF1Gzth5CCHw6Oxf3gxR");
         mockRequest.setContentType("application/x-www-form-urlencoded");
-        decoder.setHttpServletRequest(mockRequest);
+        decoder.setHttpServletRequestSupplier(new ThreadLocalHttpServletRequestSupplier());
         decoder.initialize();
         decoder.decode();
         assertNotNull(decoder.getMessageContext());
@@ -65,7 +70,7 @@ public class HTTPPostAuthnResponseDecoderTest {
     @Test(expectedExceptions = MessageDecodingException.class)
     public void testWrongMethod() throws Exception {
         mockRequest.setMethod("GET");     
-        decoder.setHttpServletRequest(mockRequest);
+        decoder.setHttpServletRequestSupplier(new ThreadLocalHttpServletRequestSupplier());
         decoder.initialize();
         decoder.decode();
     }
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoderTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoderTest.java
index 11d48f2..2235ce0 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoderTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/decoding/impl/HTTPRedirectAuthnResponseDecoderTest.java
@@ -22,12 +22,16 @@ import static org.testng.Assert.assertTrue;
 
 import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 import com.nimbusds.openid.connect.sdk.AuthenticationSuccessResponse;
 
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletRequestSupplier;
+
 public class HTTPRedirectAuthnResponseDecoderTest {
     
     /** Mock servlet response.*/
@@ -38,7 +42,8 @@ public class HTTPRedirectAuthnResponseDecoderTest {
     
     @BeforeMethod public void setUp() throws Exception {    
         decoder = new HTTPRedirectAuthnResponseDecoder();      
-        mockRequest = new MockHttpServletRequest();        
+        mockRequest = new MockHttpServletRequest();
+        HttpServletRequestResponseContext.loadCurrent(mockRequest, new MockHttpServletResponse());
     }
 
     @Test
@@ -49,7 +54,7 @@ public class HTTPRedirectAuthnResponseDecoderTest {
         mockRequest.setQueryString(
                 "code=XSpej7DkB2WYcF1Gzth5CCHw6Oxf3gxR&state=91c28622815dd9a92ef7c984c74c9e39.65317332");
         mockRequest.setContentType("application/x-www-form-urlencoded");
-        decoder.setHttpServletRequest(mockRequest);
+        decoder.setHttpServletRequestSupplier(new ThreadLocalHttpServletRequestSupplier());
         decoder.initialize();
         decoder.decode();
         assertNotNull(decoder.getMessageContext());
@@ -66,7 +71,7 @@ public class HTTPRedirectAuthnResponseDecoderTest {
     @Test(expectedExceptions = MessageDecodingException.class)
     public void testWrongMethod() throws Exception {
         mockRequest.setMethod("POST");     
-        decoder.setHttpServletRequest(mockRequest);
+        decoder.setHttpServletRequestSupplier(new ThreadLocalHttpServletRequestSupplier());
         decoder.initialize();
         decoder.decode();
     }
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoderTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoderTest.java
index 2554550..6012afa 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoderTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPPostAuthnRequestEncoderTest.java
@@ -24,6 +24,7 @@ import java.net.URI;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.encoder.MessageEncodingException;
+import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -34,9 +35,11 @@ import com.nimbusds.openid.connect.sdk.OIDCClaimsRequest;
 import com.nimbusds.openid.connect.sdk.assurance.claims.VerifiedClaimsSetRequest;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.oidc.profile.encoding.impl.HTTPPostAuthnRequestEncoder;
-import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
-import net.shibboleth.utilities.java.support.velocity.VelocityEngine;
+import net.shibboleth.shared.component.UninitializedComponentException;
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletResponseSupplier;
+import net.shibboleth.shared.testing.VelocityEngine;
+
 /*
  * Licensed to the University Corporation for Advanced Internet Development,
  * Inc. (UCAID) under one or more contributor license agreements.  See the
@@ -82,12 +85,13 @@ public class HTTPPostAuthnRequestEncoderTest {
         encoder.setMessageContext(context);
         encoder.setVelocityEngine(VelocityEngine.newVelocityEngine());
         mockResponse = new MockHttpServletResponse();
-        encoder.setHttpServletResponse(mockResponse);
+        encoder.setHttpServletResponseSupplier(new ThreadLocalHttpServletResponseSupplier());
+
+    	HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), mockResponse);
     }
     
     @Test
     public void testSuccesfullEncoding_WithClaims() throws Exception {
-        
         final OIDCClaimsRequest requestedClaims =  new OIDCClaimsRequest()
                 .withIDTokenClaimsRequest(new VerifiedClaimsSetRequest().add("given_name"))
                 .withUserInfoClaimsRequest(new VerifiedClaimsSetRequest().add("family_name"));
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoderTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoderTest.java
index 4ce0b7a..c022336 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoderTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/encoding/impl/HTTPRedirectAuthnRequestEncoderTest.java
@@ -24,6 +24,7 @@ import java.net.URI;
 
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.encoder.MessageEncodingException;
+import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -34,7 +35,9 @@ import com.nimbusds.openid.connect.sdk.OIDCClaimsRequest;
 import com.nimbusds.openid.connect.sdk.assurance.claims.VerifiedClaimsSetRequest;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
+import net.shibboleth.shared.component.UninitializedComponentException;
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletResponseSupplier;
 
 /** Test for the HTTPRedirectAuthnRequestEncoder.*/
 public class HTTPRedirectAuthnRequestEncoderTest {
@@ -63,7 +66,9 @@ public class HTTPRedirectAuthnRequestEncoderTest {
         context.setMessage(request);
         encoder.setMessageContext(context);
         mockResponse = new MockHttpServletResponse();
-        encoder.setHttpServletResponse(mockResponse);
+        encoder.setHttpServletResponseSupplier(new ThreadLocalHttpServletResponseSupplier());
+
+    	HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), mockResponse);
     }
     
     @Test
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
index 8e6e62f..c2d1617 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/AuthenticationRequestMessageEncoderFactoryTest.java
@@ -28,11 +28,11 @@ import org.opensaml.messaging.encoder.MessageEncodingException;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.encoding.OIDCMessageEncoder;
 import net.shibboleth.oidc.profile.encoding.impl.AbstractOIDCMessageEncoder;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
+import net.shibboleth.profile.context.RelyingPartyContext;
 
 /** Test of the AuthenticationRequestMessageEncoderFactory class.*/
 public class AuthenticationRequestMessageEncoderFactoryTest {
@@ -73,7 +73,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         // mock a profile config to request form POST serialization
         final DefaultOIDCAuthorizationConfiguration config = new DefaultOIDCAuthorizationConfiguration();
         config.setHttpRequestMethodLookupStrategy(rc -> HttpRequestMethod.POST.toString());
-        final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
+        final RelyingPartyContext rpCtx = prc.ensureSubcontext(RelyingPartyContext.class);
         rpCtx.setProfileConfig(config);
         
         final MessageEncoder encoder = factory.apply(prc);
@@ -104,7 +104,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         // mock a profile config to request form POST serialization
         final DefaultOIDCAuthorizationConfiguration config = new DefaultOIDCAuthorizationConfiguration();
         config.setHttpRequestMethodLookupStrategy(rc -> HttpRequestMethod.GET.toString());
-        final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
+        final RelyingPartyContext rpCtx = prc.ensureSubcontext(RelyingPartyContext.class);
         rpCtx.setProfileConfig(config);
         
         final MessageEncoder encoder = factory.apply(prc);
@@ -136,7 +136,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         // mock a profile config to request form POST serialization
         final DefaultOIDCAuthorizationConfiguration config = new DefaultOIDCAuthorizationConfiguration();
         config.setHttpRequestMethodLookupStrategy(rc -> HttpRequestMethod.POST.toString());
-        final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
+        final RelyingPartyContext rpCtx = prc.ensureSubcontext(RelyingPartyContext.class);
         rpCtx.setProfileConfig(config);
         
         final MessageEncoder encoder = factory.apply(prc);
@@ -153,7 +153,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         // mock a profile config to request form POST serialization
         final DefaultOIDCAuthorizationConfiguration config = new DefaultOIDCAuthorizationConfiguration();
         config.setHttpRequestMethodLookupStrategy(rc -> null);
-        final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
+        final RelyingPartyContext rpCtx = prc.ensureSubcontext(RelyingPartyContext.class);
         rpCtx.setProfileConfig(config);
         
         final MessageEncoder encoder = factory.apply(prc);
@@ -167,7 +167,7 @@ public class AuthenticationRequestMessageEncoderFactoryTest {
         factory = new AuthenticationRequestMessageEncoderFactory(null);
         
         final ProfileRequestContext prc = new ProfileRequestContext();     
-        final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class, true);
+        final RelyingPartyContext rpCtx = prc.ensureSubcontext(RelyingPartyContext.class);
         rpCtx.setProfileConfig(null);
         
         final MessageEncoder encoder = factory.apply(prc);
diff --git a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessageTest.java b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessageTest.java
index fa47b5f..62a5fac 100644
--- a/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessageTest.java
+++ b/oidc-common-profile-impl/src/test/java/net/shibboleth/oidc/profile/impl/FormOutboundKeySetResponseMessageTest.java
@@ -41,7 +41,6 @@ import com.nimbusds.oauth2.sdk.ParseException;
 import net.minidev.json.JSONArray;
 import net.minidev.json.JSONObject;
 import net.shibboleth.idp.profile.IdPEventIds;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
@@ -53,11 +52,12 @@ import net.shibboleth.oidc.security.credential.BasicJWKCredentialFactoryBean;
 import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
 import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-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.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.resolver.ResolverException;
 
 /** {@link FormOutboundKeySetResponseMessage} unit test. */
 public class FormOutboundKeySetResponseMessageTest {
@@ -78,7 +78,7 @@ public class FormOutboundKeySetResponseMessageTest {
         final MessageContext msgCtx = new MessageContext();
         profileRequestCtx = new WebflowRequestContextProfileRequestContextLookup().apply(requestCtx);
         profileRequestCtx.setOutboundMessageContext(msgCtx);
-        rpCtx = profileRequestCtx.getSubcontext(RelyingPartyContext.class, true);
+        rpCtx = profileRequestCtx.ensureSubcontext(RelyingPartyContext.class);
 
         final List<Credential> signCreds = new ArrayList<>();
         BasicJWKCredentialFactoryBean factory = new BasicJWKCredentialFactoryBean();
diff --git a/oidc-common-saml-api/pom.xml b/oidc-common-saml-api/pom.xml
index 25be098..0129bb3 100644
--- a/oidc-common-saml-api/pom.xml
+++ b/oidc-common-saml-api/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-saml-api</artifactId>
@@ -20,7 +20,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-api</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java
index e932a0b..a3a294f 100644
--- a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java
@@ -21,7 +21,7 @@ import javax.annotation.Nonnull;
 
 import org.opensaml.saml.common.xml.SAMLConstants;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * Constants related to SAML 2.0 Metadata extension OAuthRPRoleDescriptorType.
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java
index 31bbb46..0d00c21 100644
--- a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java
@@ -27,7 +27,7 @@ import org.opensaml.core.xml.AttributeExtensibleXMLObject;
 import org.opensaml.core.xml.ElementExtensibleXMLObject;
 import org.opensaml.saml.common.SAMLObject;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
 
 /**
  * SAML 2.0 Metadata extension OAuthRPExtensions.
diff --git a/oidc-common-saml-impl/pom.xml b/oidc-common-saml-impl/pom.xml
index c8b202a..e3b9a62 100644
--- a/oidc-common-saml-impl/pom.xml
+++ b/oidc-common-saml-impl/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>net.shibboleth.oidc</groupId>
         <artifactId>oidc-common-parent</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>oidc-common-saml-impl</artifactId>
@@ -20,20 +20,19 @@
     
     <dependencies>
         <dependency>
-            <groupId>net.shibboleth.oidc</groupId>
+            <groupId>${oidc-common.groupId}</groupId>
             <artifactId>oidc-common-saml-api</artifactId>
             <scope>provided</scope>
         </dependency>
          <dependency>
-            <groupId>org.opensaml</groupId>
+            <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-core</artifactId>
+            <artifactId>opensaml-testing</artifactId>
             <version>${opensaml.version}</version>
-            <type>test-jar</type>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java
index 0047313..85d4415 100644
--- a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java
@@ -23,7 +23,7 @@ import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
 import org.w3c.dom.Element;
 
 import net.shibboleth.oidc.saml.xmlobject.MetadataValueSAMLObject;
-import net.shibboleth.utilities.java.support.xml.ElementSupport;
+import net.shibboleth.shared.xml.ElementSupport;
 
 /**
  * Abstract thread safe Marshaller for {@link MetadataValueSAMLObject} objects.
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java
index 461bf53..13bc118 100644
--- a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java
@@ -19,6 +19,8 @@ package net.shibboleth.oidc.saml.xmlobject.impl;
 
 import javax.xml.namespace.QName;
 
+import org.testng.annotations.Test;
+
 import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
 
 /**
@@ -44,5 +46,12 @@ public class ClientSecretTest extends BaseMetadataValueTest {
     protected QName getElementName() {
         return ClientSecret.DEFAULT_ELEMENT_NAME;
     }
+    
+    @Test
+    public void t() {
+    	System.out.println("here");
+    	
+    	System.out.println("here2");
+    }
 
 }
diff --git a/pom.xml b/pom.xml
index 4a9cbc0..624557b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,20 +6,21 @@
     <parent>
         <groupId>net.shibboleth</groupId>
         <artifactId>parent</artifactId>
-        <version>11.3.5</version>
+        <version>17.0.0-SNAPSHOT</version>
     </parent>
     <groupId>net.shibboleth.oidc</groupId>
     <artifactId>oidc-common-parent</artifactId>
-    <version>2.2.2-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
     <name>Shibboleth IdP :: Plugins :: OIDC Common :: Parent</name>
     <packaging>pom</packaging>
     <description>A POM containing properties, dependencies, etc. that are common across all Shibboleth OIDC Java common libraries.</description>
     <properties>
+        <shib-shared.groupId>net.shibboleth</shib-shared.groupId>
+        <oidc-common.groupId>net.shibboleth.oidc</oidc-common.groupId>
         <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>
+        <opensaml.version>5.0.0-SNAPSHOT</opensaml.version>
         <nimbus-jose-jwt.version>9.29</nimbus-jose-jwt.version>
         <oauth2-oidc-sdk.version>10.5.1</oauth2-oidc-sdk.version>
         <json.smart.version>2.4.8</json.smart.version>
@@ -97,27 +98,27 @@
         <!-- oidc-common project dependencies -->
         <dependencies>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-attribute-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-attribute-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-crypto-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-crypto-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-metadata-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
@@ -127,22 +128,22 @@
                 <version>${project.version}</version>
             </dependency>
              <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-profile-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-profile-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-saml-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>net.shibboleth.oidc</groupId>
+                <groupId>${oidc-common.groupId}</groupId>
                 <artifactId>oidc-common-saml-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
@@ -194,19 +195,12 @@
             </dependency>
             <!-- Shibboleth IdP BOM for importing IdP dependencies -->
             <dependency>
-                <groupId>net.shibboleth.idp</groupId>
+                <groupId>${idp.groupId}</groupId>
                 <artifactId>idp-bom</artifactId>
                 <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>
             <!-- Test bom dependencies -->
             <dependency>
                 <groupId>${idp.groupId}</groupId>
@@ -215,6 +209,14 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <!-- Test bom dependencies -->
+            <dependency>
+                <groupId>${shib-shared.groupId}</groupId>
+                <artifactId>shib-testing</artifactId>
+                <version>9.0.0-SNAPSHOT</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
         </dependencies>
     </dependencyManagement>
     <modules>

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


More information about the commits mailing list