This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch backport/26167-to-camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c54f1bb054bc067c741598e21a264878e4d4b9a5
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Sep 7 16:51:58 2026 +0200

    CAMEL-24632: camel-http - fix proxy scheme defaulting to https for https 
targets
    
    HttpComponent.configureHttpProxy() was deriving the proxy connection scheme
    from the target endpoint scheme (secure ? "https" : "http"), which is wrong.
    The proxy connection scheme is independent of the target: connecting to an
    HTTPS target through an HTTP proxy uses a plain HTTP CONNECT tunnel, with 
TLS
    established end-to-end inside that tunnel.
    
    Fix defaults proxyAuthScheme to "http" unconditionally in HttpComponent,
    HttpEndpoint (deprecated global-options path), and updates the defaultValue
    metadata in HttpCommonEndpoint and HttpConfiguration. The unused boolean 
secure
    parameter is also removed from configureHttpProxy(). Catalog and DSL 
regenerated.
    
    Closes #26167
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 .../org/apache/camel/catalog/components/http.json  |  4 ++--
 .../org/apache/camel/catalog/components/https.json |  4 ++--
 .../camel/http/common/HttpCommonEndpoint.java      |  5 ++--
 .../camel/http/common/HttpConfiguration.java       |  4 +++-
 .../org/apache/camel/component/http/http.json      |  4 ++--
 .../org/apache/camel/component/http/https.json     |  4 ++--
 .../apache/camel/component/http/HttpComponent.java | 13 +++++-----
 .../apache/camel/component/http/HttpEndpoint.java  |  5 ++--
 .../camel/component/http/HttpProxyServerTest.java  | 28 ++++++++++++++++++++++
 .../component/dsl/HttpComponentBuilderFactory.java |  6 ++++-
 .../dsl/HttpsComponentBuilderFactory.java          |  6 ++++-
 .../endpoint/dsl/HttpEndpointBuilderFactory.java   |  5 +++-
 12 files changed, 65 insertions(+), 23 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/http.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/http.json
index c183500884c0..82c1a4a386ca 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/http.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/http.json
@@ -65,7 +65,7 @@
     "proxyAuthNtHost": { "index": 35, "kind": "property", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM (NTLM is deprecated)" },
     "proxyAuthPassword": { "index": 36, "kind": "property", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 37, "kind": "property", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "java.lang.Integer", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP con [...]
     "proxyAuthUsername": { "index": 39, "kind": "property", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 40, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 41, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server port" },
@@ -141,7 +141,7 @@
     "proxyAuthNtHost": { "index": 42, "kind": "parameter", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM" },
     "proxyAuthPassword": { "index": 43, "kind": "parameter", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 44, "kind": "parameter", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "int", "deprecated": true, "autowired": false, 
"secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP co [...]
     "proxyAuthUsername": { "index": 46, "kind": "parameter", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 47, "kind": "parameter", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 48, "kind": "parameter", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Proxy server port" },
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/https.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/https.json
index 6637542599c9..ccdbae8d6bc8 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/https.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/https.json
@@ -65,7 +65,7 @@
     "proxyAuthNtHost": { "index": 35, "kind": "property", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM (NTLM is deprecated)" },
     "proxyAuthPassword": { "index": 36, "kind": "property", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 37, "kind": "property", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "java.lang.Integer", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP con [...]
     "proxyAuthUsername": { "index": 39, "kind": "property", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 40, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 41, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server port" },
@@ -141,7 +141,7 @@
     "proxyAuthNtHost": { "index": 42, "kind": "parameter", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM" },
     "proxyAuthPassword": { "index": 43, "kind": "parameter", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 44, "kind": "parameter", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "int", "deprecated": true, "autowired": false, 
"secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP co [...]
     "proxyAuthUsername": { "index": 46, "kind": "parameter", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 47, "kind": "parameter", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 48, "kind": "parameter", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Proxy server port" },
diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
index 84dc6fd9f138..d901c31f4247 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpCommonEndpoint.java
@@ -183,8 +183,9 @@ public abstract class HttpCommonEndpoint extends 
DefaultEndpoint
     private String proxyHost;
     @UriParam(label = "producer,proxy", description = "Proxy server port")
     private int proxyPort;
-    @UriParam(label = "producer,proxy", enums = "http,https",
-              description = "Proxy server authentication protocol scheme to 
use")
+    @UriParam(label = "producer,proxy", enums = "http,https", defaultValue = 
"http",
+              description = "Proxy server connection protocol scheme. Defaults 
to http regardless of the target endpoint scheme,"
+                            + " because most corporate HTTP proxies expect a 
plain HTTP connection on their listener port.")
     private String proxyAuthScheme;
     @UriParam(label = "producer,proxy", enums = "Basic,Bearer,NTLM",
               description = "Proxy authentication method to use (NTLM is 
deprecated)")
diff --git 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
index f850b79f9d52..aa47c42f7f10 100644
--- 
a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
+++ 
b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpConfiguration.java
@@ -68,7 +68,9 @@ public class HttpConfiguration implements Serializable {
     private String proxyHost;
     @Metadata(label = "producer,proxy", description = "Proxy port to use")
     private int proxyPort;
-    @Metadata(label = "producer,proxy", enums = "http,https", description = 
"Authentication scheme to use")
+    @Metadata(label = "producer,proxy", enums = "http,https", defaultValue = 
"http",
+              description = "Proxy server connection protocol scheme. Defaults 
to http regardless of the target endpoint scheme,"
+                            + " because most corporate HTTP proxies expect a 
plain HTTP connection on their listener port.")
     private String proxyAuthScheme;
     @Metadata(label = "producer,proxy", enums = "Basic,Bearer,NTLM", 
description = "Proxy authentication method to use")
     private String proxyAuthMethod;
diff --git 
a/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/http.json
 
b/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/http.json
index c183500884c0..82c1a4a386ca 100644
--- 
a/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/http.json
+++ 
b/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/http.json
@@ -65,7 +65,7 @@
     "proxyAuthNtHost": { "index": 35, "kind": "property", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM (NTLM is deprecated)" },
     "proxyAuthPassword": { "index": 36, "kind": "property", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 37, "kind": "property", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "java.lang.Integer", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP con [...]
     "proxyAuthUsername": { "index": 39, "kind": "property", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 40, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 41, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server port" },
@@ -141,7 +141,7 @@
     "proxyAuthNtHost": { "index": 42, "kind": "parameter", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM" },
     "proxyAuthPassword": { "index": 43, "kind": "parameter", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 44, "kind": "parameter", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "int", "deprecated": true, "autowired": false, 
"secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP co [...]
     "proxyAuthUsername": { "index": 46, "kind": "parameter", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 47, "kind": "parameter", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 48, "kind": "parameter", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Proxy server port" },
diff --git 
a/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/https.json
 
b/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/https.json
index 6637542599c9..ccdbae8d6bc8 100644
--- 
a/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/https.json
+++ 
b/components/camel-http/src/generated/resources/META-INF/org/apache/camel/component/http/https.json
@@ -65,7 +65,7 @@
     "proxyAuthNtHost": { "index": 35, "kind": "property", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM (NTLM is deprecated)" },
     "proxyAuthPassword": { "index": 36, "kind": "property", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 37, "kind": "property", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "java.lang.Integer", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 38, "kind": "property", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP con [...]
     "proxyAuthUsername": { "index": 39, "kind": "property", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 40, "kind": "property", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 41, "kind": "property", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server port" },
@@ -141,7 +141,7 @@
     "proxyAuthNtHost": { "index": 42, "kind": "parameter", "displayName": 
"Proxy Auth Nt Host", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": true, 
"autowired": false, "secret": false, "description": "Proxy authentication 
domain (workstation name) to use with NTLM" },
     "proxyAuthPassword": { "index": 43, "kind": "parameter", "displayName": 
"Proxy Auth Password", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server password" },
     "proxyAuthPort": { "index": 44, "kind": "parameter", "displayName": "Proxy 
Auth Port", "group": "proxy", "label": "producer,proxy", "required": false, 
"type": "integer", "javaType": "int", "deprecated": true, "autowired": false, 
"secret": false, "description": "Proxy server port" },
-    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Proxy server authentication protocol scheme to use" },
+    "proxyAuthScheme": { "index": 45, "kind": "parameter", "displayName": 
"Proxy Auth Scheme", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "http", 
"https" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "http", "description": "Proxy server connection protocol 
scheme. Defaults to http regardless of the target endpoint scheme, because most 
corporate HTTP proxies expect a plain HTTP co [...]
     "proxyAuthUsername": { "index": 46, "kind": "parameter", "displayName": 
"Proxy Auth Username", "group": "proxy", "label": "producer,proxy", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": true, "security": "secret", "description": "Proxy 
server username" },
     "proxyHost": { "index": 47, "kind": "parameter", "displayName": "Proxy 
Host", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "Proxy server host" },
     "proxyPort": { "index": 48, "kind": "parameter", "displayName": "Proxy 
Port", "group": "proxy", "label": "producer,proxy", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Proxy server port" },
diff --git 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
index 72f74b56e534..352173cbae48 100644
--- 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
+++ 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpComponent.java
@@ -148,8 +148,9 @@ public class HttpComponent extends HttpCommonComponent 
implements RestProducerFa
     @Metadata(label = "producer,proxy", description = "Comma-separated list of 
hosts that should bypass the proxy. "
                                                       + "Supports wildcards, 
e.g., localhost,*.example.com,192.168.*.")
     protected String nonProxyHosts;
-    @Metadata(label = "producer,proxy", enums = "http,https",
-              description = "Proxy server authentication protocol scheme to 
use")
+    @Metadata(label = "producer,proxy", enums = "http,https", defaultValue = 
"http",
+              description = "Proxy server connection protocol scheme. Defaults 
to http regardless of the target endpoint scheme,"
+                            + " because most corporate HTTP proxies expect a 
plain HTTP connection on their listener port.")
     protected String proxyAuthScheme;
     @Metadata(label = "producer,proxy", enums = "Basic,Digest,NTLM",
               description = "Proxy authentication method to use (NTLM is 
deprecated)")
@@ -263,7 +264,7 @@ public class HttpComponent extends HttpCommonComponent 
implements RestProducerFa
         }
         HttpCredentialsHelper credentialsProvider = new 
HttpCredentialsHelper();
         configurer = configureBasicAuthentication(parameters, configurer, 
credentialsProvider, targetUri);
-        configurer = configureHttpProxy(parameters, configurer, secure, 
credentialsProvider);
+        configurer = configureHttpProxy(parameters, configurer, 
credentialsProvider);
         configurer = configureOAuth2Authentication(parameters, configurer, 
targetUri);
 
         return configurer;
@@ -378,14 +379,14 @@ public class HttpComponent extends HttpCommonComponent 
implements RestProducerFa
     }
 
     private HttpClientConfigurer configureHttpProxy(
-            Map<String, Object> parameters, HttpClientConfigurer configurer, 
boolean secure,
+            Map<String, Object> parameters, HttpClientConfigurer configurer,
             HttpCredentialsHelper credentialsProvider) {
 
         String nonProxyhosts = getParameter(parameters, "nonProxyHosts", 
String.class, getNonProxyHosts());
         String proxyAuthScheme = getParameter(parameters, "proxyAuthScheme", 
String.class, getProxyAuthScheme());
         if (proxyAuthScheme == null) {
-            // fallback and use either http or https depending on secure
-            proxyAuthScheme = secure ? "https" : "http";
+            // proxy connection itself uses http by default regardless of the 
target endpoint scheme
+            proxyAuthScheme = "http";
         }
         // these are old names and are deprecated
         String proxyAuthHost = getParameter(parameters, "proxyAuthHost", 
String.class, getProxyAuthHost());
diff --git 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
index bc852f021181..5a453b2e5fc4 100644
--- 
a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
+++ 
b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
@@ -33,7 +33,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.http.base.HttpHelper;
 import org.apache.camel.http.base.cookie.CookieHandler;
 import org.apache.camel.http.common.HttpCommonEndpoint;
 import org.apache.camel.spi.Metadata;
@@ -291,9 +290,9 @@ public class HttpEndpoint extends HttpCommonEndpoint 
implements LineNumberAware
                 String host = 
getCamelContext().getGlobalOption("http.proxyHost");
                 int port = 
Integer.parseInt(getCamelContext().getGlobalOption("http.proxyPort"));
                 String scheme = 
getCamelContext().getGlobalOption("http.proxyScheme");
-                // fallback and use either http or https depending on secure
+                // proxy connection uses http by default regardless of the 
target endpoint scheme
                 if (scheme == null) {
-                    scheme = HttpHelper.isSecureConnection(getEndpointUri()) ? 
"https" : "http";
+                    scheme = "http";
                 }
                 LOG.warn(
                         "CamelContext global options 
[http.proxyHost,http.proxyPort,http.proxyScheme] detected."
diff --git 
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProxyServerTest.java
 
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProxyServerTest.java
index 66fc164d9bb3..a34122f39ffb 100644
--- 
a/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProxyServerTest.java
+++ 
b/components/camel-http/src/test/java/org/apache/camel/component/http/HttpProxyServerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.http;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -26,6 +27,8 @@ import 
org.apache.camel.component.http.handler.HeaderValidationHandler;
 import org.apache.camel.component.http.interceptor.RequestProxyBasicAuth;
 import 
org.apache.camel.component.http.interceptor.ResponseProxyBasicUnauthorized;
 import org.apache.camel.util.URISupport;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.core5.http.HttpHost;
 import org.apache.hc.core5.http.HttpRequestInterceptor;
 import org.apache.hc.core5.http.HttpResponseInterceptor;
 import org.apache.hc.core5.http.impl.bootstrap.HttpServer;
@@ -37,6 +40,7 @@ import org.apache.hc.core5.http.protocol.ResponseContent;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.component.http.HttpMethods.GET;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class HttpProxyServerTest extends BaseHttpTest {
@@ -143,6 +147,30 @@ public class HttpProxyServerTest extends BaseHttpTest {
         assertExchange(exchange);
     }
 
+    @Test
+    public void httpsTargetWithProxyDefaultsToHttpProxyScheme() throws 
Exception {
+        // CAMEL-24632: proxy scheme must default to "http" regardless of the 
target endpoint scheme
+        HttpEndpoint endpoint = context.getEndpoint(
+                "https://www.example.com?proxyHost=myproxy&proxyPort=8080";, 
HttpEndpoint.class);
+
+        HttpClientConfigurer configurer = endpoint.getHttpClientConfigurer();
+        assertThat(configurer).isNotNull();
+
+        HttpClientBuilder builder = HttpClientBuilder.create();
+        configurer.configureHttpClient(builder);
+
+        Field proxyField = HttpClientBuilder.class.getDeclaredField("proxy");
+        proxyField.setAccessible(true);
+        HttpHost proxy = (HttpHost) proxyField.get(builder);
+
+        assertThat(proxy).isNotNull();
+        assertThat(proxy.getHostName()).isEqualTo("myproxy");
+        assertThat(proxy.getPort()).isEqualTo(8080);
+        assertThat(proxy.getSchemeName())
+                .as("Proxy scheme must be http even when the target endpoint 
is https")
+                .isEqualTo("http");
+    }
+
     private String getHost() {
         return "127.0.0.1";
     }
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpComponentBuilderFactory.java
index 4a698fa72dc8..d04b153f4b50 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpComponentBuilderFactory.java
@@ -725,11 +725,15 @@ public interface HttpComponentBuilderFactory {
             return this;
         }
     
+        
         /**
-         * Proxy server authentication protocol scheme to use.
+         * Proxy server connection protocol scheme. Defaults to http regardless
+         * of the target endpoint scheme, because most corporate HTTP proxies
+         * expect a plain HTTP connection on their listener port.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
+         * Default: http
          * Group: proxy
          * 
          * @param proxyAuthScheme the value to set
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpsComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpsComponentBuilderFactory.java
index ab81bf36ef47..332a3b19469c 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpsComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/HttpsComponentBuilderFactory.java
@@ -725,11 +725,15 @@ public interface HttpsComponentBuilderFactory {
             return this;
         }
     
+        
         /**
-         * Proxy server authentication protocol scheme to use.
+         * Proxy server connection protocol scheme. Defaults to http regardless
+         * of the target endpoint scheme, because most corporate HTTP proxies
+         * expect a plain HTTP connection on their listener port.
          * 
          * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
          * 
+         * Default: http
          * Group: proxy
          * 
          * @param proxyAuthScheme the value to set
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HttpEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HttpEndpointBuilderFactory.java
index 5fe684ad2fc1..a6bb3487b085 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HttpEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HttpEndpointBuilderFactory.java
@@ -546,10 +546,13 @@ public interface HttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * Proxy server authentication protocol scheme to use.
+         * Proxy server connection protocol scheme. Defaults to http regardless
+         * of the target endpoint scheme, because most corporate HTTP proxies
+         * expect a plain HTTP connection on their listener port.
          * 
          * The option is a: <code>java.lang.String</code> type.
          * 
+         * Default: http
          * Group: proxy
          * 
          * @param proxyAuthScheme the value to set

Reply via email to