[java-oidc-common] 06/18: Move concrete classes into impl

Phil Smart philip.smart at jisc.ac.uk
Tue Mar 28 15:26:33 UTC 2023


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

philsmart pushed a commit to branch dev/JCOMOIDC-66
in repository java-oidc-common.

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

commit 6766cc6c73b8922155ac08e71d05b85a648b800c
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Tue Mar 21 12:05:21 2023 +0000

    Move concrete classes into impl
---
 .../impl/BasicJOSEObjectCredentialResolver.java    |  1 +
 .../impl/BaseJWTSignatureSecurityHandler.java      |  2 +-
 .../oidc/security/impl/AbstractHandlerTest.java    |  2 +-
 ...=> OIDCAuthenticationProfileConfiguration.java} | 14 ++------
 ...uthenticationProviderProfileConfiguration.java} |  2 +-
 ...nticationRelyingPartyProfileConfiguration.java} |  4 +--
 ...tionRelyingPartyProxyProfileConfiguration.java} |  5 +--
 ...IDCDynamicRegistrationProfileConfiguration.java |  3 ++
 ...java => OIDCFlowAwareProfileConfiguration.java} | 11 ++++---
 .../OIDCIDTokenProducingProfileConfiguration.java  |  3 +-
 .../profile/config/OIDCProfileConfiguration.java   | 15 ++-------
 ...IDCProviderInformationProfileConfiguration.java | 17 ++++++++++
 .../OIDCPublishKeySetProfileConfiguration.java}    | 16 +++------
 ...ation.java => OIDCSSOProfileConfiguration.java} |  2 +-
 ....java => OIDCUserInfoProfileConfiguration.java} | 37 ++++++++-------------
 .../config/logic/AllowPKCEPlainPredicate.java      |  2 +-
 .../AuthorizationCodeFlowEnabledPredicate.java     |  2 +-
 .../config/logic/EncodeConsentPredicate.java       |  2 +-
 .../logic/EncryptRequestObjectPredicate.java       |  2 +-
 .../config/logic/EncryptionOptionalPredicate.java  |  6 ++--
 .../EnforceRefreshTokenRotationPredicate.java      |  2 +-
 .../profile/config/logic/ForcePKCEPredicate.java   |  2 +-
 .../config/logic/HybridFlowEnabledPredicate.java   |  2 +-
 .../config/logic/ImplicitFlowEnabledPredicate.java |  2 +-
 ...udeIssuerInAuthenticationResponsePredicate.java |  2 +-
 .../logic/RefreshTokensEnabledPredicate.java       |  2 +-
 .../config/logic/SignRequestObjectPredicate.java   |  2 +-
 ...laimsSetManipulationStrategyLookupFunction.java |  2 +-
 .../AccessTokenLifetimeLookupFunction.java         |  4 +--
 .../navigate/AccessTokenTypeLookupFunction.java    |  4 +--
 .../AcrClaimAlwaysEssentialLookupFunction.java     |  2 +-
 .../AlwaysIncludedAttributesLookupFunction.java    |  2 +-
 .../AudienceRestrictionsLookupFunction.java        |  2 +-
 ...laimsSetManipulationStrategyLookupFunction.java |  2 +-
 .../navigate/AuthzCodeLifetimeLookupFunction.java  |  2 +-
 .../navigate/ClaimsValidatorLookupFunction.java    |  2 +-
 .../DeniedUserInfoAttributesLookupFunction.java    |  4 +--
 .../navigate/EncodedAttributesLookupFunction.java  |  2 +-
 .../config/navigate/GrantTypesLookupFunction.java  |  4 +--
 .../navigate/IDTokenLifetimeLookupFunction.java    |  2 +-
 .../IDTokenManipulationStrategyLookupFunction.java |  2 +-
 .../IssuedClaimsValidatorLookupFunction.java       |  2 +-
 ...laimsSetManipulationStrategyLookupFunction.java |  2 +-
 .../RefreshTokenLifetimeLookupFunction.java        |  2 +-
 .../RegistrationMetadataPolicyLookupFunction.java  |  2 +-
 .../RegistrationValidityPeriodLookupFunction.java  |  2 +-
 .../navigate/RevocationLifetimeLookupFunction.java |  2 +-
 .../navigate/RevocationMethodLookupFunction.java   |  4 +--
 .../SecretExpirationPeriodLookupFunction.java      |  2 +-
 .../TokenEndpointAuthMethodLookupFunction.java     |  2 +-
 .../oidc/profile/encoding/OIDCMessageEncoder.java  |  2 +-
 ...orizationCodeProducingProfileConfiguration.java | 16 +++++++++
 ...> OAuth2AuthorizationProfileConfiguration.java} |  4 +--
 ...va => OAuth2FlowAwareProfileConfiguration.java} |  9 ++---
 .../oauth2/config/OAuth2ProfileConfiguration.java  | 36 +-------------------
 ...th2TokenIntrospectionProfileConfiguration.java} | 15 ++-------
 .../config/OAuth2TokenProfileConfiguration.java    |  4 +--
 ...OAuth2TokenRevocationProfileConfiguration.java} | 38 +++++++++++-----------
 .../config/OIDCCoreProtocolConfigurationTest.java  |  1 +
 .../OAuth2TokenRevocationConfigurationTest.java    |  2 ++
 .../config/impl}/AbstractOIDCSSOConfiguration.java |  8 +++--
 .../impl}/OIDCAuthorizationConfiguration.java      | 11 ++++---
 .../OIDCDynamicRegistrationConfiguration.java      |  6 ++--
 .../OIDCProviderInformationConfiguration.java      |  5 +--
 .../impl}/OIDCPublishKeySetConfiguration.java      |  6 ++--
 .../config/impl}/OIDCUserInfoConfiguration.java    | 26 ++++-----------
 .../encoding/impl/HTTPPostAuthnRequestEncoder.java |  2 +-
 .../impl/HTTPRedirectAuthnRequestEncoder.java      |  2 +-
 ...AuthenticationRequestMessageEncoderFactory.java |  4 +--
 .../impl/PopulateJWTDecryptionParameters.java      |  2 +-
 .../impl/PopulateJWTEncryptionParameters.java      |  2 +-
 ...pulateJWTSignatureSigningParametersHandler.java |  2 +-
 ...th2ClientAuthenticableProfileConfiguration.java |  3 +-
 ...bstractOAuth2FlowAwareProfileConfiguration.java |  9 ++---
 ...AbstractOAuth2TokenValidatingConfiguration.java |  2 +-
 .../impl}/OAuth2TokenAudienceConfiguration.java    |  7 ++--
 .../config/impl}/OAuth2TokenConfiguration.java     |  5 +--
 .../OAuth2TokenIntrospectionConfiguration.java     |  6 ++--
 .../impl}/OAuth2TokenRevocationConfiguration.java  | 27 ++++-----------
 ...enticationRequestMessageEncoderFactoryTest.java |  4 +--
 .../FormOutboundKeySetResponseMessageTest.java     |  2 +-
 81 files changed, 219 insertions(+), 267 deletions(-)

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 11d8385..a61c3dc 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
@@ -262,6 +262,7 @@ public class BasicJOSEObjectCredentialResolver extends AbstractCriteriaFiltering
         final UsageCriterion usageTypeCriterion = criteriaSet.get(UsageCriterion.class);
         if (usageTypeCriterion == null) {
             log.trace("No usage type criterion supplied, unable to derive client_secret credential");
+            return null;
         }
         final UsageType usageType = usageTypeCriterion.getUsage();
         
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 bba35f0..c9f5347 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
@@ -39,7 +39,7 @@ 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.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.context.SecurityParametersContext;
 import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/AbstractHandlerTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/AbstractHandlerTest.java
index 78264ee..f0b1ce3 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/AbstractHandlerTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/impl/AbstractHandlerTest.java
@@ -28,7 +28,7 @@ import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.impl.support.TestCredentialHelper;
 
 /** Abstract class for tests that require context setup appropriate for message handlers.*/
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
similarity index 87%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
index c8da2fb..860fa07 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProfileConfiguration.java
@@ -28,12 +28,12 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 
-/** Generic configuration for an OIDC authentication request.*/
-public interface OIDCAuthenticationConfiguration extends OAuth2AuthorizationConfiguration {    
+/** Generic configuration for an OIDC 1.0 authentication request.*/
+public interface OIDCAuthenticationProfileConfiguration extends OAuth2AuthorizationProfileConfiguration {    
     
     
     /**
@@ -97,13 +97,5 @@ public interface OIDCAuthenticationConfiguration extends OAuth2AuthorizationConf
     @Nonnull @NonnullElements @NotLive Set<String> getAdditionalAudiencesForIdToken(
             @Nullable final ProfileRequestContext profileRequestContext);
     
-//    /**
-//     * Get whether encryption is optional in the face of a missing key, etc.
-//     * 
-//     * @param profileRequestContext current profile request context
-//     * 
-//     * @return true iff encryption is optional
-//     */
-//    boolean isEncryptionOptional(@Nullable final ProfileRequestContext profileRequestContext);
 
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderProfileConfiguration.java
similarity index 97%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderProfileConfiguration.java
index c547199..60e1e2b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationProviderProfileConfiguration.java
@@ -32,7 +32,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
  * 
  * <p>This is specific to the role of the OpenID Provider (OP).</p>
  */
-public interface OIDCAuthenticationProviderConfiguration extends OIDCAuthenticationConfiguration {
+public interface OIDCAuthenticationProviderProfileConfiguration extends OIDCAuthenticationProfileConfiguration {
     
     /**
      * Get whether all acr claim requests should be treated as Essential.
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
similarity index 92%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
index 487bf2e..1763d80 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProfileConfiguration.java
@@ -27,7 +27,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
  * 
  * <p>This is specific to the role of the RelyingParty (RP).</p>
  */
-public interface OIDCAuthenticationRelyingPartyConfiguration extends OIDCAuthenticationConfiguration {
+public interface OIDCAuthenticationRelyingPartyProfileConfiguration extends OIDCAuthenticationProfileConfiguration {
 
     /**
      * Get the HTTP request method for the UserInfo request. Both GET and POST are supported.
@@ -53,7 +53,7 @@ public interface OIDCAuthenticationRelyingPartyConfiguration extends OIDCAuthent
     boolean isRetrieveUserInfoEndpointClaims(@Nonnull final ProfileRequestContext profileRequestContext);
     
     /**
-     * Should authentication request parameters should be passed in a single, self contained, JWT?
+     * Should OpenID specific authentication request parameters should be passed in a single, self contained, JWT?
      *
      * @param profileRequestContext the profile request context
      *
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyProfileConfiguration.java
similarity index 91%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyProfileConfiguration.java
index d7bb166..0c68284 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthenticationRelyingPartyProxyProfileConfiguration.java
@@ -23,8 +23,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
-/** Configuration for an OIDC authentication request specific to a Proxying Relying Party.*/
-public interface OIDCAuthenticationRelyingPartyProxyConfiguration extends OIDCAuthenticationRelyingPartyConfiguration {
+/** Configuration for an OIDC authentication request specific to a Relying Party Proxy.*/
+public interface OIDCAuthenticationRelyingPartyProxyProfileConfiguration 
+                    extends OIDCAuthenticationRelyingPartyProfileConfiguration {
     
     /**
      * Gets whether authentication results produced by use of this profile should carry the proxied
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationProfileConfiguration.java
index 761359f..208d4fa 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationProfileConfiguration.java
@@ -27,6 +27,9 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
 
+/**
+ * Configuration of OpenID Connect Dynamic Client Registration 1.0. 
+ */
 public interface OIDCDynamicRegistrationProfileConfiguration extends OIDCProfileConfiguration{
     
     /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCFlowAwareProfileConfiguration.java
similarity index 75%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCFlowAwareProfileConfiguration.java
index ff23ed7..d9176f8 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCFlowAwareProfileConfiguration.java
@@ -21,10 +21,14 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2ProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
 
-/** Common interface for OIDC Profile Configurations.*/
-public interface OIDCProfileConfiguration extends OAuth2ProfileConfiguration {
+/**
+ * Interface for profile configurations that understand OIDC specific authentication flows in addition to the OAuth 2.0
+ * flows described by the parent interface.
+ */
+public interface OIDCFlowAwareProfileConfiguration extends OIDCProfileConfiguration,
+                                                    OAuth2FlowAwareProfileConfiguration {
     
     /**
      * Get whether implicit flow is supported by this profile.
@@ -34,6 +38,5 @@ public interface OIDCProfileConfiguration extends OAuth2ProfileConfiguration {
      * @return whether implicit flow is supported by this profile
      */
    boolean isHybridFlowEnabled(@Nullable final ProfileRequestContext profileRequestContext);
-    
 
 }
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 ed5afad..7539940 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
@@ -32,8 +32,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
  * Configuration common to ID Token producing profiles.
  */
 public interface OIDCIDTokenProducingProfileConfiguration {
-
-    
+ 
     /**
      * Get ID token lifetime.
      * 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java
index ff23ed7..f6cc117 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProfileConfiguration.java
@@ -17,23 +17,12 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2ProfileConfiguration;
 
-/** Common interface for OIDC Profile Configurations.*/
+/** Common interface for OpenID Connect 1.0 Profile Configurations.*/
 public interface OIDCProfileConfiguration extends OAuth2ProfileConfiguration {
     
-    /**
-     * Get whether implicit flow is supported by this profile.
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return whether implicit flow is supported by this profile
-     */
-   boolean isHybridFlowEnabled(@Nullable final ProfileRequestContext profileRequestContext);
+
     
 
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationProfileConfiguration.java
index c8e3e8f..1c2a3d5 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationProfileConfiguration.java
@@ -1,6 +1,23 @@
+/*
+ * 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;
 
+/** OpenID Connect Provider Configuration.*/
 public interface OIDCProviderInformationProfileConfiguration {
 
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetProfileConfiguration.java
similarity index 63%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetProfileConfiguration.java
index adfd952..b0b3d08 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetProfileConfiguration.java
@@ -15,20 +15,12 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.encoding;
 
-import java.util.function.Predicate;
+package net.shibboleth.oidc.profile.config;
 
-import org.opensaml.messaging.encoder.MessageEncoder;
-
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
-
-/**
- * An OIDC message encoder interface which requires implementations to test if the request 
- * method is supported by the encoder. 
- * 
- * @since 2.2.0
+/** 
+ * Configuration of an OpenID published key set document. 
  */
-public interface OIDCMessageEncoder extends Predicate<HttpRequestMethod>, MessageEncoder {    
+public interface OIDCPublishKeySetProfileConfiguration {
 
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java
similarity index 96%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOProfileConfiguration.java
index a703712..c7fdf0b 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCSSOConfiguration.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;
 
 /** Profile configuration generic to all OIDC SSO profiles.*/
-public interface OIDCSSOConfiguration extends OIDCProfileConfiguration {
+public interface OIDCSSOProfileConfiguration extends OIDCProfileConfiguration {
     
     
     /**
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/OIDCUserInfoProfileConfiguration.java
similarity index 60%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoProfileConfiguration.java
index ed5afad..181b0b4 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/OIDCUserInfoProfileConfiguration.java
@@ -17,45 +17,34 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import java.time.Duration;
-import java.util.Map;
-import java.util.function.BiFunction;
+import java.util.Set;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 
-/** 
- * Configuration common to ID Token producing profiles.
+/**
+ * Configuration for an OpenID Connect core protocol UserInfo endpoint.
  */
-public interface OIDCIDTokenProducingProfileConfiguration {
 
+//TODO encryption settings move out of extends OIDCSSOProfileConfiguration 
+public interface OIDCUserInfoProfileConfiguration {
     
     /**
-     * Get ID token lifetime.
+     * Get the set of attribute IDs which should be omitted from the UserInfo token.
      * 
-     * <p>Defaults to 1 hour.</p>
+     * <p>Default behavior is to include all claims, but omiited claims also affect the set that
+     * may need to be embedded for recovery into the access/refresh tokens.</p>
      * 
      * @param profileRequestContext profile request context
      * 
-     * @return ID token lifetime
+     * @return the attribute IDs to omit from UserInfo token
      */
-    @Positive @Nonnull Duration getIDTokenLifetime(@Nullable final ProfileRequestContext profileRequestContext);
-    
-    /**
-     * Get the bi-function for manipulating id_token claims.
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return the bi-function for manipulating id_token claims
-     * 
-     * @since 2.1.0
-     */
-    @Nonnull
-    public BiFunction<ProfileRequestContext,Map<String,Object>,Map<String,Object>> getIDTokenManipulationStrategy(
+    @Nonnull @NonnullElements @NotLive public Set<String> getDeniedUserInfoAttributes(
             @Nullable final ProfileRequestContext profileRequestContext);
-     
+
 }
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 72b0ec9..a2fc00e 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
@@ -24,7 +24,7 @@ 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.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 f071231..be31cd0 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
@@ -24,7 +24,7 @@ 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.oauth2.config.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
 
 /**
  * A predicate implementation that forwards to {@link
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 07805ca..253d2c9 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
@@ -24,7 +24,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 a105b17..c14e39a 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
@@ -24,7 +24,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /** A predicate that determines if the RequestObject JWT should be encrypted based on the profile configuration.*/
 public class EncryptRequestObjectPredicate extends AbstractRelyingPartyPredicate {
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 9059830..9f930df 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
@@ -24,9 +24,9 @@ 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.AbstractOIDCSSOConfiguration;
-import net.shibboleth.oidc.profile.config.OIDCUserInfoConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenAudienceConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCUserInfoConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenAudienceConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 d0d51b7..7304c9f 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
@@ -24,7 +24,7 @@ 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.oauth2.config.OAuth2TokenConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 2122f34..3996bdc 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
@@ -24,7 +24,7 @@ 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.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A predicate implementation that forwards to {@link AbstractOIDCSSOConfiguration#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 5e9b3d4..6b53581 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
@@ -24,7 +24,7 @@ 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.oauth2.config.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 b6c0771..f4bbc7e 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
@@ -24,7 +24,7 @@ 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.oauth2.config.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 50b6a63..eb43f5c 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
@@ -24,7 +24,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 759475c..272199e 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
@@ -24,7 +24,7 @@ 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.oauth2.config.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2FlowAwareProfileConfiguration;
 
 /**
  * A predicate implementation that forwards to
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 659d320..1aacb81 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
@@ -24,7 +24,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /** A predicate that determines if the RequestObject JWT should be signed based on the profile configuration.*/
 public class SignRequestObjectPredicate extends AbstractRelyingPartyPredicate {
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 a95a743..0bca0fd 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
@@ -27,7 +27,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * 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 afcbd32..e3c3374 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
@@ -26,8 +26,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenAudienceConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenAudienceConfiguration;
 
 /**
  * A function that returns
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 41a91ac..b518dd4 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
@@ -24,8 +24,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenAudienceConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenAudienceConfiguration;
 
 /**
  * A function that returns
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 2dcb003..17e6f44 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
@@ -24,7 +24,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A predicate that returns {@link OIDCAuthorizationConfiguration#isAcrRequestAlwaysEssential(ProfileRequestContext)}
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 a6bc26b..df2307d 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A function that obtains
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 1fb97a7..77e3a7c 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
@@ -30,7 +30,7 @@ import com.google.common.collect.ImmutableCollection.Builder;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 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;
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 3f7272e..fcd0423 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
@@ -27,7 +27,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A function that returns
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 a934440..6cd7a85 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A function that returns
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 2c58a50..1d6bded 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
@@ -25,7 +25,7 @@ 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.jwt.claims.ClaimsValidator;
-import net.shibboleth.oidc.profile.oauth2.config.AbstractOAuth2ClientAuthenticableProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2ClientAuthenticableProfileConfiguration;
 
 /**
  * A function that obtains
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 0f1bf25..e1e8f37 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
@@ -26,8 +26,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
-import net.shibboleth.oidc.profile.config.OIDCUserInfoConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCUserInfoConfiguration;
 
 /**
  * A function that obtains
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 47e71eb..19762eb 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 
 /**
  * A function that obtains
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 72f8c9d..f1fff90 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
@@ -29,8 +29,8 @@ 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.oidc.profile.config.OIDCAuthorizationConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenConfiguration;
 
 /**
  * A function that obtains
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 c676659..7f7d76b 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A function that returns
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 d79b54c..82a5913 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
@@ -27,7 +27,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A function that returns
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 f2b4041..c667fb7 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
@@ -25,7 +25,7 @@ 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.jwt.claims.ClaimsValidator;
-import net.shibboleth.oidc.profile.oauth2.config.AbstractOAuth2TokenValidatingConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2TokenValidatingConfiguration;
 
 /**
  * A function that obtains
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 1bdf1f6..adbfdb1 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
@@ -27,7 +27,7 @@ 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.OAuth2TokenConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenConfiguration;
 
 /**
  * A function that returns
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 84c4b42..555addf 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
 
 /**
  * A function that returns
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 6ccd9cc..83c6e38 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
@@ -27,7 +27,7 @@ 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.metadata.policy.MetadataPolicy;
-import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCDynamicRegistrationConfiguration;
 
 /**
  * A function that returns
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 544fb57..00385f6 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCDynamicRegistrationConfiguration;
 
 /**
  * A function that returns
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 b648d3e..863c2ec 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
@@ -26,7 +26,7 @@ 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.OAuth2TokenRevocationConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenRevocationConfiguration;
 
 /**
  * A function that returns
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 dd6baa2..98cd8f7 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
@@ -24,8 +24,8 @@ 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.OAuth2TokenRevocationConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration.OAuth2TokenRevocationMethod;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenRevocationConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenRevocationConfiguration.OAuth2TokenRevocationMethod;
 
 /**
  * A function that returns
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 da1d390..6f858a0 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
@@ -26,7 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.AbstractRelyingPartyLookupFunction;
-import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCDynamicRegistrationConfiguration;
 
 /**
  * A function that returns
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 0e9bfb1..61f7087 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
@@ -29,7 +29,7 @@ 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.oidc.profile.oauth2.config.AbstractOAuth2ClientAuthenticableProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.impl.AbstractOAuth2ClientAuthenticableProfileConfiguration;
 
 /**
  * A function that obtains
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
index adfd952..ff28db7 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
@@ -21,7 +21,7 @@ import java.util.function.Predicate;
 
 import org.opensaml.messaging.encoder.MessageEncoder;
 
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
 
 /**
  * An OIDC message encoder interface which requires implementations to test if the request 
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 4542cee..bf04487 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
@@ -1,3 +1,19 @@
+/*
+ * 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.oauth2.config;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
similarity index 95%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationConfiguration.java
rename to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
index b1507ba..388e980 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2AuthorizationProfileConfiguration.java
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.oidc.profile.config.OIDCSSOConfiguration;
+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;
@@ -36,7 +36,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
  * <p>This is common to both Authorization Server and Client roles.</p>
  * 
  */
-public interface OAuth2AuthorizationConfiguration extends OIDCSSOConfiguration {
+public interface OAuth2AuthorizationProfileConfiguration extends OIDCSSOProfileConfiguration {
     
     /** ID for this profile configuration. */
     @Nonnull @NotEmpty public static final String PROFILE_ID = "http://shibboleth.net/ns/profiles/oidc/sso/browser";
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/OAuth2FlowAwareProfileConfiguration.java
similarity index 89%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2ProfileConfiguration.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2FlowAwareProfileConfiguration.java
index 664a761..c5a85de 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/OAuth2FlowAwareProfileConfiguration.java
@@ -21,9 +21,11 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-/** Common interface for Oauth 2.0 Profile Configurations.*/
-public interface OAuth2ProfileConfiguration {
-
+/**
+ * Interface for profile configurations that understand OAuth 2.0 authorization grants corresponding to OIDC 
+ * authentication flows.
+ */
+public interface OAuth2FlowAwareProfileConfiguration extends OAuth2ProfileConfiguration {
     
     /**
      * Get whether authorization code flow is supported by this profile.
@@ -52,6 +54,5 @@ public interface OAuth2ProfileConfiguration {
      * @return whether refresh tokens are supported by this profile
      */
     boolean isRefreshTokensEnabled(@Nullable final ProfileRequestContext profileRequestContext);
-    
 
 }
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 664a761..87f029b 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,41 +17,7 @@
 
 package net.shibboleth.oidc.profile.oauth2.config;
 
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-
-/** Common interface for Oauth 2.0 Profile Configurations.*/
+/** Common interface for OAuth 2.0 Profile Configurations.*/
 public interface OAuth2ProfileConfiguration {
 
-    
-    /**
-     * Get whether authorization code flow is supported by this profile.
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return whether authorization code flow is supported by this profile
-     */
-   boolean isAuthorizationCodeFlowEnabled(@Nullable final ProfileRequestContext profileRequestContext);
-    
-    
-    /**
-     * Get whether hybrid flow is supported by this profile.
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return whether hybrid flow is supported by this profile
-     */
-   boolean isImplicitFlowEnabled(@Nullable final ProfileRequestContext profileRequestContext);
-   
-    /**
-     * Get whether refresh tokens are supported by this profile.
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return whether refresh tokens are supported by this profile
-     */
-    boolean isRefreshTokensEnabled(@Nullable final ProfileRequestContext profileRequestContext);
-    
-
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionProfileConfiguration.java
similarity index 63%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionProfileConfiguration.java
index adfd952..f86680d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/OIDCMessageEncoder.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionProfileConfiguration.java
@@ -15,20 +15,11 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.encoding;
-
-import java.util.function.Predicate;
-
-import org.opensaml.messaging.encoder.MessageEncoder;
-
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+package net.shibboleth.oidc.profile.oauth2.config;
 
 /**
- * An OIDC message encoder interface which requires implementations to test if the request 
- * method is supported by the encoder. 
- * 
- * @since 2.2.0
+ * Profile configuration for OAuth2 Token Introspection.
  */
-public interface OIDCMessageEncoder extends Predicate<HttpRequestMethod>, MessageEncoder {    
+public interface OAuth2TokenIntrospectionProfileConfiguration {
 
 }
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenProfileConfiguration.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenProfileConfiguration.java
index 92d5fbf..8890106 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenProfileConfiguration.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenProfileConfiguration.java
@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
-import net.shibboleth.oidc.profile.config.OIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
 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;
@@ -34,7 +34,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 /**
  * OIDC-aware OAuth 2.0 token endpoint profile configuration. 
  */
-public interface OAuth2TokenProfileConfiguration extends OIDCSSOConfiguration, 
+public interface OAuth2TokenProfileConfiguration extends OIDCSSOProfileConfiguration, 
         OAuth2RefreshTokenProducingProfileConfiguration {
     
     
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/oauth2/config/OAuth2TokenRevocationProfileConfiguration.java
similarity index 62%
copy from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCIDTokenProducingProfileConfiguration.java
copy to oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationProfileConfiguration.java
index ed5afad..0b1df61 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/oauth2/config/OAuth2TokenRevocationProfileConfiguration.java
@@ -15,47 +15,47 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+
+package net.shibboleth.oidc.profile.oauth2.config;
 
 import java.time.Duration;
-import java.util.Map;
-import java.util.function.BiFunction;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenRevocationConfiguration.OAuth2TokenRevocationMethod;
 import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
 
-/** 
- * Configuration common to ID Token producing profiles.
+/**
+ * Configuration for the OAuth 2.0 Token Revocation profile.
  */
-public interface OIDCIDTokenProducingProfileConfiguration {
-
+public interface OAuth2TokenRevocationProfileConfiguration {
     
     /**
-     * Get ID token lifetime.
+     * Get the revocation method used when revoking a token.
      * 
-     * <p>Defaults to 1 hour.</p>
+     * @param profileRequestContext profile request context.
+     * @return The revocation method used when revoking a token.
      * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return ID token lifetime
+     * @since 2.1.0
      */
-    @Positive @Nonnull Duration getIDTokenLifetime(@Nullable final ProfileRequestContext profileRequestContext);
+    public OAuth2TokenRevocationMethod getRevocationMethod(
+            @Nullable final ProfileRequestContext profileRequestContext);
     
     /**
-     * Get the bi-function for manipulating id_token claims.
+     * Get revocation lifetime.
+     * 
+     * <p>Defaults to 6 hours.</p>
      * 
      * @param profileRequestContext profile request context
      * 
-     * @return the bi-function for manipulating id_token claims
+     * @return revocation lifetime
      * 
      * @since 2.1.0
      */
-    @Nonnull
-    public BiFunction<ProfileRequestContext,Map<String,Object>,Map<String,Object>> getIDTokenManipulationStrategy(
-            @Nullable final ProfileRequestContext profileRequestContext);
-     
+    @Positive @Nonnull
+    public Duration getRevocationLifetime(@Nullable final ProfileRequestContext profileRequestContext);
+
 }
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCCoreProtocolConfigurationTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCCoreProtocolConfigurationTest.java
index 4ff72fd..d9d1822 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCCoreProtocolConfigurationTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/OIDCCoreProtocolConfigurationTest.java
@@ -26,6 +26,7 @@ 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.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 /**
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfigurationTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfigurationTest.java
index 9b5fed0..00188e3 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfigurationTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfigurationTest.java
@@ -20,6 +20,8 @@ package net.shibboleth.oidc.profile.oauth2.config;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import net.shibboleth.oidc.profile.oauth2.config.impl.OAuth2TokenRevocationConfiguration;
+
 import org.testng.Assert;
 
 /**
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
similarity index 98%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
index 8937536..122867d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/AbstractOIDCSSOConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/AbstractOIDCSSOConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import java.time.Duration;
 import java.util.Collection;
@@ -36,9 +36,11 @@ import com.google.common.base.Predicates;
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
 import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
 import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCIDTokenProducingProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCSSOProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2RefreshTokenProducingProfileConfiguration;
+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;
@@ -51,7 +53,7 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
  * Base class for profiles that support OIDC's concept of SSO, which spans multiple endpoints.
  */
 public abstract class AbstractOIDCSSOConfiguration extends AbstractOAuth2FlowAwareProfileConfiguration
-        implements OIDCSSOConfiguration, OIDCIDTokenProducingProfileConfiguration,
+        implements OIDCSSOProfileConfiguration, OIDCIDTokenProducingProfileConfiguration,
         AuthenticationProfileConfiguration, OverriddenIssuerProfileConfiguration, 
         OAuth2AccessTokenProducingProfileConfiguration, OAuth2RefreshTokenProducingProfileConfiguration,
             AttributeResolvingProfileConfiguration {
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCAuthorizationConfiguration.java
similarity index 98%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCAuthorizationConfiguration.java
index e2e1ebc..42c6b62 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCAuthorizationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCAuthorizationConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import java.security.Principal;
 import java.time.Duration;
@@ -36,6 +36,8 @@ import com.google.common.base.Predicates;
 
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
 import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCAuthenticationProviderProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCAuthenticationRelyingPartyProxyProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationCodeProducingProfileConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenHandlingProfileConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
@@ -53,9 +55,10 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
  * <p>It is also usable as a Token endpoint configuration if no non-OIDC use cases are needed.</p>
  */
 public class OIDCAuthorizationConfiguration extends AbstractOIDCSSOConfiguration
-        implements OIDCAuthenticationRelyingPartyProxyConfiguration, OIDCAuthenticationProviderConfiguration,
-        OAuth2AuthorizationCodeProducingProfileConfiguration, OAuth2TokenHandlingProfileConfiguration,
-        AuthenticationProfileConfiguration, OverriddenIssuerProfileConfiguration {
+        implements OIDCAuthenticationRelyingPartyProxyProfileConfiguration, 
+        OIDCAuthenticationProviderProfileConfiguration, OAuth2AuthorizationCodeProducingProfileConfiguration, 
+        OAuth2TokenHandlingProfileConfiguration, AuthenticationProfileConfiguration, 
+        OverriddenIssuerProfileConfiguration {
 
     /** ID for this profile configuration. */
     @Nonnull @NotEmpty public static final String PROFILE_ID = "http://shibboleth.net/ns/profiles/oidc/sso/browser";
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCDynamicRegistrationConfiguration.java
similarity index 96%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCDynamicRegistrationConfiguration.java
index debc9fc..ac0b3c3 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCDynamicRegistrationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCDynamicRegistrationConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import java.time.Duration;
 import java.util.Map;
@@ -28,7 +28,8 @@ 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.AbstractOAuth2FlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCDynamicRegistrationProfileConfiguration;
+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;
@@ -76,6 +77,7 @@ public class OIDCDynamicRegistrationConfiguration extends AbstractOAuth2FlowAwar
         setRegistrationValidityPeriod(Duration.ofHours(24));
         setSecretExpirationPeriod(Duration.ofDays(365));
         metadataPolicyLookupStrategy = FunctionSupport.constant(null);
+        registrationValidityPeriodLookupStrategy = FunctionSupport.constant(null);
     }
 
     /** {@inheritDoc} */
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCProviderInformationConfiguration.java
similarity index 93%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCProviderInformationConfiguration.java
index a5770f6..d365b36 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCProviderInformationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCProviderInformationConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import java.util.function.Function;
 
@@ -26,6 +26,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCProviderInformationProfileConfiguration;
 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;
@@ -34,7 +35,7 @@ import net.shibboleth.utilities.java.support.logic.FunctionSupport;
  * Profile configuration for the OpenID Connect Provider Configuration.
  */
 public class OIDCProviderInformationConfiguration extends AbstractConditionalProfileConfiguration
-        implements OverriddenIssuerProfileConfiguration {
+        implements OIDCProviderInformationProfileConfiguration, OverriddenIssuerProfileConfiguration {
 
     /** OIDC base protocol URI. Section 4 is relevant. */
     public static final String PROTOCOL_URI = "http://openid.net/specs/openid-connect-discovery-1_0.html";
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCPublishKeySetConfiguration.java
similarity index 87%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCPublishKeySetConfiguration.java
index bec75ed..5cc50c7 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCPublishKeySetConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCPublishKeySetConfiguration.java
@@ -15,17 +15,19 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import javax.annotation.Nonnull;
 
 import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCPublishKeySetProfileConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 /**
  * Profile configuration for publishing OP key set.
  */
-public class OIDCPublishKeySetConfiguration extends AbstractConditionalProfileConfiguration {
+public class OIDCPublishKeySetConfiguration extends AbstractConditionalProfileConfiguration 
+                                                    implements OIDCPublishKeySetProfileConfiguration {
 
     /** OIDC base protocol URI. Section 3 jwks_uri is the relevant. */
     public static final String PROTOCOL_URI =
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCUserInfoConfiguration.java
similarity index 88%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCUserInfoConfiguration.java
index 284ab67..3688072 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/OIDCUserInfoConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/config/impl/OIDCUserInfoConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.config;
+package net.shibboleth.oidc.profile.config.impl;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -31,7 +31,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.google.common.base.Predicates;
 
 import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
-import net.shibboleth.oidc.profile.oauth2.config.AbstractOAuth2TokenValidatingConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCUserInfoProfileConfiguration;
+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;
@@ -43,7 +44,7 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
  * Profile configuration for the OpenID Connect core protocol userinfo endpoint.
  */
 public class OIDCUserInfoConfiguration extends AbstractOAuth2TokenValidatingConfiguration
-        implements AttributeResolvingProfileConfiguration {
+        implements OIDCUserInfoProfileConfiguration, AttributeResolvingProfileConfiguration {
 
     /** OIDC base protocol URI. */
     @Nonnull @NotEmpty public static final String PROTOCOL_URI = "http://openid.net/specs/openid-connect-core-1_0.html";
@@ -104,13 +105,7 @@ public class OIDCUserInfoConfiguration extends AbstractOAuth2TokenValidatingConf
         resolveAttributesPredicate = Constraint.isNotNull(condition, "Resolve attributes predicate cannot be null");
     }
     
-    /**
-     * Get whether encryption is optional in the face of a missing key, etc.
-     * 
-     * @param profileRequestContext current profile request context
-     * 
-     * @return true iff encryption is optional
-     */
+    @Override
     public boolean isEncryptionOptional(@Nullable final ProfileRequestContext profileRequestContext) {
         return encryptionOptionalPredicate.test(profileRequestContext);
     }
@@ -133,16 +128,7 @@ public class OIDCUserInfoConfiguration extends AbstractOAuth2TokenValidatingConf
         encryptionOptionalPredicate = Constraint.isNotNull(condition, "Encryption optional predicate cannot be null");
     }
     
-    /**
-     * Get the set of attribute IDs which should be omitted from the UserInfo token.
-     * 
-     * <p>Default behavior is to include all claims, but omiited claims also affect the set that
-     * may need to be embedded for recovery into the access/refresh tokens.</p>
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return the attribute IDs to omit from UserInfo token
-     */
+    @Override
     @Nonnull @NonnullElements @NotLive public Set<String> getDeniedUserInfoAttributes(
             @Nullable final ProfileRequestContext profileRequestContext) {
         
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 13df3e4..1f49834 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
@@ -35,7 +35,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+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;
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 791e39f..0406c82 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
@@ -30,7 +30,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.profile.core.OIDCAuthenticationRequest;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+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;
 
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 54ab901..853827d 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
@@ -32,9 +32,9 @@ 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.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.encoding.OIDCMessageEncoder;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+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;
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 956c331..19a90df 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,7 @@ import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
 import net.shibboleth.oidc.security.jose.DecryptionParameters;
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 7659769..94d9428 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
@@ -41,7 +41,7 @@ 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.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.config.logic.EncryptionOptionalPredicate;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
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 2f7c575..862b472 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
@@ -38,7 +38,7 @@ 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;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.security.credential.ClientSecretCredential;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningParameters;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2ClientAuthenticableProfileConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
similarity index 99%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
index 618595a..97e86a7 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2ClientAuthenticableProfileConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.security.Principal;
 import java.util.Collection;
@@ -37,6 +37,7 @@ import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
 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.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;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2FlowAwareProfileConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
similarity index 95%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2FlowAwareProfileConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
index b4ca87d..5fd3a00 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2FlowAwareProfileConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2FlowAwareProfileConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.util.function.Predicate;
 
@@ -26,7 +26,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import com.google.common.base.Predicates;
 
-import net.shibboleth.oidc.profile.config.OIDCProfileConfiguration;
+import net.shibboleth.oidc.profile.config.OIDCFlowAwareProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2FlowAwareProfileConfiguration;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 /**
@@ -34,8 +35,8 @@ import net.shibboleth.utilities.java.support.logic.Constraint;
  * configurations.
  */
 public abstract class AbstractOAuth2FlowAwareProfileConfiguration 
-        extends AbstractOAuth2ClientAuthenticableProfileConfiguration implements OIDCProfileConfiguration, 
-        OAuth2ProfileConfiguration {
+        extends AbstractOAuth2ClientAuthenticableProfileConfiguration implements OIDCFlowAwareProfileConfiguration, 
+        OAuth2FlowAwareProfileConfiguration {
 
     /** Predicate used to indicate whether authorization code flow is supported by this profile. Default true. */
     @Nonnull private Predicate<ProfileRequestContext> authorizationCodeFlowPredicate;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2TokenValidatingConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
similarity index 98%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2TokenValidatingConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
index e22c004..ff0e403 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/AbstractOAuth2TokenValidatingConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/AbstractOAuth2TokenValidatingConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.util.function.Function;
 
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenAudienceConfiguration.java
similarity index 96%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenAudienceConfiguration.java
index 57076f9..e895289 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenAudienceConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenAudienceConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.time.Duration;
 import java.util.function.Function;
@@ -31,6 +31,7 @@ import com.google.common.base.Predicates;
 import net.shibboleth.idp.profile.config.AbstractConditionalProfileConfiguration;
 import net.shibboleth.idp.profile.config.AttributeResolvingProfileConfiguration;
 import net.shibboleth.idp.profile.config.OverriddenIssuerProfileConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2AccessTokenProducingProfileConfiguration;
 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;
@@ -44,7 +45,7 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
  * to the parties intended to process them, as distinct from the clients that use them.</p>
  */
 public class OAuth2TokenAudienceConfiguration  extends AbstractConditionalProfileConfiguration
-        implements OverriddenIssuerProfileConfiguration, 
+        implements OverriddenIssuerProfileConfiguration, OAuth2AccessTokenProducingProfileConfiguration,
                     AttributeResolvingProfileConfiguration {
 
     /** OAuth2 Token Revocation URI. */
@@ -175,6 +176,7 @@ public class OAuth2TokenAudienceConfiguration  extends AbstractConditionalProfil
      * 
      * @return access token type, or null for unspecified/opaque
      */
+     @Override
      @Nullable @NotEmpty public String getAccessTokenType(@Nullable final ProfileRequestContext profileRequestContext) {
          return accessTokenTypeLookupStrategy.apply(profileRequestContext);
      }
@@ -206,6 +208,7 @@ public class OAuth2TokenAudienceConfiguration  extends AbstractConditionalProfil
       * 
       * @return access token lifetime
       */
+     @Override
      @Positive @Nonnull
      public Duration getAccessTokenLifetime(@Nullable final ProfileRequestContext profileRequestContext) {
          final Duration lifetime = accessTokenLifetimeLookupStrategy.apply(profileRequestContext);
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenConfiguration.java
similarity index 97%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenConfiguration.java
index 4fa49f2..f709444 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -33,7 +33,8 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import com.google.common.base.Predicates;
 import com.nimbusds.oauth2.sdk.GrantType;
 
-import net.shibboleth.oidc.profile.config.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.config.impl.AbstractOIDCSSOConfiguration;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenProfileConfiguration;
 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;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenIntrospectionConfiguration.java
similarity index 87%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenIntrospectionConfiguration.java
index 8824315..9ea6038 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenIntrospectionConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenIntrospectionConfiguration.java
@@ -15,17 +15,19 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 
 import javax.annotation.Nonnull;
 
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenIntrospectionProfileConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 /**
  * Profile configuration for the OAuth2 Token Introspection.
  */
-public class OAuth2TokenIntrospectionConfiguration extends AbstractOAuth2TokenValidatingConfiguration {
+public class OAuth2TokenIntrospectionConfiguration extends AbstractOAuth2TokenValidatingConfiguration implements
+    OAuth2TokenIntrospectionProfileConfiguration {
 
     /** OAuth2 Token Revocation URI. */
     @Nonnull @NotEmpty public static final String PROTOCOL_URI = "https://tools.ietf.org/html/rfc7662";
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenRevocationConfiguration.java
similarity index 91%
rename from oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
rename to oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenRevocationConfiguration.java
index a6c51b0..e9a9244 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/oauth2/config/OAuth2TokenRevocationConfiguration.java
+++ b/oidc-common-profile-impl/src/main/java/net/shibboleth/oidc/profile/oauth2/config/impl/OAuth2TokenRevocationConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.oidc.profile.oauth2.config;
+package net.shibboleth.oidc.profile.oauth2.config.impl;
 
 import java.time.Duration;
 import java.util.function.Function;
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationProfileConfiguration;
 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;
@@ -34,7 +35,8 @@ import net.shibboleth.utilities.java.support.logic.FunctionSupport;
 /**
  * Profile configuration for the OAuth2 Token Revocation.
  */
-public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValidatingConfiguration {
+public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValidatingConfiguration implements
+                    OAuth2TokenRevocationProfileConfiguration {
 
     /** OAuth2 Token Revocation URI. */
     @Nonnull @NotEmpty public static final String PROTOCOL_URI = "https://tools.ietf.org/html/rfc7009";
@@ -104,14 +106,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
         revocationMethodLookupStrategy = FunctionSupport.constant(method != null ? method.toString() : null);
     }
 
-    /**
-     * Get the revocation method used when revoking a token.
-     * 
-     * @param profileRequestContext profile request context.
-     * @return The revocation method used when revoking a token.
-     * 
-     * @since 2.1.0
-     */
+    @Override
     public OAuth2TokenRevocationMethod getRevocationMethod(
             @Nullable final ProfileRequestContext profileRequestContext) {
         final String method = revocationMethodLookupStrategy.apply(profileRequestContext);
@@ -138,17 +133,7 @@ public class OAuth2TokenRevocationConfiguration extends AbstractOAuth2TokenValid
         revocationLifetimeLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
 
-    /**
-     * Get revocation lifetime.
-     * 
-     * <p>Defaults to 6 hours.</p>
-     * 
-     * @param profileRequestContext profile request context
-     * 
-     * @return revocation lifetime
-     * 
-     * @since 2.1.0
-     */
+    @Override
     @Positive @Nonnull
     public Duration getRevocationLifetime(@Nullable final ProfileRequestContext profileRequestContext) {
         final Duration lifetime = revocationLifetimeLookupStrategy.apply(profileRequestContext);
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 4823091..7df4804 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
@@ -29,10 +29,10 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
-import net.shibboleth.oidc.profile.config.OIDCAuthorizationConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCAuthorizationConfiguration;
 import net.shibboleth.oidc.profile.encoding.OIDCMessageEncoder;
 import net.shibboleth.oidc.profile.encoding.impl.AbstractOIDCMessageEncoder;
-import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationConfiguration.HttpRequestMethod;
+import net.shibboleth.oidc.profile.oauth2.config.OAuth2AuthorizationProfileConfiguration.HttpRequestMethod;
 
 /** Test of the AuthenticationRequestMessageEncoderFactory class.*/
 public class AuthenticationRequestMessageEncoderFactoryTest {
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 730f232..0b1ecb2 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
@@ -44,7 +44,7 @@ import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileR
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
-import net.shibboleth.oidc.profile.config.OIDCPublishKeySetConfiguration;
+import net.shibboleth.oidc.profile.config.impl.OIDCPublishKeySetConfiguration;
 import net.shibboleth.oidc.profile.config.navigate.JWKCredentialsToPublishLookupStrategy;
 import net.shibboleth.oidc.profile.messaging.JSONSuccessResponse;
 import net.shibboleth.oidc.security.credential.impl.BasicJWKCredentialFactoryBean;

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


More information about the commits mailing list