[java-idp-plugin-duo] 01/01: JDUO-71 - Upgrade for IdP V5 compatibility
Phil Smart
philip.smart at jisc.ac.uk
Tue Jul 4 14:47:48 UTC 2023
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch dev/JDUO-71
in repository java-idp-plugin-duo.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-duo.git;a=commit;h=e05e0834b147c899263ff377babddd88cde749e5
commit e05e0834b147c899263ff377babddd88cde749e5
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Thu Jun 29 17:19:43 2023 +0100
JDUO-71 - Upgrade for IdP V5 compatibility
- Update HttpClient to V5
- net.shibboleth.utilities.java.support -> net.shibboleth.shared
- net.shibboleth.ext.spring -> net.shibboleth.shared.spring
- Update internal dependencies
- Remove repositories from POM
https://shibboleth.atlassian.net/browse/JDUO-71
---
idp-duo-api/pom.xml | 11 +++-
.../authn/duo/AbstractDuoAuthenticationAction.java | 9 ++-
.../plugin/authn/duo/AbstractDuoOIDCClient.java | 3 +-
.../authn/duo/DefaultDuoOIDCIntegration.java | 48 ++++++++------
.../idp/plugin/authn/duo/DuoOIDCAuthAPI.java | 3 +-
.../idp/plugin/authn/duo/DuoOIDCClient.java | 3 +-
.../idp/plugin/authn/duo/DuoOIDCIntegration.java | 3 +-
.../authn/duo/DynamicDuoOIDCIntegration.java | 7 +-
.../plugin/authn/duo/SimpleDuoOIDCIntegration.java | 42 +++++++-----
.../idp/plugin/authn/duo/URISupport.java | 13 ++--
.../idp/plugin/authn/duo/audit/AuditFields.java | 5 +-
.../duo/context/DuoOIDCAuthenticationContext.java | 1 +
.../idp/plugin/authn/duo/model/DuoHealthCheck.java | 3 +-
.../authn/duo/DefaultDuoOIDCIntegrationTest.java | 6 +-
idp-duo-impl/pom.xml | 39 +++++-------
.../duo/audit/impl/FixedStringAuditExtractor.java | 6 +-
.../duo/impl/DefaultDuoOIDCClientRegistry.java | 17 +++--
.../impl/DefaultRedirectURICreationStrategy.java | 8 +--
.../duo/impl/DuoIssuerClaimLookupStrategy.java | 6 +-
.../authn/duo/impl/DuoOIDCAuthnController.java | 15 ++---
.../idp/plugin/authn/duo/impl/DuoSupport.java | 2 +-
.../authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java | 2 +-
.../duo/impl/PopulateDuoAuthenticationContext.java | 32 +++++-----
.../authn/duo/impl/ValidateDuoResponseState.java | 2 +-
.../impl/ValidateDuoTokenAuthenticationResult.java | 9 ++-
.../plugin/authn/duo/impl/ValidateTokenClaims.java | 15 ++---
.../authn/duo/impl/ValidateTokenSignature.java | 11 ++--
.../META-INF/net.shibboleth.idp/postconfig.xml | 8 ---
.../flows/authn/DuoOIDC/duo-oidc-authn-beans.xml | 6 +-
.../impl/AbstractAuthnXmlFlowExecutionTests.java | 35 +++++-----
.../authn/duo/impl/AbstractDuoActionTest.java | 9 ++-
.../duo/impl/DefaultDuoOIDCClientRegistryTest.java | 3 +-
.../DefaultRedirectURICreationStrategyTest.java | 17 +++++
.../authn/duo/impl/DualDuoIntegrationStrategy.java | 4 +-
.../impl/DuoAudienceClaimLookupStrategyTest.java | 11 ++--
.../plugin/authn/duo/impl/DuoAuthnFlowTest.java | 12 ++--
.../duo/impl/DuoIssuerClaimLookupStrategyTest.java | 11 ++--
.../duo/impl/DuoNonceClaimLookupStrategyTest.java | 11 ++--
.../authn/duo/impl/DuoOIDCAuthnControllerTest.java | 14 ++--
.../impl/DuoUsernameClaimLookupStrategyTest.java | 11 ++--
.../duo/impl/ExchangeCodeForDuoTokenTest.java | 9 ++-
.../duo/impl/HealthCheckDuoOIDCAuthAPITest.java | 2 +-
.../duo/impl/InMemoryCredentialValidator.java | 6 +-
.../impl/PopulateDuoAuthenticationContextTest.java | 21 +++---
.../duo/impl/ValidateDuoResponseStateTest.java | 2 +-
.../ValidateDuoTokenAuthenticationResultTest.java | 4 +-
.../authn/duo/impl/ValidateTokenClaimsTest.java | 2 +-
.../authn/duo/impl/ValidateTokenSignatureTest.java | 6 +-
.../plugin/authn/mock/MockDuoOIDCClient_FAIL.java | 4 +-
.../plugin/authn/mock/MockDuoOIDCClient_OK.java | 4 +-
.../mock/MockDuoOIDCClient_OK_OLD_AUTH_TIME.java | 4 +-
.../authn/mock/MockDuoOIDCClient_UNKNOWN.java | 4 +-
.../idp/plugin/authn/mock/MockFlowBuilder.java | 2 +-
.../authn/spring/CustomFlowModelFlowBuilder.java | 4 +-
.../duo-oidc-authn-config-principal-mapping.xml | 2 +-
idp-duo-nimbus-client-impl/pom.xml | 24 +++----
.../authn/duo/nimbus/DuoOIDCNimbusModule.java | 2 +-
.../authn/duo/nimbus/DuoOIDCNimbusPlugin.java | 4 +-
.../duo/nimbus/impl/DuoHttpClientFactoryBean.java | 2 +-
.../plugin/authn/duo/nimbus/impl/NimbusClient.java | 38 +++++------
.../authn/duo/nimbus/impl/NimbusClientFactory.java | 23 ++++---
.../authn/duo/nimbus/impl/NimbusClientSupport.java | 6 +-
.../duo/nimbus/impl/NimbusClientFactoryTest.java | 4 +-
.../duo/nimbus/impl/NimbusClientSupportTest.java | 4 +-
.../authn/duo/nimbus/impl/NimbusClientTest.java | 74 +++++++++-------------
idp-duo-nimbus-distribution/pom.xml | 2 +-
idp-duo-sdk-client-impl/pom.xml | 14 ++--
.../plugin/authn/duo/sdk/DuoOIDCWebSDKModule.java | 3 +-
.../plugin/authn/duo/sdk/DuoOIDCWebSDKPlugin.java | 4 +-
.../authn/duo/sdk/impl/DuoSDKClientAdaptor.java | 7 +-
.../authn/duo/sdk/impl/DuoSDKClientFactory.java | 14 ++--
idp-duo-sdk-distribution/pom.xml | 2 +-
pom.xml | 40 ++----------
73 files changed, 392 insertions(+), 424 deletions(-)
diff --git a/idp-duo-api/pom.xml b/idp-duo-api/pom.xml
index 839a59b..61d3ed5 100644
--- a/idp-duo-api/pom.xml
+++ b/idp-duo-api/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>idp-plugin-duo-api</artifactId>
@@ -46,8 +46,13 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>${shib-shared.groupId}</groupId>
+ <artifactId>shib-attribute-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- Test dependencies -->
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoAuthenticationAction.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoAuthenticationAction.java
index d239983..9709e3f 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoAuthenticationAction.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoAuthenticationAction.java
@@ -32,9 +32,8 @@ import net.shibboleth.idp.authn.AbstractAuthenticationAction;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
/**
* <p>A base class for Duo 2FA authentication related actions.</p>
@@ -77,8 +76,8 @@ public abstract class AbstractDuoAuthenticationAction extends AbstractAuthentica
*/
public void setDuoContextLookupStrategy(
@Nonnull final Function<ProfileRequestContext,DuoOIDCAuthenticationContext> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
duoContextLookupStrategy = Constraint.isNotNull(strategy, "DuoContextLookuplookup strategy cannot be null");
}
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoOIDCClient.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoOIDCClient.java
index fed6324..8d540af 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoOIDCClient.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AbstractDuoOIDCClient.java
@@ -21,7 +21,8 @@ import java.util.UUID;
import javax.annotation.Nonnull;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* Abstract base class for {@link DuoOIDCClient} implementations. Handles the clientId and
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegration.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegration.java
index 8da13f7..0e6ced1 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegration.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegration.java
@@ -32,16 +32,17 @@ import javax.security.auth.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+
+
/**
* Data wrapper for use with Duo OIDC integrations. Holds shared-state.
@@ -99,7 +100,8 @@ public final class DefaultDuoOIDCIntegration
* @param hosts the hostnames to allow.
*/
public synchronized void setAllowedOrigins(@Nullable @NonnullElements final Collection<String> hosts) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
allowedOrigins = Set.copyOf(StringSupport.normalizeStringCollection(
Constraint.isNotNull(hosts, "Types cannot be null")));
@@ -122,7 +124,8 @@ public final class DefaultDuoOIDCIntegration
* @param host API host
*/
public synchronized void setAPIHost(@Nonnull @NotEmpty final String host) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
apiHost = Constraint.isNotNull(StringSupport.trimOrNull(host), "API host cannot be null or empty");
}
@@ -138,7 +141,8 @@ public final class DefaultDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setHealthCheckEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
healthEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Health check endpoint cannot be null or empty");
@@ -155,7 +159,8 @@ public final class DefaultDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setAuthorizeEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
authorizeEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Authorize endpoint cannot be null or empty");
@@ -172,7 +177,8 @@ public final class DefaultDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setTokenEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
tokenEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Token endpoint cannot be null or empty");
@@ -189,7 +195,8 @@ public final class DefaultDuoOIDCIntegration
* @param uri the redirect_uri
*/
public synchronized void setRegisteredRedirectURI(@Nullable final String uri) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
registeredRedirectURI = StringSupport.trimOrNull(uri);
}
@@ -224,7 +231,8 @@ public final class DefaultDuoOIDCIntegration
* @param id the client identifier.
*/
public synchronized void setClientId(@Nonnull @NotEmpty final String id) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
clientId = Constraint.isNotNull(StringSupport.trimOrNull(id), "ClientID cannot be null or empty");
}
@@ -240,7 +248,8 @@ public final class DefaultDuoOIDCIntegration
* @param key secret key
*/
public synchronized void setSecretKey(@Nonnull @NotEmpty final String key) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
secretKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Secret key cannot be null or empty");
}
@@ -268,7 +277,8 @@ public final class DefaultDuoOIDCIntegration
*/
public synchronized <T extends Principal> void setSupportedPrincipals(
@Nullable @NonnullElements final Collection<T> principals) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
supportedPrincipals.getPrincipals().clear();
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCAuthAPI.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCAuthAPI.java
index 7fc335e..8535354 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCAuthAPI.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCAuthAPI.java
@@ -21,7 +21,8 @@ import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.ThreadSafe;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* Constants defined in the Duo OIDC Auth API.
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCClient.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCClient.java
index af28ab7..0deaa17 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCClient.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCClient.java
@@ -23,7 +23,8 @@ import javax.annotation.Nullable;
import com.nimbusds.jwt.JWT;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* A client for handling Duo OIDC 2FA interactions. Clients are shared and required to be thread-safe.
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCIntegration.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCIntegration.java
index 2339e87..5f7ea1d 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCIntegration.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCIntegration.java
@@ -21,7 +21,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.shibboleth.idp.authn.principal.PrincipalSupportingComponent;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* Interface to a particular Duo OIDC integration point. In part replaces
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DynamicDuoOIDCIntegration.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DynamicDuoOIDCIntegration.java
index 7b0289b..0e409e9 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DynamicDuoOIDCIntegration.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/DynamicDuoOIDCIntegration.java
@@ -23,9 +23,10 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+
/**
* Specialised {@link DuoOIDCIntegration} that allows redirectURIs to be pre-registered or computed dynamically
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/SimpleDuoOIDCIntegration.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/SimpleDuoOIDCIntegration.java
index 5ddc4d0..405adcd 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/SimpleDuoOIDCIntegration.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/SimpleDuoOIDCIntegration.java
@@ -31,15 +31,15 @@ import javax.security.auth.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.StringSupport;
+
/**
* A data wrapper for use with Duo OIDC integrations which does not support redirectURI generation.
@@ -93,7 +93,8 @@ public final class SimpleDuoOIDCIntegration
* @param host API host
*/
public synchronized void setAPIHost(@Nonnull @NotEmpty final String host) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
apiHost = Constraint.isNotNull(StringSupport.trimOrNull(host), "API host cannot be null or empty");
}
@@ -109,7 +110,8 @@ public final class SimpleDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setHealthCheckEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
healthEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Health check endpoint cannot be null or empty");
@@ -126,7 +128,8 @@ public final class SimpleDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setAuthorizeEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
authorizeEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Authorize endpoint cannot be null or empty");
@@ -143,7 +146,8 @@ public final class SimpleDuoOIDCIntegration
* @param endpoint the endpoint.
*/
public synchronized void setTokenEndpoint(@Nonnull @NotEmpty final String endpoint) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
tokenEndpoint = Constraint.isNotNull(StringSupport.trimOrNull(endpoint),
"Token endpoint cannot be null or empty");
@@ -160,7 +164,8 @@ public final class SimpleDuoOIDCIntegration
* @param url the url.
*/
public synchronized void setRedirectURI(@Nonnull final String url) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
redirectURI = Constraint.isNotNull(StringSupport.trimOrNull(url), "Redirect URI cannot be null or empty");;
}
@@ -172,7 +177,8 @@ public final class SimpleDuoOIDCIntegration
* @param id the client identifier.
*/
public synchronized void setClientId(@Nonnull @NotEmpty final String id) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
clientId = Constraint.isNotNull(StringSupport.trimOrNull(id), "ClientID cannot be null or empty");
}
@@ -188,7 +194,8 @@ public final class SimpleDuoOIDCIntegration
* @param key secret key
*/
public synchronized void setSecretKey(@Nonnull @NotEmpty final String key) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
secretKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Secret key cannot be null or empty");
}
@@ -216,7 +223,8 @@ public final class SimpleDuoOIDCIntegration
*/
public synchronized <T extends Principal> void setSupportedPrincipals(
@Nullable @NonnullElements final Collection<T> principals) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
supportedPrincipals.getPrincipals().clear();
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/URISupport.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/URISupport.java
index a3e6e4d..c7b53cc 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/URISupport.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/URISupport.java
@@ -23,7 +23,9 @@ import java.net.URISyntaxException;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
-import org.apache.http.client.utils.URIBuilder;
+import org.apache.hc.core5.net.URIBuilder;
+
+
/** URL support class.*/
@ThreadSafe
@@ -57,19 +59,16 @@ public final class URISupport {
if (port == 80) {
usedPort = -1;
}
- } else if ("https".equalsIgnoreCase(scheme)) {
+ } else if ("https".equalsIgnoreCase(scheme) && port == 443) {
// ignore port iff using the default https port
- if (port == 443) {
- usedPort = -1;
- }
+ usedPort = -1;
}
- final URI uri = new URIBuilder()
+ return new URIBuilder()
.setScheme(scheme)
.setHost(host)
.setPort(usedPort)
.setPath(path)
.build();
- return uri;
}
/**
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/AuditFields.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/AuditFields.java
index e089aee..5d85d08 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/AuditFields.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/AuditFields.java
@@ -19,8 +19,9 @@ package net.shibboleth.idp.plugin.authn.duo.audit;
import javax.annotation.Nonnull;
-import net.shibboleth.idp.profile.context.AuditContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.profile.context.AuditContext;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/** Constants to use for Duo audit logging fields stored in an {@link AuditContext}. */
public final class AuditFields {
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/context/DuoOIDCAuthenticationContext.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/context/DuoOIDCAuthenticationContext.java
index 386953a..22caf9b 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/context/DuoOIDCAuthenticationContext.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/context/DuoOIDCAuthenticationContext.java
@@ -29,6 +29,7 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
+
/**
* <p>Mutable Context that carries the Duo integration, request-response state, authorization code,
* and Duo authentication result token.</p>
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/model/DuoHealthCheck.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/model/DuoHealthCheck.java
index a8a7884..f7a3e6c 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/model/DuoHealthCheck.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/model/DuoHealthCheck.java
@@ -27,7 +27,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* <p>Represents a health check response from Duo's 2FA endpoint.</p>
diff --git a/idp-duo-api/src/test/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegrationTest.java b/idp-duo-api/src/test/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegrationTest.java
index e4c0dfc..8f80ac2 100644
--- a/idp-duo-api/src/test/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegrationTest.java
+++ b/idp-duo-api/src/test/java/net/shibboleth/idp/plugin/authn/duo/DefaultDuoOIDCIntegrationTest.java
@@ -17,11 +17,11 @@
package net.shibboleth.idp.plugin.authn.duo;
-import org.testng.annotations.Test;
+import java.util.Set;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import org.testng.annotations.Test;
-import java.util.Set;
+import net.shibboleth.shared.component.ComponentInitializationException;
/** Test for the DefaultDuoOIDCIntegration. */
public class DefaultDuoOIDCIntegrationTest {
diff --git a/idp-duo-impl/pom.xml b/idp-duo-impl/pom.xml
index 86dbf88..8ebcefb 100644
--- a/idp-duo-impl/pom.xml
+++ b/idp-duo-impl/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<name>Shibboleth IdP :: Plugins :: Duo 2FA Login Flow Impl</name>
@@ -37,11 +37,6 @@
<groupId>net.shibboleth.oidc</groupId>
<artifactId>oidc-common-crypto-impl</artifactId>
<scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>net.shibboleth.oidc</groupId>
- <artifactId>oidc-common-crypto-api</artifactId>
- <scope>provided</scope>
</dependency>
<dependency>
<groupId>${idp.groupId}</groupId>
@@ -73,21 +68,16 @@
<artifactId>opensaml-messaging-api</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>net.shibboleth.utilities</groupId>
- <artifactId>java-support</artifactId>
- <scope>provided</scope>
- </dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>${spring-webflow.groupId}</groupId>
<artifactId>spring-webflow</artifactId>
@@ -132,18 +122,23 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>net.shibboleth.idp</groupId>
- <artifactId>idp-conf</artifactId>
- <scope>test</scope>
- </dependency>
+ <groupId>${idp.groupId}</groupId>
+ <artifactId>idp-testing</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>net.shibboleth.idp</groupId>
<artifactId>idp-conf-impl</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>${shib-shared.groupId}</groupId>
+ <artifactId>shib-testing</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
- <groupId>net.shibboleth.ext</groupId>
- <artifactId>spring-extensions</artifactId>
+ <groupId>${shib-shared.groupId}</groupId>
+ <artifactId>shib-spring</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/impl/FixedStringAuditExtractor.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/impl/FixedStringAuditExtractor.java
index d0488da..157b2ed 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/impl/FixedStringAuditExtractor.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/audit/impl/FixedStringAuditExtractor.java
@@ -23,9 +23,9 @@ import javax.annotation.Nonnull;
import org.opensaml.profile.context.ProfileRequestContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
/** A simple audit extractor that allows a fixed string to be logged.*/
public class FixedStringAuditExtractor implements Function<ProfileRequestContext, String> {
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistry.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistry.java
index a5a6aaa..ff6b452 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistry.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistry.java
@@ -38,12 +38,11 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientFactory;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientRegistry;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoRegistryException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
/**
* <p>The default Duo Client registry for mapping a {@link DuoOIDCIntegration} to either a new
@@ -85,7 +84,7 @@ public class DefaultDuoOIDCClientRegistry extends AbstractIdentifiableInitializa
/** Constructor.*/
public DefaultDuoOIDCClientRegistry() {
//initial capacity is 1, as that is the most likely number ever to be created
- clientRegistry = new ConcurrentHashMap<DuoOIDCIntegration, DuoOIDCClient>(1);
+ clientRegistry = new ConcurrentHashMap<>(1);
clientRegistryMappingFunction = new CreateNewClientMappingFunction();
}
@@ -95,8 +94,8 @@ public class DefaultDuoOIDCClientRegistry extends AbstractIdentifiableInitializa
* @param factory the factory.
*/
public synchronized void setClientFactory(@Nonnull final DuoOIDCClientFactory factory) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
clientFactory = Constraint.isNotNull(factory, "Duo client factory can not be null");
}
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategy.java
index 5475f7b..ed561c2 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategy.java
@@ -25,16 +25,16 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.ThreadSafe;
-import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import jakarta.servlet.http.HttpServletRequest;
import net.shibboleth.idp.plugin.authn.duo.DynamicDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.URISupport;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
/**
* Constructive, pure, function that returns a redirect_uri from one of (ordered):
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
index 87d45fe..018ab28 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategy.java
@@ -31,9 +31,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.ParameterName;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
/**
* Find the issuer from the {@link DuoOIDCIntegration}. An issuer contains the scheme, host, and optionally, port
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnController.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnController.java
index c27f4af..4b16c5f 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnController.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnController.java
@@ -23,8 +23,6 @@ import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.ThreadSafe;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import org.opensaml.messaging.context.navigate.ChildContextLookup;
import org.opensaml.profile.action.EventIds;
@@ -35,6 +33,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import net.shibboleth.idp.authn.ExternalAuthentication;
import net.shibboleth.idp.authn.ExternalAuthenticationException;
import net.shibboleth.idp.authn.context.AuthenticationContext;
@@ -43,10 +43,9 @@ import net.shibboleth.idp.plugin.authn.duo.DuoException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.logic.Constraint;
/**
@@ -92,8 +91,8 @@ public class DuoOIDCAuthnController extends AbstractInitializableComponent{
*/
public synchronized void setDuoContextLookupStrategy(
@Nonnull final Function<ProfileRequestContext,DuoOIDCAuthenticationContext> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
duoContextLookupStrategy = Constraint.isNotNull(strategy, "DuoContext lookup strategy cannot be null");
}
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoSupport.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoSupport.java
index 3402970..df2c515 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoSupport.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoSupport.java
@@ -26,7 +26,7 @@ import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
import net.shibboleth.idp.plugin.authn.duo.DuoException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.logic.Constraint;
/**
* Helper methods for Duo 2FA.
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
index 60ba42c..cc6a719 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
@@ -33,7 +33,7 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
/**
* An action that checks the health of the Duo 2FA endpoint for the established Duo integration.
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContext.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContext.java
index 569a6b1..afd4e60 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContext.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContext.java
@@ -22,7 +22,6 @@ import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import javax.servlet.http.HttpServletRequest;
import org.opensaml.messaging.context.navigate.ChildContextLookup;
import org.opensaml.profile.action.ActionSupport;
@@ -31,6 +30,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import jakarta.servlet.http.HttpServletRequest;
import net.shibboleth.idp.authn.AbstractAuthenticationAction;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.context.AuthenticationContext;
@@ -41,11 +41,11 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DynamicDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.idp.session.context.navigate.CanonicalUsernameLookupStrategy;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.FunctionSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.FunctionSupport;
+
/**
* An action to create (or lookup) and populate the {@link DuoOIDCAuthenticationContext}
@@ -101,8 +101,8 @@ public class PopulateDuoAuthenticationContext extends AbstractAuthenticationActi
* @param duoRegistry the registry
*/
public void setClientRegistry(@Nonnull final DuoOIDCClientRegistry duoRegistry) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
clientRegistry = Constraint.isNotNull(duoRegistry,"DuoClient registry can not be null");
}
@@ -114,8 +114,8 @@ public class PopulateDuoAuthenticationContext extends AbstractAuthenticationActi
*/
public void setUsernameLookupStrategy(
@Nonnull final Function<ProfileRequestContext, String> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
usernameLookupStrategy = Constraint.isNotNull(strategy, "Username lookup strategy cannot be null");
}
@@ -128,8 +128,8 @@ public class PopulateDuoAuthenticationContext extends AbstractAuthenticationActi
*/
public void setRedirectURICreationStrategy(
@Nonnull final BiFunction<HttpServletRequest, DynamicDuoOIDCIntegration, String> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
redirectURICreationStrategy = Constraint.isNotNull(strategy, "RedirectURI"
+ " creation strategy cannot be null");
@@ -142,8 +142,8 @@ public class PopulateDuoAuthenticationContext extends AbstractAuthenticationActi
*/
public void setDuoContextCreationStrategy(
@Nonnull final Function<ProfileRequestContext,DuoOIDCAuthenticationContext> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
duoAuthContextCreationStrategy = Constraint.isNotNull(strategy, "DuoAuthenticationContext"
+ " creation strategy cannot be null");
@@ -156,8 +156,8 @@ public class PopulateDuoAuthenticationContext extends AbstractAuthenticationActi
*/
public void setDuoIntegrationLookupStrategy(
@Nonnull final Function<ProfileRequestContext, DuoOIDCIntegration> strategy) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
duoIntegrationLookupStrategy = Constraint.isNotNull(strategy, "DuoIntegration lookup strategy cannot be null");
}
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseState.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseState.java
index da1e951..b64578b 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseState.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseState.java
@@ -28,7 +28,7 @@ import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.AbstractDuoAuthenticationAction;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
/**
* Authentication action that validates the Duo response state parameter (which is <b>required</b> in the Duo flow)
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResult.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResult.java
index 6af7791..309b623 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResult.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResult.java
@@ -46,8 +46,7 @@ import net.shibboleth.idp.authn.impl.AbstractAuditingValidationAction;
import net.shibboleth.idp.plugin.authn.duo.DuoException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
/**
* A validation action that checks for a valid Duo authentication token and directly produces an
@@ -103,8 +102,8 @@ public class ValidateDuoTokenAuthenticationResult extends AbstractAuditingValida
*/
public void setContextToPrincipalMappingStrategy(@Nullable final
Function<ProfileRequestContext,Collection<Principal>> hook) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
contextToPrincipalMappingStrategy = hook;
}
@@ -272,7 +271,7 @@ public class ValidateDuoTokenAuthenticationResult extends AbstractAuditingValida
super.buildAuthenticationResult(profileRequestContext, authenticationContext);
// Bypass c14n. We already operate on a canonical name, so just re-confirm it.
- profileRequestContext.getSubcontext(SubjectCanonicalizationContext.class, true).setPrincipalName(username);
+ profileRequestContext.ensureSubcontext(SubjectCanonicalizationContext.class).setPrincipalName(username);
}
/**
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
index 5713832..7494a25 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaims.java
@@ -38,10 +38,9 @@ import net.shibboleth.idp.plugin.authn.duo.DuoException;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.oidc.jwt.claims.ClaimsValidator;
import net.shibboleth.oidc.jwt.claims.JWTValidationException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
/**
* Action that validates the claims of the Duo id_token using the supplied {@link ClaimsValidator}.
@@ -105,8 +104,8 @@ public class ValidateTokenClaims extends AbstractDuoAuthenticationAction {
*
*/
public void setCleanupHook(@Nullable final Consumer<ProfileRequestContext> hook) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
cleanupHook = hook;
}
@@ -118,8 +117,8 @@ public class ValidateTokenClaims extends AbstractDuoAuthenticationAction {
*/
public void setClaimsValidator(
@Nonnull final ClaimsValidator validator) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
claimsValidator = Constraint.isNotNull(validator, "Claims validator cannot be null");
}
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignature.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignature.java
index cd7065d..8342fcd 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignature.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignature.java
@@ -44,9 +44,8 @@ import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
import net.shibboleth.oidc.security.credential.BasicJWKCredential;
import net.shibboleth.oidc.security.impl.JWTSignatureValidationUtil;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.ConstraintViolationException;
/**
@@ -105,8 +104,8 @@ public class ValidateTokenSignature extends AbstractDuoAuthenticationAction {
* @param algo the JWS signature algorithm.
*/
public void setSignatureAlgorithm(@Nonnull final JWSAlgorithm algo) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
Constraint.isNotNull(algo, "Signature algorithm can not be null");
@@ -169,7 +168,7 @@ public class ValidateTokenSignature extends AbstractDuoAuthenticationAction {
JWSAssemblyUtils.getSecretBytes(integration.getSecretKey()), "NONE"));
jwkCredential.setAlgorithm(signatureAlgorithm);
final String errorEventId =
- JWTSignatureValidationUtil.validateSignature(List.of(jwkCredential),
+ JWTSignatureValidationUtil.validateSignatureEx(List.of(jwkCredential),
(SignedJWT)token, AuthnEventIds.NO_CREDENTIALS);
if (errorEventId != null) {
diff --git a/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml b/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
index f3280dd..cbcf8cd 100644
--- a/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
+++ b/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
@@ -31,14 +31,6 @@
</property>
</bean>
- <!--
- Internal versions of the Http Request/Response proxies to ease the transition to IdP 5.0.
- Will be removed in IdP 5.0.
- -->
- <bean id="shibboleth.authn.DuoOIDC.internal.HttpServletRequest"
- class="net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestProxy" lazy-init="true" />
- <bean id="shibboleth.authn.DuoOIDC.internal.HttpServletResponse"
- class="net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletResponseProxy" lazy-init="true" />
<!-- Controller implementation -->
<bean id="shibboleth.DuoOIDCAuthnController"
diff --git a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
index ee39e60..3d2f72d 100644
--- a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
+++ b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
@@ -12,7 +12,7 @@
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer" p:placeholderPrefix="%{"
p:placeholderSuffix="}" />
- <bean class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />
+ <bean class="net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor" />
<bean class="net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor" />
<!-- location of the Duo OIDC IdP servlet -->
@@ -75,7 +75,7 @@
-->
<bean id="ExtractDuoAuthenticationFromHeaders" scope="prototype"
class="net.shibboleth.idp.authn.duo.impl.ExtractDuoAuthenticationFromHeaders"
- p:httpServletRequest-ref="shibboleth.authn.DuoOIDC.internal.HttpServletRequest"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
p:autoAuthenticationSupported="%{idp.duo.oidc.nonbrowser.auto:true}"
p:clientAdddressTrusted="%{idp.duo.oidc.nonbrowser.clientAddressTrusted:true}"
p:factorHeader="%{idp.duo.oidc.nonbrowser.header.factor:X-Shibboleth-Duo-Factor}"
@@ -108,7 +108,7 @@
<!-- Duo OIDC AuthAPI beans -->
<bean id="PopulateDuoAuthenticationContext" scope="prototype"
class="net.shibboleth.idp.plugin.authn.duo.impl.PopulateDuoAuthenticationContext"
- p:httpServletRequest-ref="shibboleth.authn.DuoOIDC.internal.HttpServletRequest"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
p:duoIntegrationLookupStrategy-ref="shibboleth.authn.DuoOIDC.DuoIntegrationStrategy"
p:redirectURICreationStrategy-ref="shibboleth.authn.DuoOIDC.RedirectURICreationStrategy"
p:usernameLookupStrategy-ref="shibboleth.authn.DuoOIDC.UsernameLookupStrategy"
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
index 5c8be05..7b992a1 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
@@ -63,16 +63,6 @@ import org.springframework.webflow.test.execution.AbstractExternalizedFlowExecut
import com.google.common.net.HttpHeaders;
-import net.shibboleth.ext.spring.config.BooleanToPredicateConverter;
-import net.shibboleth.ext.spring.config.FunctionToFunctionConverter;
-import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
-import net.shibboleth.ext.spring.config.PredicateToPredicateConverter;
-import net.shibboleth.ext.spring.config.StringBooleanToPredicateConverter;
-import net.shibboleth.ext.spring.config.StringToDurationConverter;
-import net.shibboleth.ext.spring.config.StringToIPRangeConverter;
-import net.shibboleth.ext.spring.config.StringToResourceConverter;
-import net.shibboleth.ext.spring.resource.ConditionalResourceResolver;
-import net.shibboleth.ext.spring.util.AnnotationParameterNameDiscoverer;
import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
@@ -82,10 +72,18 @@ import net.shibboleth.idp.plugin.authn.spring.CustomFlowModelFlowBuilder;
import net.shibboleth.idp.session.IdPSession;
import net.shibboleth.idp.session.context.SessionContext;
import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
-import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifierGenerationStrategy;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.security.impl.SecureRandomIdentifierGenerationStrategy;
+import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
+import net.shibboleth.shared.spring.config.BooleanToPredicateConverter;
+import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
+import net.shibboleth.shared.spring.config.StringBooleanToPredicateConverter;
+import net.shibboleth.shared.spring.config.StringToDurationConverter;
+import net.shibboleth.shared.spring.config.StringToIPRangeConverter;
+import net.shibboleth.shared.spring.config.StringToResourceConverter;
+import net.shibboleth.shared.spring.resource.ConditionalResourceResolver;
+import net.shibboleth.shared.spring.util.AnnotationParameterNameDiscoverer;
/**
@@ -378,8 +376,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
//like the above converter. TODO check why.
return Set.of(new StringToDurationConverter(), new StringToResourceConverter(), new StringToIPRangeConverter(),
new BooleanToPredicateConverter(),new StringBooleanToPredicateConverter(),
- new StringToResourceConverter(),new FunctionToFunctionConverter<>(),
- new PredicateToPredicateConverter<>());
+ new StringToResourceConverter());
}
/**
@@ -406,7 +403,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
builderContext.registerBean("conversionService", conversationService.getObject());
addBeanDefinition(builderContext, "shibboleth.RelyingPartyIdLookup.Simple",BeanDefinitionBuilder.
- genericBeanDefinition(net.shibboleth.idp.profile.context.navigate.RelyingPartyIdLookupFunction.class)
+ genericBeanDefinition(net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction.class)
.getBeanDefinition());
addBeanDefinition(builderContext, "shibboleth.MessageContextLookup.Inbound",BeanDefinitionBuilder.
@@ -425,11 +422,11 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends CustomAbstractX
.getBeanDefinition());
addBeanDefinition(builderContext, "shibboleth.HttpServletRequestSupplier",BeanDefinitionBuilder.
- genericBeanDefinition(net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletRequestSupplier.class)
+ genericBeanDefinition(net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletRequestSupplier.class)
.getBeanDefinition());
addBeanDefinition(builderContext, "shibboleth.HttpServletResponseSupplier",BeanDefinitionBuilder.
- genericBeanDefinition(net.shibboleth.utilities.java.support.net.ThreadLocalHttpServletResponseSupplier.class)
+ genericBeanDefinition(net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletResponseSupplier.class)
.getBeanDefinition());
//register shibboleth function constants.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
index 0a009e9..5876171 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
@@ -48,12 +48,11 @@ import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-
import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-import net.shibboleth.utilities.java.support.codec.Base64Support;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.idp.profile.testing.RequestContextBuilder;
+import net.shibboleth.shared.codec.Base64Support;
+import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
index 5cd1e0b..243e2ed 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
@@ -40,8 +40,7 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientFactory;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoRegistryException;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClientFactory_OK_Client;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Tests for the {@link DefaultDuoOIDCClientRegistry}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategyTest.java
index 5cd2b22..c11ad7f 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultRedirectURICreationStrategyTest.java
@@ -15,6 +15,23 @@
* limitations under the License.
*/
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements. See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package net.shibboleth.idp.plugin.authn.duo.impl;
import static org.testng.Assert.assertEquals;
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
index b64d860..f7a3292 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
@@ -17,14 +17,14 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.Assert;
import java.util.function.Function;
import org.opensaml.profile.context.ProfileRequestContext;
+import org.testng.Assert;
import net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.RelyingPartyContext;
/**
* Function for testing multiple duo integrations.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
index cb64c5e..8b7fee1 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAudienceClaimLookupStrategyTest.java
@@ -1,17 +1,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.annotations.Test;
-
-import com.nimbusds.jwt.JWTClaimsSet;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import static org.testng.Assert.assertEquals;
import javax.annotation.Nonnull;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.nimbusds.jwt.JWTClaimsSet;
+
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Test for the {@link DuoAudienceClaimLookupStrategy}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
index a71eda1..da07fb5 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
@@ -52,10 +52,10 @@ import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClientFactory_OK_Client;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_OK;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_OK_OLD_AUTH_TIME;
import net.shibboleth.idp.plugin.authn.mock.MockFlowBuilder;
-import net.shibboleth.idp.profile.context.RelyingPartyContext;
import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
/**
* Test the Duo 2FA flow using SWF flow testing.
@@ -99,8 +99,8 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
*/
@Nonnull @NonnullElements @Unmodifiable private final Map<String,String> flowResources =
Map.of(
- "classpath:/net/shibboleth/idp/flows/authn/authn-abstract-flow.xml","authn.abstract",
- "classpath:/conf/authn/authn-events-flow.xml","authn.events");
+ "classpath:/net/shibboleth/idp/flows/authn/authn-abstract-flow.xml","authn.abstract",
+ "classpath:/net/shibboleth/idp/module/conf/authn/authn-events-flow.xml","authn.events");
/** Constructor.*/
@@ -547,7 +547,7 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
/**
* Test the Duo flow from the external authorization request. This should fail, as forced authn is
- * requested by the auth_time is from a previous authentication (to far in the past).
+ * requested but the auth_time is from a previous authentication (to far in the past).
*
* @throws DuoClientException if the client can not be created.*/
@Test
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
index 6d1166e..da0af22 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoIssuerClaimLookupStrategyTest.java
@@ -17,17 +17,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.annotations.Test;
-
-import com.nimbusds.jwt.JWTClaimsSet;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import static org.testng.Assert.assertEquals;
import javax.annotation.Nonnull;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.nimbusds.jwt.JWTClaimsSet;
+
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Test for the {@link DuoIssuerClaimLookupStrategy}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
index 6f9eec8..032efbf 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoNonceClaimLookupStrategyTest.java
@@ -17,17 +17,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.annotations.Test;
-
-import com.nimbusds.jwt.JWTClaimsSet;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import static org.testng.Assert.assertEquals;
import javax.annotation.Nonnull;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.nimbusds.jwt.JWTClaimsSet;
+
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Test for the {@link DuoNonceClaimLookupStrategy}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
index 43ebad8..6b85d0d 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
@@ -25,7 +25,6 @@ import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import javax.annotation.Nonnull;
-import javax.servlet.ServletContext;
import org.apache.commons.codec.binary.Hex;
import org.mockito.Mockito;
@@ -43,7 +42,6 @@ import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.ServletContextAttributeExporter;
-import org.springframework.web.util.NestedServletException;
import org.springframework.webflow.core.collection.LocalAttributeMap;
import org.springframework.webflow.core.collection.MutableAttributeMap;
import org.springframework.webflow.execution.FlowExecution;
@@ -53,6 +51,8 @@ import org.springframework.webflow.executor.FlowExecutorImpl;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.ExternalAuthentication;
import net.shibboleth.idp.authn.ExternalAuthenticationException;
@@ -68,7 +68,7 @@ import net.shibboleth.idp.plugin.authn.util.mock.IdPPropertyConfigurer;
import net.shibboleth.idp.session.IdPSession;
import net.shibboleth.idp.session.context.SessionContext;
import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
/**
* Tests for the {@link DuoOIDCAuthnController}.
@@ -158,7 +158,7 @@ public class DuoOIDCAuthnControllerTest extends AbstractTestNGSpringContextTests
.param("code", CODE)
.param("state",invalidState))
.andDo(print());
- } catch (final NestedServletException e) {
+ } catch (final ServletException e) {
assertTrue(e.getCause() instanceof ExternalAuthenticationException);
log.error("{}",e.getRootCause().getMessage());
}
@@ -177,7 +177,7 @@ public class DuoOIDCAuthnControllerTest extends AbstractTestNGSpringContextTests
.param("code", CODE)
.param("state",invalidState))
.andDo(print());
- } catch (final NestedServletException e) {
+ } catch (final ServletException e) {
assertTrue(e.getCause() instanceof ExternalAuthenticationException);
log.error("{}",e.getRootCause().getMessage());
}
@@ -246,7 +246,7 @@ public class DuoOIDCAuthnControllerTest extends AbstractTestNGSpringContextTests
try {
mockMvc.perform(get("/Authn/Duo/2FA/duo-callback").param("state",
state)).andDo(print());
- } catch (final NestedServletException e) {
+ } catch (final ServletException e) {
assertTrue(e.getCause() instanceof ExternalAuthenticationException);
log.error("{}",e.getMessage());
}
@@ -265,7 +265,7 @@ public class DuoOIDCAuthnControllerTest extends AbstractTestNGSpringContextTests
param("code", CODE)).
andDo(print());
- } catch (final NestedServletException e) {
+ } catch (final ServletException e) {
assertTrue(e.getCause() instanceof ExternalAuthenticationException);
log.error("{}",e.getMessage());
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
index 8e59fbb..799faab 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoUsernameClaimLookupStrategyTest.java
@@ -17,17 +17,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.annotations.Test;
-
-import com.nimbusds.jwt.JWTClaimsSet;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import static org.testng.Assert.assertEquals;
import javax.annotation.Nonnull;
import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.nimbusds.jwt.JWTClaimsSet;
+
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Test for the {@link DuoUsernameClaimLookupStrategy}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
index 73daf4e..375dba8 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
@@ -17,17 +17,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.testng.annotations.Test;
-import org.testng.annotations.BeforeMethod;
-import org.testng.AssertJUnit;
-
import org.springframework.webflow.execution.Event;
+import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.DuoRegistryException;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_OK;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Tests for {@link ExchangeCodeForDuoToken}.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
index 755cd8b..d0cdfb7 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
@@ -46,7 +46,7 @@ import net.shibboleth.idp.plugin.authn.duo.DuoRegistryException;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_FAIL;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_OK;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClient_UNKNOWN;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
class HealthCheckDuoOIDCAuthAPITest extends AbstractDuoActionTest {
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/InMemoryCredentialValidator.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/InMemoryCredentialValidator.java
index d2a70f5..a976ca4 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/InMemoryCredentialValidator.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/InMemoryCredentialValidator.java
@@ -30,9 +30,9 @@ import net.shibboleth.idp.authn.AbstractUsernamePasswordCredentialValidator;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.context.UsernamePasswordContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
/**
* Simple in-memory credential validator that validates the username and password against a single
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
index 53a766c..05e09dd 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
@@ -17,6 +17,7 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
+import static org.mockito.ArgumentMatchers.any;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
@@ -36,8 +37,8 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoRegistryException;
import net.shibboleth.idp.plugin.authn.duo.SimpleDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import static org.mockito.ArgumentMatchers.any;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.testing.ConstantSupplier;
/**
* Tests for the {@link PopulateDuoAuthenticationContext} strategy.
@@ -88,7 +89,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
//lookup a username
action.setUsernameLookupStrategy(prc -> "jdoe");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
final DuoOIDCClient mockClient = Mockito.mock(DuoOIDCClient.class);
Mockito.when(mockClientRegistry.getClientOrCreate(any(DuoOIDCIntegration.class))).thenReturn(mockClient);
@@ -123,7 +124,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
request.addHeader("Host", "example.com");
request.setServerPort(443);
request.setScheme("https");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
final DuoOIDCClient mockClient = Mockito.mock(DuoOIDCClient.class);
@@ -155,7 +156,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
action.setUsernameLookupStrategy(prc -> "jdoe");
action.setRedirectURICreationStrategy((http,duoInteg)
-> "https://example.com/idp/profile/Authn/Duo/2FA/callback");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
//set http params
request.addHeader("Host", "example.com");
request.setServerPort(443);
@@ -197,7 +198,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
action.setClientRegistry(mockClientRegistry);
action.setRedirectURICreationStrategy((http,duoInteg)
-> "https://example.com/idp/profile/Authn/Duo/2FA/callback");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
action.initialize();
final Event event = action.execute(src);
@@ -235,7 +236,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
action.setUsernameLookupStrategy(prc -> null);
action.setRedirectURICreationStrategy((http,duoInteg)
-> "https://example.com/idp/profile/Authn/Duo/2FA/callback");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
action.setClientRegistry(mockClientRegistry);
@@ -260,7 +261,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
//lookup a username
action.setUsernameLookupStrategy(prc -> "jdoe");
action.setRedirectURICreationStrategy((http,duoInteg) -> null);
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
action.setClientRegistry(mockClientRegistry);
@@ -286,7 +287,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
action.setUsernameLookupStrategy(prc -> "jdoe");
action.setRedirectURICreationStrategy((http,duoInteg)
-> "https://example.com/idp/profile/Authn/Duo/2FA/callback");
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
//throw when asking for a client
Mockito.when(mockClientRegistry.getClientOrCreate(any(DuoOIDCIntegration.class)))
@@ -347,7 +348,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
-> "https://example.com/idp/profile/Authn/Duo/2FA/callback");
action.setDuoContextCreationStrategy(prc -> null);
- action.setHttpServletRequest(request);
+ action.setHttpServletRequestSupplier(new ConstantSupplier<>(request));
final DuoOIDCClientRegistry mockClientRegistry = Mockito.mock(DuoOIDCClientRegistry.class);
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
index 47e10b1..519cdf2 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
@@ -24,7 +24,7 @@ import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import net.shibboleth.idp.authn.AuthnEventIds;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Tests for the {@link ValidateDuoResponseState} action.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
index afc68c6..45679dd 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
@@ -45,7 +45,7 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Tests for the {@link ValidateDuoTokenAuthenticationResult} action.
@@ -167,7 +167,7 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
addDuoIntegrationToContext();
addAttemptedFlow("authn/DuoOIDC");
- final Map<String, Collection<String>> classifiedMessages = new HashMap<String,Collection<String>>();
+ final Map<String, Collection<String>> classifiedMessages = new HashMap<>();
classifiedMessages.put(AuthnEventIds.ACCOUNT_LOCKED, Arrays.asList(new String[] {"deny"}));
action.setClassifiedMessages(classifiedMessages);
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaimsTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaimsTest.java
index 2bb978b..9152325 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaimsTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenClaimsTest.java
@@ -50,7 +50,7 @@ import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.oidc.jwt.claims.JWTValidationException;
import net.shibboleth.oidc.security.jwt.claims.impl.ChainingJWTClaimsValidator;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/**
* Tests for the {@link ValidateTokenClaims} class.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignatureTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignatureTest.java
index 4dd1287..eec177b 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignatureTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateTokenSignatureTest.java
@@ -47,9 +47,9 @@ import com.nimbusds.jose.JWSAlgorithm;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
+import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.ConstraintViolationException;
/**
* Tests for the {@link ValidateTokenSignature} class.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_FAIL.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_FAIL.java
index 415e87e..b36f1d5 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_FAIL.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_FAIL.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientCapabilities;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.codec.EncodingException;
/**
* Mock a Duo client which is not available (unhealthy).
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK.java
index fa29700..ef59541 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientCapabilities;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.codec.EncodingException;
/**
* Mock a Duo client which is available and returns a valid response.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK_OLD_AUTH_TIME.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK_OLD_AUTH_TIME.java
index 1986c7f..2381ee6 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK_OLD_AUTH_TIME.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_OK_OLD_AUTH_TIME.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientCapabilities;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.codec.EncodingException;
/**
* Mock a Duo client which is available and returns a valid response.
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_UNKNOWN.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_UNKNOWN.java
index a3d8851..9dff9fb 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_UNKNOWN.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockDuoOIDCClient_UNKNOWN.java
@@ -36,8 +36,8 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientCapabilities;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.codec.EncodingException;
/**
* Mock a Duo client which returns an unknown response for the health check and a login failure in the
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockFlowBuilder.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockFlowBuilder.java
index f5d4b1e..cf642db 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockFlowBuilder.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/mock/MockFlowBuilder.java
@@ -29,7 +29,7 @@ import org.springframework.webflow.engine.support.DefaultTargetStateResolver;
import org.springframework.webflow.execution.Event;
import org.springframework.webflow.execution.FlowExecutionException;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
/**
* A builder for generating simple mock flows. Mostly used to generate stub subflows when testing
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
index 68a2568..9db1b2f 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/spring/CustomFlowModelFlowBuilder.java
@@ -116,8 +116,8 @@ import org.springframework.webflow.scope.FlowScope;
import org.springframework.webflow.scope.ViewScope;
import org.springframework.webflow.security.SecurityRule;
-import net.shibboleth.ext.spring.resource.ConditionalResourceResolver;
-import net.shibboleth.ext.spring.util.AnnotationParameterNameDiscoverer;
+import net.shibboleth.shared.spring.resource.ConditionalResourceResolver;
+import net.shibboleth.shared.spring.util.AnnotationParameterNameDiscoverer;
/**
* Copy of {@link FlowModelFlowBuilder} for setting the property placeholder prefix of <code>%{</code>, and
diff --git a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-principal-mapping.xml b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-principal-mapping.xml
index e904ae2..a532dd7 100644
--- a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-principal-mapping.xml
+++ b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-principal-mapping.xml
@@ -10,7 +10,7 @@
<!-- need this bean to define the scripted function -->
<bean id="shibboleth.ContextFunctions.Scripted"
- class="net.shibboleth.idp.profile.context.navigate.ScriptedContextLookupFunction" abstract="true" />
+ class="net.shibboleth.profile.context.navigate.ScriptedContextLookupFunction" abstract="true" />
<bean id="shibboleth.authn.DuoOIDC.ContextToPrincipalMappingStrategy" parent="shibboleth.ContextFunctions.Scripted"
factory-method="inlineScript"
diff --git a/idp-duo-nimbus-client-impl/pom.xml b/idp-duo-nimbus-client-impl/pom.xml
index c4d07c0..640d632 100644
--- a/idp-duo-nimbus-client-impl/pom.xml
+++ b/idp-duo-nimbus-client-impl/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>idp-plugin-duo-nimbus-client-impl</artifactId>
@@ -29,16 +29,6 @@
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>net.shibboleth.utilities</groupId>
- <artifactId>java-support</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.nimbusds</groupId>
@@ -55,7 +45,11 @@
<artifactId>oidc-common-crypto-api</artifactId>
<scope>provided</scope>
</dependency>
-
+ <dependency>
+ <groupId>${shib-shared.groupId}</groupId>
+ <artifactId>shib-profile-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
<!-- Needed for module/plugin impls. -->
<dependency>
<groupId>${idp.groupId}</groupId>
@@ -69,8 +63,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>net.shibboleth.idp</groupId>
- <artifactId>idp-profile-spring</artifactId>
+ <groupId>${shib-shared.groupId}</groupId>
+ <artifactId>shib-spring</artifactId>
<scope>test</scope>
</dependency>
<dependency>
@@ -78,8 +72,6 @@
<artifactId>spring-core</artifactId>
<scope>test</scope>
</dependency>
-
-
</dependencies>
<build>
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusModule.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusModule.java
index 939782c..921a87a 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusModule.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusModule.java
@@ -19,7 +19,7 @@ package net.shibboleth.idp.plugin.authn.duo.nimbus;
import java.io.IOException;
-import net.shibboleth.idp.module.ModuleException;
+import net.shibboleth.profile.module.ModuleException;
import net.shibboleth.idp.module.impl.PluginIdPModule;
/**
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusPlugin.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusPlugin.java
index 2f79bce..0da77f9 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusPlugin.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/DuoOIDCNimbusPlugin.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import java.util.Collections;
import net.shibboleth.idp.module.IdPModule;
-import net.shibboleth.idp.module.ModuleException;
-import net.shibboleth.idp.plugin.PluginException;
+import net.shibboleth.profile.module.ModuleException;
+import net.shibboleth.profile.plugin.PluginException;
import net.shibboleth.idp.plugin.impl.FirstPartyIdPPlugin;
/**
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/DuoHttpClientFactoryBean.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/DuoHttpClientFactoryBean.java
index 930c0b2..501af33 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/DuoHttpClientFactoryBean.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/DuoHttpClientFactoryBean.java
@@ -22,7 +22,7 @@ import net.shibboleth.idp.plugin.authn.duo.Version;
/**
* Factory bean customization for the Duo plugin. Uses the plugin product name and version inside the user_agent string.
*/
-public class DuoHttpClientFactoryBean extends net.shibboleth.ext.spring.factory.HttpClientFactoryBean {
+public class DuoHttpClientFactoryBean extends net.shibboleth.shared.spring.httpclient.factory.HttpClientFactoryBean {
/** Constructor. */
public DuoHttpClientFactoryBean() {
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClient.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClient.java
index 71e49d4..8bbb6f3 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClient.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClient.java
@@ -27,13 +27,13 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.ThreadSafe;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.methods.RequestBuilder;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.client.utils.URIBuilder;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
+import org.apache.hc.core5.net.URIBuilder;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
import org.slf4j.Logger;
@@ -49,8 +49,8 @@ import net.shibboleth.idp.plugin.authn.duo.AbstractDuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.logic.Constraint;
/**
* A Duo client using the Nimbus OIDC library.
@@ -109,8 +109,8 @@ public final class NimbusClient extends AbstractDuoOIDCClient{
.setPath(duoIntegration.getHealthCheckEndpoint()).build();
log.trace("Using health check endpoint '{}'",uri);
- final RequestBuilder rb =
- RequestBuilder.post().setUri(uri).addParameter("client_id",duoIntegration.getClientId())
+ final ClassicRequestBuilder rb =
+ ClassicRequestBuilder.post().setUri(uri).addParameter("client_id",duoIntegration.getClientId())
.addParameter("client_assertion",
NimbusClientSupport.createJWS(uri.toString(),
duoIntegration.getClientId(), duoIntegration.getSecretKey()));
@@ -180,8 +180,8 @@ public final class NimbusClient extends AbstractDuoOIDCClient{
+ "for acquiring a 2FA result, for client '"+duoIntegration.getClientId()+"'");
}
- final RequestBuilder rb =
- RequestBuilder.post().setUri(uri)
+ final ClassicRequestBuilder rb =
+ ClassicRequestBuilder.post().setUri(uri)
.addParameter("grant_type","authorization_code")
.addParameter("code",code)
.addParameter("redirect_uri",redirectURI)
@@ -212,17 +212,17 @@ public final class NimbusClient extends AbstractDuoOIDCClient{
*
* @throws DuoClientException if there is an error producing a response
*/
- private <T> T executeRequest(@Nonnull final HttpUriRequest request,
+ private <T> T executeRequest(@Nonnull final ClassicHttpRequest request,
@Nonnull final TypeReference<T> wrapperTypeRef) throws DuoClientException{
try {
final HttpClientContext clientContext = HttpClientContext.create();
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, httpClientSecurityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
- final HttpResponse httpResponse = httpClient.execute(request, clientContext);
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getURI().getScheme());
+ final ClassicHttpResponse httpResponse = httpClient.executeOpen(null, request, clientContext);
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getUri().getScheme());
- final int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
+ final int httpStatusCode = httpResponse.getCode();
if (httpStatusCode != HttpStatus.SC_OK) {
//dump the body for logging - if one exists
if (httpResponse.getEntity() != null && httpResponse.getEntity().getContent() != null) {
@@ -230,7 +230,7 @@ public final class NimbusClient extends AbstractDuoOIDCClient{
log.error("Duo returned a Non-ok message of '{}'",errorContent);
}
throw new DuoClientException("Non-ok status code (" + httpStatusCode + ") returned from Duo: "
- + httpResponse.getStatusLine().getReasonPhrase());
+ + httpResponse.getReasonPhrase());
} else if (httpResponse.getEntity() == null) {
throw new DuoClientException("No response body returned from Duo");
}
@@ -242,7 +242,7 @@ public final class NimbusClient extends AbstractDuoOIDCClient{
}
return duoResponse;
- } catch (final IOException e) {
+ } catch (final IOException | URISyntaxException e) {
throw new DuoClientException("Could not execute Duo HTTP request",e);
}
}
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactory.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactory.java
index 9af8e4e..0aead00 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactory.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactory.java
@@ -22,7 +22,7 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.ThreadSafe;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -31,11 +31,10 @@ import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientFactory;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
/**
* <p>
@@ -110,8 +109,8 @@ public final class NimbusClientFactory extends AbstractInitializableComponent im
* @param client the http client.
*/
public synchronized void setHttpClient(@Nonnull final HttpClient client) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
httpClient = Constraint.isNotNull(client, "HTTP client cannot be null");
}
@@ -122,8 +121,8 @@ public final class NimbusClientFactory extends AbstractInitializableComponent im
* @param params the new client security parameters
*/
public synchronized void setHttpClientSecurityParameters(@Nullable final HttpClientSecurityParameters params) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
httpClientSecurityParameters = params;
}
@@ -134,8 +133,8 @@ public final class NimbusClientFactory extends AbstractInitializableComponent im
* @param mapper object mapper
*/
public synchronized void setObjectMapper(@Nonnull final ObjectMapper mapper) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
objectMapper = Constraint.isNotNull(mapper, "Object mapper cannot be null");
}
diff --git a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupport.java b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupport.java
index 6ed3a8b..b8cb8cf 100644
--- a/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupport.java
+++ b/idp-duo-nimbus-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupport.java
@@ -31,9 +31,9 @@ import com.nimbusds.jwt.JWTClaimsSet;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.logic.Constraint;
/**
* Helper methods for working with Duo using Nimbus.
diff --git a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactoryTest.java b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactoryTest.java
index 3e5b5f7..19a014e 100644
--- a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactoryTest.java
+++ b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientFactoryTest.java
@@ -5,7 +5,7 @@ import static org.testng.Assert.assertNotNull;
import javax.annotation.Nonnull;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.mockito.Mockito;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -15,7 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/** Test for the NimbusClientFactory class. */
diff --git a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupportTest.java b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupportTest.java
index 4ec718c..dac2ddb 100644
--- a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupportTest.java
+++ b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientSupportTest.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
import net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.shared.component.ComponentInitializationException;
/** Tests for the NimbusClientSupport class.*/
public class NimbusClientSupportTest {
@@ -45,7 +45,7 @@ public class NimbusClientSupportTest {
@Nonnull static final String AUD = "audience";
/** Class logger. */
- @Nonnull private Logger log = LoggerFactory.getLogger(NimbusClientSupportTest.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(NimbusClientSupportTest.class);
/** A dummy integration.*/
@Nullable private DefaultDuoOIDCIntegration integ;
diff --git a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientTest.java b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientTest.java
index b983f66..cdd8e47 100644
--- a/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientTest.java
+++ b/idp-duo-nimbus-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/nimbus/impl/NimbusClientTest.java
@@ -47,13 +47,13 @@ import java.nio.charset.StandardCharsets;
import javax.annotation.Nonnull;
-
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpUriRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.io.entity.StringEntity;
+import org.apache.hc.core5.http.protocol.HttpContext;
import org.mockito.Mockito;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -61,11 +61,10 @@ import org.testng.annotations.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nimbusds.jwt.JWT;
-
import net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
/** Tests for the NimbusClient class.*/
public class NimbusClientTest {
@@ -173,15 +172,12 @@ public class NimbusClientTest {
public void testTokenExchange() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
- final StatusLine statusLine = Mockito.mock(StatusLine.class);
+ final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
- Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
- Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+ Mockito.when(httpResponse.getCode()).thenReturn(200);
Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(ID_TOKEN_RESPONSE));
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
- .thenReturn(httpResponse);
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (ClassicHttpRequest) Mockito.any(),
+ (HttpContext) Mockito.any())).thenReturn(httpResponse);
// create new client with mock response
client = new NimbusClient(integ, httpClient, null, new ObjectMapper());
@@ -202,15 +198,12 @@ public class NimbusClientTest {
public void testTokenExchangeInternalServerErrorResponse() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
- final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
- Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
+ final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
- Mockito.when(statusLine.getStatusCode()).thenReturn(500);
+ Mockito.when(httpResponse.getCode()).thenReturn(500);
Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(ID_TOKEN_REPONSE_NULL));
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
- .thenReturn(httpResponse);
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (ClassicHttpRequest) Mockito.any(),
+ (HttpContext) Mockito.any())).thenReturn(httpResponse);
// create new client with mock response
client = new NimbusClient(integ, httpClient, null, new ObjectMapper());
@@ -227,15 +220,12 @@ public class NimbusClientTest {
*/
@Test public void testHealthCheck() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
- final StatusLine statusLine = Mockito.mock(StatusLine.class);
+ final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
- Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
-
- Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+ Mockito.when(httpResponse.getCode()).thenReturn(200);
Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(HEALTH_CHECK_REPONSE));
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
- .thenReturn(httpResponse);
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (ClassicHttpRequest) Mockito.any(),
+ (HttpContext) Mockito.any())).thenReturn(httpResponse);
// create new client with mock response
client = new NimbusClient(integ, httpClient, null, new ObjectMapper());
@@ -254,15 +244,12 @@ public class NimbusClientTest {
*/
@Test public void testHealthCheckMoreFields() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
- final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
- Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
+ final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
- Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+ Mockito.when(httpResponse.getCode()).thenReturn(200);
Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(HEALTH_CHECK_REPONSE_MORE_FIELDS));
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
- .thenReturn(httpResponse);
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (ClassicHttpRequest) Mockito.any(),
+ (HttpContext) Mockito.any())).thenReturn(httpResponse);
// create new client with mock response
client = new NimbusClient(integ, httpClient, null, new ObjectMapper());
@@ -281,15 +268,12 @@ public class NimbusClientTest {
*/
@Test public void testHealthCheckError() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- final HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
- final StatusLine statusLine = Mockito.mock(StatusLine.class);
-
- Mockito.when(httpResponse.getStatusLine()).thenReturn(statusLine);
+ final ClassicHttpResponse httpResponse = Mockito.mock(ClassicHttpResponse.class);
- Mockito.when(statusLine.getStatusCode()).thenReturn(200);
+ Mockito.when(httpResponse.getCode()).thenReturn(200);
Mockito.when(httpResponse.getEntity()).thenReturn(new StringEntity(HEALTH_CHECK_REPONSE_ERROR));
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(), (HttpContext) Mockito.any()))
- .thenReturn(httpResponse);
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (ClassicHttpRequest) Mockito.any(),
+ (HttpContext) Mockito.any())).thenReturn(httpResponse);
// create new client with mock response
client = new NimbusClient(integ, httpClient, null, new ObjectMapper());
@@ -301,7 +285,7 @@ public class NimbusClientTest {
@Test(expectedExceptions = DuoClientException.class)
public void testHealthEndpointTimeout() throws Exception {
final HttpClient httpClient = Mockito.mock(HttpClient.class);
- Mockito.when(httpClient.execute((HttpUriRequest) Mockito.any(),
+ Mockito.when(httpClient.executeOpen((HttpHost) Mockito.any(), (HttpUriRequest) Mockito.any(),
(HttpContext) Mockito.any())).thenThrow(IOException.class);
// create new client with mock response
diff --git a/idp-duo-nimbus-distribution/pom.xml b/idp-duo-nimbus-distribution/pom.xml
index 6c03d6f..7c84911 100644
--- a/idp-duo-nimbus-distribution/pom.xml
+++ b/idp-duo-nimbus-distribution/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>idp-plugin-duo-nimbus-dist</artifactId>
diff --git a/idp-duo-sdk-client-impl/pom.xml b/idp-duo-sdk-client-impl/pom.xml
index ad27a72..7f04e9a 100644
--- a/idp-duo-sdk-client-impl/pom.xml
+++ b/idp-duo-sdk-client-impl/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>idp-plugin-duo-sdk-client-impl</artifactId>
@@ -106,11 +106,6 @@
<artifactId>oidc-common-crypto-api</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>net.shibboleth.utilities</groupId>
- <artifactId>java-support</artifactId>
- <scope>provided</scope>
- </dependency>
<dependency>
<groupId>${idp.groupId}</groupId>
<artifactId>idp-conf-impl</artifactId>
@@ -129,9 +124,14 @@
<!-- Needed for module/plugin impls. -->
<dependency>
<groupId>${idp.groupId}</groupId>
- <artifactId>idp-admin-impl</artifactId>
+ <artifactId>idp-admin-api</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>${idp.groupId}</groupId>
+ <artifactId>idp-admin-impl</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKModule.java b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKModule.java
index 11aaace..1ff4db0 100644
--- a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKModule.java
+++ b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKModule.java
@@ -18,9 +18,8 @@
package net.shibboleth.idp.plugin.authn.duo.sdk;
import java.io.IOException;
-import net.shibboleth.idp.module.ModuleException;
-
+import net.shibboleth.profile.module.ModuleException;
import net.shibboleth.idp.module.impl.PluginIdPModule;
/**
diff --git a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKPlugin.java b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKPlugin.java
index 86500a5..735dfed 100644
--- a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKPlugin.java
+++ b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/DuoOIDCWebSDKPlugin.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import java.util.Collections;
import net.shibboleth.idp.module.IdPModule;
-import net.shibboleth.idp.module.ModuleException;
-import net.shibboleth.idp.plugin.PluginException;
+import net.shibboleth.profile.module.ModuleException;
+import net.shibboleth.profile.plugin.PluginException;
import net.shibboleth.idp.plugin.impl.FirstPartyIdPPlugin;
/**
diff --git a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientAdaptor.java b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientAdaptor.java
index baf1664..34942f0 100644
--- a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientAdaptor.java
+++ b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientAdaptor.java
@@ -49,9 +49,10 @@ import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.idp.plugin.authn.duo.model.DuoHealthCheckResponse;
import net.shibboleth.oidc.security.JWSAssemblyUtils;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.codec.EncodingException;
-import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.logic.Constraint;
+
/**
* <p>An Object Adaptor class for bridging between the Duo SDK implementation
diff --git a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactory.java b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactory.java
index adedf96..49ca469 100644
--- a/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactory.java
+++ b/idp-duo-sdk-client-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactory.java
@@ -31,11 +31,11 @@ import net.shibboleth.idp.plugin.authn.duo.DuoClientException;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClient;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientFactory;
import net.shibboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.primitive.StringSupport;
+
/** Abstract factory implementation for the {@link DuoSDKClientAdaptor}. */
@@ -55,8 +55,8 @@ public final class DuoSDKClientFactory extends AbstractInitializableComponent im
* @param certs the list of certificate pins.
*/
public synchronized void setCaCerts(@Nullable final List<String> certs) {
- ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ ifInitializedThrowUnmodifiabledComponentException();
+ ifDestroyedThrowDestroyedComponentException();
//check if null, as the native duo client uses the internal defaults if null
//but will respect an empty list.
if (certs != null) {
diff --git a/idp-duo-sdk-distribution/pom.xml b/idp-duo-sdk-distribution/pom.xml
index 2414c5f..99c875b 100644
--- a/idp-duo-sdk-distribution/pom.xml
+++ b/idp-duo-sdk-distribution/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>idp-plugin-duo-sdk-dist</artifactId>
diff --git a/pom.xml b/pom.xml
index 729f4d6..5efb65f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,12 +6,12 @@
<parent>
<groupId>net.shibboleth</groupId>
<artifactId>parent</artifactId>
- <version>11.3.5</version>
+ <version>17.0.0-SNAPSHOT</version>
</parent>
<groupId>net.shibboleth.idp.plugin.authn</groupId>
<artifactId>idp-plugin-duo-parent</artifactId>
- <version>1.4.1-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
<name>Shibboleth IdP :: Plugins :: Duo 2FA Login Flow</name>
<packaging>pom</packaging>
@@ -20,14 +20,13 @@
</description>
<properties>
+ <shib-shared.groupId>net.shibboleth</shib-shared.groupId>
<idp.groupId>net.shibboleth.idp</idp.groupId>
- <idp.version>4.3.0</idp.version>
+ <idp.version>5.0.0-SNAPSHOT</idp.version>
<duo.client.version>1.1.3</duo.client.version>
<opensaml.groupId>org.opensaml</opensaml.groupId>
- <opensaml.version>4.3.0</opensaml.version>
- <java-support.version>8.4.0</java-support.version>
- <spring-extensions.version>6.3.0</spring-extensions.version>
- <oidc.common.version>2.2.0</oidc.common.version>
+ <opensaml.version>5.0.0-SNAPSHOT</opensaml.version>
+ <oidc.common.version>3.0.0-SNAPSHOT</oidc.common.version>
<checkstyle.configLocation>${project.basedir}/checkstyle.xml</checkstyle.configLocation>
<jdk.version>15.3</jdk.version>
</properties>
@@ -54,24 +53,6 @@
<url>https://git.shibboleth.net/view/?p=java-${project.artifactId}.git</url>
</scm>
- <repositories>
- <repository>
- <id>shib-release</id>
- <url>https://build.shibboleth.net/nexus/content/groups/public</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>shib-snapshot</id>
- <url>https://build.shibboleth.net/nexus/content/repositories/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
-
-
<dependencies>
<!-- Project wide test Dependencies -->
<dependency>
@@ -113,14 +94,7 @@
<version>${oidc.common.version}</version>
<type>pom</type>
<scope>import</scope>
- </dependency>
- <!-- Provided support dependencies -->
- <dependency>
- <groupId>net.shibboleth.utilities</groupId>
- <artifactId>java-support</artifactId>
- <version>${java-support.version}</version>
- <scope>provided</scope>
- </dependency>
+ </dependency>
<!-- Duo client and plugin dependencies -->
<dependency>
<groupId>com.duosecurity</groupId>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list