[java-idp-plugin-duo] branch main updated: Improve Javadoc and emptyness check
Codeberg
noreply at shibboleth.net
Wed Sep 23 09:31:56 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-idp-plugin-duo.
View the commit online:
https://codeberg.org/Shibboleth/java-idp-plugin-duo/commit/0cb2a94fe27593d2b7a72061c5e06bb21b276edc
The following commit(s) were added to refs/heads/main by this push:
new 0cb2a94f Improve Javadoc and emptyness check
0cb2a94f is described below
commit 0cb2a94fe27593d2b7a72061c5e06bb21b276edc
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Wed Sep 23 10:31:45 2026 +0100
Improve Javadoc and emptyness check
---
.../authn/duo/AuthenticationRequestOptions.java | 4 ++--
.../idp/plugin/authn/duo/DuoOIDCIntegration.java | 2 +-
.../impl/DuoAuthenticationTimeClaimsValidator.java | 7 +++---
.../authn/duo/sdk/impl/DuoSDKClientAdaptor.java | 4 ++--
.../authn/duo/sdk/impl/DuoSDKClientFactory.java | 2 +-
.../duo/sdk/impl/DuoSDKClientFactoryTest.java | 28 ++++++++++++++++++++++
6 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AuthenticationRequestOptions.java b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AuthenticationRequestOptions.java
index 96720f90..5b50edf9 100644
--- a/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AuthenticationRequestOptions.java
+++ b/idp-duo-api/src/main/java/net/shibboleth/idp/plugin/authn/duo/AuthenticationRequestOptions.java
@@ -118,7 +118,7 @@ public class AuthenticationRequestOptions {
}
/**
- * Get the maximum authentication age in seconds.
+ * Get the maximum authentication age.
*
* @return max_age
*/
@@ -127,7 +127,7 @@ public class AuthenticationRequestOptions {
}
/**
- * Set the maximum authentication age in seconds.
+ * Set the maximum authentication age.
*
* @param value max_age
*
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 a2165407..5a3d481f 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
@@ -128,7 +128,7 @@ public interface DuoOIDCIntegration extends PrincipalSupportingComponent {
}
/**
- * Get the maximum authentication age in seconds.
+ * Get the maximum authentication age.
*
* @return the maximum authentication age
*
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthenticationTimeClaimsValidator.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthenticationTimeClaimsValidator.java
index 21669768..914abd55 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthenticationTimeClaimsValidator.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthenticationTimeClaimsValidator.java
@@ -54,9 +54,9 @@ public class DuoAuthenticationTimeClaimsValidator extends AbstractClaimsValidato
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(DuoAuthenticationTimeClaimsValidator.class);
- /**
- * Lookup strategy to find the amount of time for which a token is valid
- * after if it was first issued. (Default value: 60 seconds)
+ /**
+ * Lookup strategy to determine the maximum permitted age of the
+ * authentication event. Default value: 60 seconds.
*/
@Nonnull private Function<ProfileRequestContext, Duration> authnLifetimeLookupStrategy;
@@ -125,7 +125,6 @@ public class DuoAuthenticationTimeClaimsValidator extends AbstractClaimsValidato
*
* @param strategy the strategy
*
- * @since 2.2.0
*/
public void setAuthnLifetimeLookupStrategy(@Nonnull final Function<ProfileRequestContext, Duration> strategy) {
ifInitializedThrowUnmodifiabledComponentException();
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 979e5812..d26068f0 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
@@ -99,7 +99,7 @@ public final class DuoSDKClientAdaptor extends AbstractDuoOIDCClient{
tokenResponseConverter = new DefaultTokenResponseConverter();
try {
- if (caCerts == null) {
+ if (caCerts == null || caCerts.isEmpty()) {
log.trace("Creating a new Duo client without pinned certificates");
//will use the default certs in the Client if the caCerts are null
final Client newClient = new Client.Builder(integration.getClientId(), integration.getSecretKey(),
@@ -109,7 +109,7 @@ public final class DuoSDKClientAdaptor extends AbstractDuoOIDCClient{
assert newClient != null;
client = newClient;
} else {
- log.trace("Creating a new Duo client with pinned certificates");
+ log.trace("Creating a new Duo client with '{}' pinned certificates", caCerts.size());
final Client newClient = new Client.Builder(integration.getClientId(), integration.getSecretKey(),
integration.getAPIHost(), integration.getRedirectURI()).setCACerts(
caCerts.toArray(new String[caCerts.size()]))
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 ed26d943..4bb73a5b 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
@@ -104,7 +104,7 @@ public final class DuoSDKClientFactory extends AbstractInitializableComponent im
}
/**
- * Check the certificate strings is a valid X.509 certificates, and not, for example, a public key pin.
+ * Check the certificate strings are valid X.509 certificates, and not, for example, a public key pin.
*
* @param certificate the certificate to check
*/
diff --git a/idp-duo-sdk-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java b/idp-duo-sdk-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
index d9359f02..51b2d0a1 100644
--- a/idp-duo-sdk-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
+++ b/idp-duo-sdk-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
@@ -112,5 +112,33 @@ public class DuoSDKClientFactoryTest {
final DuoOIDCClient client = factory.createInstance(integ);
assertNotNull(client);
}
+
+ /**
+ * Test creation.
+ *
+ * @throws DuoClientException on error.
+ * @throws ComponentInitializationException on error
+ */
+ @Test
+ public final void testCreateInstance_EmptyCerts() throws DuoClientException, ComponentInitializationException {
+ final List<Resource> certs = new ArrayList<>();
+ factory.setPinnedCertificates(certs);
+ final DefaultDuoOIDCIntegration integ = new DefaultDuoOIDCIntegration();
+ integ.setAPIHost("api-c9f24c5a.duosecurity.com");
+ integ.setClientId("DIU6GEFWG5LIUTVV2M3N");
+ integ.setRegisteredRedirectURI("http://localhost/");
+ integ.setSecretKey("TeXvZxKul47v1Wew2zb6xRPzAJewJ34MP2w8Uith");
+ integ.setAuthorizeEndpoint("/oauth/v1/authorize");
+ integ.setTokenEndpoint("/oauth/v1/token");
+ integ.setHealthCheckEndpoint("/oauth/v1/health_check");
+ integ.initialize();
+ final var registeredRedirect = integ.getRegisteredRedirectURI();
+ assertNotNull(registeredRedirect);
+ assert registeredRedirect != null;
+ integ.setRedirectURIIfAbsent(registeredRedirect);
+ factory.initialize();
+ final DuoOIDCClient client = factory.createInstance(integ);
+ assertNotNull(client);
+ }
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list