diff --git a/extensions-core/druid-pac4j/pom.xml b/extensions-core/druid-pac4j/pom.xml
index 9d7960b663e6..577ee03e8e7e 100644
--- a/extensions-core/druid-pac4j/pom.xml
+++ b/extensions-core/druid-pac4j/pom.xml
@@ -35,6 +35,10 @@
3.8.3
+
+
+ 7.9
+ 6.5
@@ -60,10 +64,16 @@
pac4j-oidc
${pac4j.version}
+
com.nimbusds
nimbus-jose-jwt
- 7.9
+ ${nimbus.jose.jwt.version}
+
+
+ com.nimbusds
+ oauth2-oidc-sdk
+ ${oauth2.oidc.sdk.version}
diff --git a/extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jAuthenticator.java b/extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jAuthenticator.java
index c0473ce42542..2ca500020f6a 100644
--- a/extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jAuthenticator.java
+++ b/extensions-core/druid-pac4j/src/main/java/org/apache/druid/security/pac4j/Pac4jAuthenticator.java
@@ -25,7 +25,9 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
+import com.google.common.primitives.Ints;
import com.google.inject.Provider;
+import com.nimbusds.oauth2.sdk.http.HTTPRequest;
import org.apache.druid.server.security.AuthenticationResult;
import org.apache.druid.server.security.Authenticator;
import org.pac4j.core.config.Config;
@@ -130,7 +132,10 @@ private Config createPac4jConfig(OIDCConfig oidcConfig)
oidcConf.setDiscoveryURI(oidcConfig.getDiscoveryURI());
oidcConf.setExpireSessionWithToken(true);
oidcConf.setUseNonce(true);
+ oidcConf.setReadTimeout(Ints.checkedCast(pac4jCommonConfig.getReadTimeout().getMillis()));
+
oidcConf.setResourceRetriever(
+ // ResourceRetriever is used to get Auth server configuration from "discoveryURI"
new CustomSSLResourceRetriever(pac4jCommonConfig.getReadTimeout().getMillis(), sslSocketFactory)
);
@@ -138,6 +143,11 @@ private Config createPac4jConfig(OIDCConfig oidcConfig)
oidcClient.setUrlResolver(new DefaultUrlResolver(true));
oidcClient.setCallbackUrlResolver(new NoParameterCallbackUrlResolver());
+ // This is used by OidcClient in various places to make HTTPrequests.
+ if (sslSocketFactory != null) {
+ HTTPRequest.setDefaultSSLSocketFactory(sslSocketFactory);
+ }
+
return new Config(Pac4jCallbackResource.SELF_URL, oidcClient);
}
}