[java-shib-metadata] branch main updated: IDP-2486 - Adjust default UserAgent handling in IdP to be extensible
Codeberg
noreply at shibboleth.net
Thu Oct 15 19:05:21 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-shib-metadata.
View the commit online:
https://codeberg.org/Shibboleth/java-shib-metadata/commit/d0b9dea598be1303a6498961afb2411392fc61af
The following commit(s) were added to refs/heads/main by this push:
new d0b9dea5 IDP-2486 - Adjust default UserAgent handling in IdP to be extensible
d0b9dea5 is described below
commit d0b9dea598be1303a6498961afb2411392fc61af
Author: Scott Cantor <scott at restingparrotsoftware.com>
AuthorDate: Thu Oct 15 14:42:06 2026 -0400
IDP-2486 - Adjust default UserAgent handling in IdP to be extensible
https://shibboleth.atlassian.net/browse/IDP-2486
Deprecate our subclassed HttpClient factories.
Alter metadata parsers to indirect in a User-Agent bean.
---
.../spring/http/FileCachingHttpClientFactoryBean.java | 14 ++++++++++----
.../shibboleth/spring/http/HttpClientFactoryBean.java | 14 ++++++++++----
.../http/InMemoryCachingHttpClientFactoryBean.java | 16 +++++++++++-----
.../AbstractDynamicHTTPMetadataProviderParser.java | 15 ++++++++++++---
.../spring/metadata/HTTPMetadataProviderParser.java | 12 ++++++++++--
.../metadata/HTTPMetadataProvidersParserSupport.java | 7 ++++++-
6 files changed, 59 insertions(+), 19 deletions(-)
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/FileCachingHttpClientFactoryBean.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/FileCachingHttpClientFactoryBean.java
index 1f33f7c4..77b34491 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/FileCachingHttpClientFactoryBean.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/FileCachingHttpClientFactoryBean.java
@@ -15,18 +15,24 @@
package net.shibboleth.spring.http;
import net.shibboleth.saml.metadata.Version;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
* Factory bean customization for the Shibboleth IdP.
+ *
+ * @deprecated
*/
+ at Deprecated(since="5.3.0", forRemoval=true)
public class FileCachingHttpClientFactoryBean
extends net.shibboleth.shared.spring.httpclient.factory.FileCachingHttpClientFactoryBean {
- /**
- * Constructor.
- *
- */
+ /** Default constructor. */
+ @Deprecated(since="5.3.0", forRemoval=true)
public FileCachingHttpClientFactoryBean() {
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName() , null,
+ net.shibboleth.shared.spring.httpclient.factory.FileCachingHttpClientFactoryBean.class.getName());
+
final StringBuilder stringBuilder = new StringBuilder("Shibboleth/");
stringBuilder.append(Version.getVersion())
.append(" OpenSAML/")
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HttpClientFactoryBean.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HttpClientFactoryBean.java
index 669ab8e5..1d3ab8e2 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HttpClientFactoryBean.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HttpClientFactoryBean.java
@@ -15,17 +15,23 @@
package net.shibboleth.spring.http;
import net.shibboleth.saml.metadata.Version;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
* Factory bean customization for the Shibboleth IdP.
+ *
+ * @deprecated
*/
+ at Deprecated(since="5.3.0", forRemoval=true)
public class HttpClientFactoryBean extends net.shibboleth.shared.spring.httpclient.factory.HttpClientFactoryBean {
- /**
- * Constructor.
- *
- */
+ /** Default constructor. */
+ @Deprecated(since="5.3.0", forRemoval=true)
public HttpClientFactoryBean() {
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName() , null,
+ net.shibboleth.shared.spring.httpclient.factory.HttpClientFactoryBean.class.getName());
+
final StringBuilder stringBuilder = new StringBuilder("Shibboleth/");
stringBuilder.append(Version.getVersion())
.append(" OpenSAML/")
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/InMemoryCachingHttpClientFactoryBean.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/InMemoryCachingHttpClientFactoryBean.java
index f0c2a16f..b59a7411 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/InMemoryCachingHttpClientFactoryBean.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/InMemoryCachingHttpClientFactoryBean.java
@@ -15,18 +15,24 @@
package net.shibboleth.spring.http;
import net.shibboleth.saml.metadata.Version;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * Factory bean customization for the Shibboleth IdP.
+ * Factory bean customization for the Shibboleth IdP.
+ *
+ * @deprecated
*/
+ at Deprecated(since="5.3.0", forRemoval=true)
public class InMemoryCachingHttpClientFactoryBean
extends net.shibboleth.shared.spring.httpclient.factory.InMemoryCachingHttpClientFactoryBean {
- /**
- * Constructor.
- *
- */
+ /** Default constructor. */
+ @Deprecated(since="5.3.0", forRemoval=true)
public InMemoryCachingHttpClientFactoryBean() {
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName() , null,
+ net.shibboleth.shared.spring.httpclient.factory.InMemoryCachingHttpClientFactoryBean.class.getName());
+
final StringBuilder stringBuilder = new StringBuilder("Shibboleth/");
stringBuilder.append(Version.getVersion())
.append(" OpenSAML/")
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
index f477af1e..67634cb6 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
@@ -27,11 +27,11 @@ import org.w3c.dom.Element;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.spring.httpclient.factory.HttpClientFactoryBean;
+import net.shibboleth.shared.spring.httpclient.factory.InMemoryCachingHttpClientFactoryBean;
import net.shibboleth.shared.spring.util.SpringSupport;
import net.shibboleth.shared.xml.AttributeSupport;
import net.shibboleth.shared.xml.ElementSupport;
-import net.shibboleth.spring.http.HttpClientFactoryBean;
-import net.shibboleth.spring.http.InMemoryCachingHttpClientFactoryBean;
/**
* Parser for abstract dynamic HTTP metadata resolvers.
@@ -72,6 +72,14 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
/** Logger. */
private final Logger log = LoggerFactory.getLogger(AbstractDynamicHTTPMetadataProviderParser.class);
+ /** Bean ID for defaulted User-Agent string. */
+ @Nullable private final String userAgentBeanID;
+
+ /** Constructor. */
+ public AbstractDynamicHTTPMetadataProviderParser() {
+ userAgentBeanID = getCustomProperty(AbstractDynamicHTTPMetadataProviderParser.class.getName() + ".UserAgent.bean", null);
+ }
+
// Checkstyle: CyclomaticComplexity OFF
/** {@inheritDoc} */
@Override protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@@ -142,7 +150,8 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
HTTPMetadataProvidersParserSupport.buildCommonClientBuilder(element,
parserContext,
useCachingHttpClient ? DEFAULT_CACHING_CLIENT_CLASS : DEFAULT_NON_CACHING_CLIENT_CLASS,
- httpClientSecurityParameters);
+ httpClientSecurityParameters,
+ userAgentBeanID);
// Set up non standard defaults
if (!element.hasAttributeNS(null, "connectionTimeout")) {
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
index c9ef06bc..3f0ab9f6 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
@@ -25,9 +25,9 @@ import org.w3c.dom.Element;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.spring.httpclient.factory.HttpClientFactoryBean;
import net.shibboleth.shared.xml.AttributeSupport;
import net.shibboleth.shared.xml.ElementSupport;
-import net.shibboleth.spring.http.HttpClientFactoryBean;
/**
* Parser for a FilesystemMetadataProvider.
@@ -40,6 +40,14 @@ public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetada
/** Logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(HTTPMetadataProviderParser.class);
+ /** Bean ID for defaulted User-Agent string. */
+ @Nullable private final String userAgentBeanID;
+
+ /** Constructor. */
+ public HTTPMetadataProviderParser() {
+ userAgentBeanID = getCustomProperty(HTTPMetadataProviderParser.class.getName() + ".UserAgent.bean", null);
+ }
+
/** {@inheritDoc} */
@Override protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
@@ -91,7 +99,7 @@ public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetada
@Nonnull final ParserContext parserContext, @Nullable final BeanDefinition httpClientSecurityParameters) {
return HTTPMetadataProvidersParserSupport.buildCommonClientBuilder(element, parserContext,
- HTTPMetadataProviderParser.DEFAULT_CLIENT_CLASS, httpClientSecurityParameters).getBeanDefinition();
+ HTTPMetadataProviderParser.DEFAULT_CLIENT_CLASS, httpClientSecurityParameters, userAgentBeanID).getBeanDefinition();
}
}
\ No newline at end of file
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
index 794c0105..8b7e8151 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
@@ -168,12 +168,13 @@ public final class HTTPMetadataProvidersParserSupport {
* @param parserContext context
* @param clientBuildClass the type of builder to create.
* @param httpClientSecurityParameters the client security parameters to be used
+ * @param userAgentBeanID optional bean ID of a UserAgent source to install
*
* @return an appropriate builder
*/
@Nonnull protected static BeanDefinitionBuilder buildCommonClientBuilder(@Nonnull final Element element,
@Nonnull final ParserContext parserContext, @Nonnull final Class<?> clientBuildClass,
- @Nullable final BeanDefinition httpClientSecurityParameters) {
+ @Nullable final BeanDefinition httpClientSecurityParameters, @Nullable final String userAgentBeanID) {
final BeanDefinitionBuilder clientBuilder = BeanDefinitionBuilder.genericBeanDefinition(clientBuildClass);
@@ -224,6 +225,10 @@ public final class HTTPMetadataProvidersParserSupport {
if (element.hasAttributeNS(null, "proxyPassword")) {
clientBuilder.addPropertyValue("connectionProxyPassword", element.getAttributeNS(null, "proxyPassword"));
}
+
+ if (userAgentBeanID != null) {
+ clientBuilder.addPropertyReference("userAgent", userAgentBeanID);
+ }
return clientBuilder;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list