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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new f9f2b6195ea6 CAMEL-17369: camel-google-storage - support Workload 
Identity Federation and service account impersonation (#28157)
f9f2b6195ea6 is described below

commit f9f2b6195ea654087dd4c5364da9193f82c4e93e
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Oct 20 12:57:30 2026 +0200

    CAMEL-17369: camel-google-storage - support Workload Identity Federation 
and service account impersonation (#28157)
    
    GoogleCredentialsHelper already loads Workload Identity Federation 
credentials
    and wraps them with ImpersonatedCredentials, but no component exposed the
    switches: useWorkloadIdentityFederation, workloadIdentityConfig and
    impersonatedServiceAccount were only default methods of
    GoogleCommonConfiguration. The google-storage endpoint now has these 
options.
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/catalog/components/google-storage.json   |  10 +-
 .../catalog/docs/google-storage-component.adoc     |  23 +++
 .../GoogleCloudStorageComponentConfigurer.java     |  18 ++
 .../GoogleCloudStorageEndpointConfigurer.java      |  18 ++
 .../GoogleCloudStorageEndpointUriFactory.java      |   5 +-
 .../component/google/storage/google-storage.json   |  10 +-
 .../src/main/docs/google-storage-component.adoc    |  23 +++
 .../storage/GoogleCloudStorageConfiguration.java   |  52 +++++
 .../GoogleCloudStorageWorkloadIdentityTest.java    |  79 ++++++++
 .../src/test/resources/wif-config.json             |   9 +
 .../dsl/GoogleStorageComponentBuilderFactory.java  |  63 ++++++
 .../GoogleCloudStorageEndpointBuilderFactory.java  | 225 +++++++++++++++++++++
 12 files changed, 530 insertions(+), 5 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
index 6e2f7e1ee8ae..c074a07ef91b 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
@@ -44,7 +44,10 @@
     "operation": { "index": 17, "kind": "property", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.Goo [...]
     "autowiredEnabled": { "index": 18, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
     "healthCheckConsumerEnabled": { "index": 19, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
-    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
+    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
+    "impersonatedServiceAccount": { "index": 21, "kind": "property", 
"displayName": "Impersonated Service Account", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The email of a service 
account to impersonate with th [...]
+    "useWorkloadIdentityFederation": { "index": 22, "kind": "property", 
"displayName": "Use Workload Identity Federation", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Whether to authenticate 
with Wo [...]
+    "workloadIdentityConfig": { "index": 23, "kind": "property", 
"displayName": "Workload Identity Config", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Workload Identity 
Federation credential configuration fil [...]
   },
   "headers": {
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
@@ -112,6 +115,9 @@
     "schedulerProperties": { "index": 32, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler. This i [...]
     "startScheduler": { "index": 33, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
     "timeUnit": { "index": 34, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 35, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "useFixedDelay": { "index": 35, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "impersonatedServiceAccount": { "index": 36, "kind": "parameter", 
"displayName": "Impersonated Service Account", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The email of a service 
account to impersonate with t [...]
+    "useWorkloadIdentityFederation": { "index": 37, "kind": "parameter", 
"displayName": "Use Workload Identity Federation", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Whether to authenticate 
with W [...]
+    "workloadIdentityConfig": { "index": 38, "kind": "parameter", 
"displayName": "Workload Identity Config", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Workload Identity 
Federation credential configuration fi [...]
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
index 3f67cfcfa8c5..e088354e966a 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-storage-component.adoc
@@ -55,6 +55,29 @@ Provide authentication credentials to your application code 
by setting the envir
 export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
 ----
 
+=== Workload Identity Federation
+
+Instead of a service account key, the component can authenticate with
+https://cloud.google.com/iam/docs/workload-identity-federation[Workload 
Identity Federation], enabled with
+`useWorkloadIdentityFederation=true`:
+
+* With `workloadIdentityConfig`, the component loads a credential 
configuration file of type `external_account`, such
+as the one that `gcloud iam workload-identity-pools create-cred-config` 
generates, and exchanges the token of the external
+identity provider (AWS, Azure, an OIDC provider) for Google credentials.
+* Without it, the component uses the Application Default Credentials, which 
detect Workload Identity on GKE.
+
+Set `impersonatedServiceAccount` to act as a service account with the 
federated credentials. The federated identity
+needs the `Service Account Token Creator` role on that service account.
+
+._Java-only: constructing the endpoint URI programmatically_
+
+[source,java]
+----
+String endpoint = 
"google-storage://myCamelBucket?useWorkloadIdentityFederation=true"
+        + "&workloadIdentityConfig=file:/etc/gcp/wif-config.json"
+        + 
"&impersonatedServiceAccount=storage-wri...@my-project.iam.gserviceaccount.com";
+----
+
 
 == URI Format
 
diff --git 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
index 5840bda27da1..3e8cdf59f70c 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
+++ 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
@@ -48,6 +48,8 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "healthCheckConsumerEnabled": 
target.setHealthCheckConsumerEnabled(property(camelContext, boolean.class, 
value)); return true;
         case "healthcheckproducerenabled":
         case "healthCheckProducerEnabled": 
target.setHealthCheckProducerEnabled(property(camelContext, boolean.class, 
value)); return true;
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": 
getOrCreateConfiguration(target).setImpersonatedServiceAccount(property(camelContext,
 java.lang.String.class, value)); return true;
         case "includebody":
         case "includeBody": 
getOrCreateConfiguration(target).setIncludeBody(property(camelContext, 
boolean.class, value)); return true;
         case "includefolders":
@@ -68,6 +70,10 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "storageClient": 
getOrCreateConfiguration(target).setStorageClient(property(camelContext, 
com.google.cloud.storage.Storage.class, value)); return true;
         case "storagelocation":
         case "storageLocation": 
getOrCreateConfiguration(target).setStorageLocation(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": 
getOrCreateConfiguration(target).setUseWorkloadIdentityFederation(property(camelContext,
 boolean.class, value)); return true;
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": 
getOrCreateConfiguration(target).setWorkloadIdentityConfig(property(camelContext,
 java.lang.String.class, value)); return true;
         default: return false;
         }
     }
@@ -98,6 +104,8 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "healthCheckConsumerEnabled": return boolean.class;
         case "healthcheckproducerenabled":
         case "healthCheckProducerEnabled": return boolean.class;
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": return java.lang.String.class;
         case "includebody":
         case "includeBody": return boolean.class;
         case "includefolders":
@@ -118,6 +126,10 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "storageClient": return com.google.cloud.storage.Storage.class;
         case "storagelocation":
         case "storageLocation": return java.lang.String.class;
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": return boolean.class;
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": return java.lang.String.class;
         default: return null;
         }
     }
@@ -144,6 +156,8 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "healthCheckConsumerEnabled": return 
target.isHealthCheckConsumerEnabled();
         case "healthcheckproducerenabled":
         case "healthCheckProducerEnabled": return 
target.isHealthCheckProducerEnabled();
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": return 
getOrCreateConfiguration(target).getImpersonatedServiceAccount();
         case "includebody":
         case "includeBody": return 
getOrCreateConfiguration(target).isIncludeBody();
         case "includefolders":
@@ -164,6 +178,10 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "storageClient": return 
getOrCreateConfiguration(target).getStorageClient();
         case "storagelocation":
         case "storageLocation": return 
getOrCreateConfiguration(target).getStorageLocation();
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": return 
getOrCreateConfiguration(target).isUseWorkloadIdentityFederation();
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": return 
getOrCreateConfiguration(target).getWorkloadIdentityConfig();
         default: return null;
         }
     }
diff --git 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
index 13f2f4766275..858cba474498 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
+++ 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java
@@ -46,6 +46,8 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "exchangePattern": 
target.setExchangePattern(property(camelContext, 
org.apache.camel.ExchangePattern.class, value)); return true;
         case "filter": 
target.getConfiguration().setFilter(property(camelContext, 
java.lang.String.class, value)); return true;
         case "greedy": target.setGreedy(property(camelContext, boolean.class, 
value)); return true;
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": 
target.getConfiguration().setImpersonatedServiceAccount(property(camelContext, 
java.lang.String.class, value)); return true;
         case "includebody":
         case "includeBody": 
target.getConfiguration().setIncludeBody(property(camelContext, boolean.class, 
value)); return true;
         case "includefolders":
@@ -87,6 +89,10 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "timeUnit": target.setTimeUnit(property(camelContext, 
java.util.concurrent.TimeUnit.class, value)); return true;
         case "usefixeddelay":
         case "useFixedDelay": target.setUseFixedDelay(property(camelContext, 
boolean.class, value)); return true;
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": 
target.getConfiguration().setUseWorkloadIdentityFederation(property(camelContext,
 boolean.class, value)); return true;
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": 
target.getConfiguration().setWorkloadIdentityConfig(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
     }
@@ -122,6 +128,8 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "exchangePattern": return org.apache.camel.ExchangePattern.class;
         case "filter": return java.lang.String.class;
         case "greedy": return boolean.class;
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": return java.lang.String.class;
         case "includebody":
         case "includeBody": return boolean.class;
         case "includefolders":
@@ -163,6 +171,10 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "timeUnit": return java.util.concurrent.TimeUnit.class;
         case "usefixeddelay":
         case "useFixedDelay": return boolean.class;
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": return boolean.class;
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": return java.lang.String.class;
         default: return null;
         }
     }
@@ -194,6 +206,8 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "exchangePattern": return target.getExchangePattern();
         case "filter": return target.getConfiguration().getFilter();
         case "greedy": return target.isGreedy();
+        case "impersonatedserviceaccount":
+        case "impersonatedServiceAccount": return 
target.getConfiguration().getImpersonatedServiceAccount();
         case "includebody":
         case "includeBody": return target.getConfiguration().isIncludeBody();
         case "includefolders":
@@ -235,6 +249,10 @@ public class GoogleCloudStorageEndpointConfigurer extends 
PropertyConfigurerSupp
         case "timeUnit": return target.getTimeUnit();
         case "usefixeddelay":
         case "useFixedDelay": return target.isUseFixedDelay();
+        case "useworkloadidentityfederation":
+        case "useWorkloadIdentityFederation": return 
target.getConfiguration().isUseWorkloadIdentityFederation();
+        case "workloadidentityconfig":
+        case "workloadIdentityConfig": return 
target.getConfiguration().getWorkloadIdentityConfig();
         default: return null;
         }
     }
diff --git 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
index d6a9e2f3bbc6..5772d049cb7c 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
+++ 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java
@@ -24,7 +24,7 @@ public class GoogleCloudStorageEndpointUriFactory extends 
org.apache.camel.suppo
     private static final Set<String> ENDPOINT_IDENTITY_PROPERTY_NAMES;
     private static final Map<String, String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(36);
+        Set<String> props = new HashSet<>(39);
         props.add("autoCreateBucket");
         props.add("backoffErrorThreshold");
         props.add("backoffIdleThreshold");
@@ -39,6 +39,7 @@ public class GoogleCloudStorageEndpointUriFactory extends 
org.apache.camel.suppo
         props.add("exchangePattern");
         props.add("filter");
         props.add("greedy");
+        props.add("impersonatedServiceAccount");
         props.add("includeBody");
         props.add("includeFolders");
         props.add("initialDelay");
@@ -61,6 +62,8 @@ public class GoogleCloudStorageEndpointUriFactory extends 
org.apache.camel.suppo
         props.add("storageLocation");
         props.add("timeUnit");
         props.add("useFixedDelay");
+        props.add("useWorkloadIdentityFederation");
+        props.add("workloadIdentityConfig");
         PROPERTY_NAMES = Collections.unmodifiableSet(props);
         SECRET_PROPERTY_NAMES = Collections.emptySet();
         ENDPOINT_IDENTITY_PROPERTY_NAMES = Collections.emptySet();
diff --git 
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
 
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
index 6e2f7e1ee8ae..c074a07ef91b 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
+++ 
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
@@ -44,7 +44,10 @@
     "operation": { "index": 17, "kind": "property", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.Goo [...]
     "autowiredEnabled": { "index": 18, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
     "healthCheckConsumerEnabled": { "index": 19, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
-    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
+    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
+    "impersonatedServiceAccount": { "index": 21, "kind": "property", 
"displayName": "Impersonated Service Account", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The email of a service 
account to impersonate with th [...]
+    "useWorkloadIdentityFederation": { "index": 22, "kind": "property", 
"displayName": "Use Workload Identity Federation", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Whether to authenticate 
with Wo [...]
+    "workloadIdentityConfig": { "index": 23, "kind": "property", 
"displayName": "Workload Identity Config", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Workload Identity 
Federation credential configuration fil [...]
   },
   "headers": {
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
@@ -112,6 +115,9 @@
     "schedulerProperties": { "index": 32, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler. This i [...]
     "startScheduler": { "index": 33, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
     "timeUnit": { "index": 34, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 35, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "useFixedDelay": { "index": 35, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." },
+    "impersonatedServiceAccount": { "index": 36, "kind": "parameter", 
"displayName": "Impersonated Service Account", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The email of a service 
account to impersonate with t [...]
+    "useWorkloadIdentityFederation": { "index": 37, "kind": "parameter", 
"displayName": "Use Workload Identity Federation", "group": "security", 
"label": "security", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Whether to authenticate 
with W [...]
+    "workloadIdentityConfig": { "index": 38, "kind": "parameter", 
"displayName": "Workload Identity Config", "group": "security", "label": 
"security", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Workload Identity 
Federation credential configuration fi [...]
   }
 }
diff --git 
a/components/camel-google/camel-google-storage/src/main/docs/google-storage-component.adoc
 
b/components/camel-google/camel-google-storage/src/main/docs/google-storage-component.adoc
index 3f67cfcfa8c5..e088354e966a 100644
--- 
a/components/camel-google/camel-google-storage/src/main/docs/google-storage-component.adoc
+++ 
b/components/camel-google/camel-google-storage/src/main/docs/google-storage-component.adoc
@@ -55,6 +55,29 @@ Provide authentication credentials to your application code 
by setting the envir
 export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
 ----
 
+=== Workload Identity Federation
+
+Instead of a service account key, the component can authenticate with
+https://cloud.google.com/iam/docs/workload-identity-federation[Workload 
Identity Federation], enabled with
+`useWorkloadIdentityFederation=true`:
+
+* With `workloadIdentityConfig`, the component loads a credential 
configuration file of type `external_account`, such
+as the one that `gcloud iam workload-identity-pools create-cred-config` 
generates, and exchanges the token of the external
+identity provider (AWS, Azure, an OIDC provider) for Google credentials.
+* Without it, the component uses the Application Default Credentials, which 
detect Workload Identity on GKE.
+
+Set `impersonatedServiceAccount` to act as a service account with the 
federated credentials. The federated identity
+needs the `Service Account Token Creator` role on that service account.
+
+._Java-only: constructing the endpoint URI programmatically_
+
+[source,java]
+----
+String endpoint = 
"google-storage://myCamelBucket?useWorkloadIdentityFederation=true"
+        + "&workloadIdentityConfig=file:/etc/gcp/wif-config.json"
+        + 
"&impersonatedServiceAccount=storage-wri...@my-project.iam.gserviceaccount.com";
+----
+
 
 == URI Format
 
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConfiguration.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConfiguration.java
index 458d3ab75411..7bbcdf46eca8 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConfiguration.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConfiguration.java
@@ -37,6 +37,15 @@ public class GoogleCloudStorageConfiguration implements 
Cloneable, GoogleCommonC
                             + " classpath, but you can prefix with classpath:, 
file:, or http: to load the resource from different systems.")
     private String serviceAccountKey;
 
+    @UriParam(label = "security")
+    private boolean useWorkloadIdentityFederation;
+
+    @UriParam(label = "security")
+    private String workloadIdentityConfig;
+
+    @UriParam(label = "security")
+    private String impersonatedServiceAccount;
+
     @UriParam(label = "producer",
               enums = 
"copyObject,listObjects,deleteObject,deleteBucket,listBuckets,getObject,createDownloadLink")
     private GoogleCloudStorageOperations operation;
@@ -108,6 +117,49 @@ public class GoogleCloudStorageConfiguration implements 
Cloneable, GoogleCommonC
         this.serviceAccountKey = serviceAccountKey;
     }
 
+    @Override
+    public boolean isUseWorkloadIdentityFederation() {
+        return useWorkloadIdentityFederation;
+    }
+
+    /**
+     * Whether to authenticate with Workload Identity Federation instead of a 
service account key: with the credential
+     * configuration file given in workloadIdentityConfig or, when it is not 
set, with the Application Default
+     * Credentials, which detect Workload Identity on GKE.
+     */
+    public void setUseWorkloadIdentityFederation(boolean 
useWorkloadIdentityFederation) {
+        this.useWorkloadIdentityFederation = useWorkloadIdentityFederation;
+    }
+
+    @Override
+    public String getWorkloadIdentityConfig() {
+        return workloadIdentityConfig;
+    }
+
+    /**
+     * The Workload Identity Federation credential configuration file (JSON, 
of type external_account), which says how
+     * to exchange a token of an external identity provider, such as AWS, 
Azure or an OIDC provider, for Google
+     * credentials. Used when useWorkloadIdentityFederation is enabled. It is 
loaded from the classpath by default;
+     * prefix it with classpath:, file:, http: or https: to load it from 
another location.
+     */
+    public void setWorkloadIdentityConfig(String workloadIdentityConfig) {
+        this.workloadIdentityConfig = workloadIdentityConfig;
+    }
+
+    @Override
+    public String getImpersonatedServiceAccount() {
+        return impersonatedServiceAccount;
+    }
+
+    /**
+     * The email of a service account to impersonate with the credentials of 
Workload Identity Federation, so the
+     * workload gets the permissions of that service account. Used when 
useWorkloadIdentityFederation is enabled; the
+     * federated identity needs the Service Account Token Creator role on the 
service account.
+     */
+    public void setImpersonatedServiceAccount(String 
impersonatedServiceAccount) {
+        this.impersonatedServiceAccount = impersonatedServiceAccount;
+    }
+
     public String getObjectName() {
         return objectName;
     }
diff --git 
a/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/GoogleCloudStorageWorkloadIdentityTest.java
 
b/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/GoogleCloudStorageWorkloadIdentityTest.java
new file mode 100644
index 000000000000..398de8b09456
--- /dev/null
+++ 
b/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/GoogleCloudStorageWorkloadIdentityTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.camel.component.google.storage.unit;
+
+import com.google.auth.Credentials;
+import com.google.auth.oauth2.ExternalAccountCredentials;
+import com.google.auth.oauth2.ImpersonatedCredentials;
+import org.apache.camel.component.google.common.GoogleCredentialsHelper;
+import org.apache.camel.component.google.storage.GoogleCloudStorageComponent;
+import 
org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration;
+import org.apache.camel.component.google.storage.GoogleCloudStorageEndpoint;
+import org.apache.camel.test.junit6.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * The Workload Identity Federation options of the endpoint reach the 
credentials of the Storage client.
+ */
+class GoogleCloudStorageWorkloadIdentityTest extends CamelTestSupport {
+
+    private static final String SERVICE_ACCOUNT = 
"[email protected]";
+
+    @Test
+    void endpointBindsTheWorkloadIdentityOptions() throws Exception {
+        GoogleCloudStorageConfiguration configuration = configuration(
+                
"google-storage://myCamelBucket?useWorkloadIdentityFederation=true"
+                                                                      + 
"&workloadIdentityConfig=classpath:wif-config.json"
+                                                                      + 
"&impersonatedServiceAccount=" + SERVICE_ACCOUNT);
+
+        assertThat(configuration.isUseWorkloadIdentityFederation()).isTrue();
+        
assertThat(configuration.getWorkloadIdentityConfig()).isEqualTo("classpath:wif-config.json");
+        
assertThat(configuration.getImpersonatedServiceAccount()).isEqualTo(SERVICE_ACCOUNT);
+    }
+
+    @Test
+    void credentialsComeFromTheWorkloadIdentityConfig() throws Exception {
+        Credentials credentials = 
GoogleCredentialsHelper.getCredentials(context, configuration(
+                
"google-storage://myCamelBucket?useWorkloadIdentityFederation=true"
+                                                                               
                 + "&workloadIdentityConfig=classpath:wif-config.json"));
+
+        assertThat(credentials).isInstanceOf(ExternalAccountCredentials.class);
+        assertThat(((ExternalAccountCredentials) 
credentials).getAudience()).endsWith("/providers/camel-provider");
+    }
+
+    @Test
+    void credentialsImpersonateTheServiceAccount() throws Exception {
+        Credentials credentials = 
GoogleCredentialsHelper.getCredentials(context, configuration(
+                
"google-storage://myCamelBucket?useWorkloadIdentityFederation=true"
+                                                                               
                 + "&workloadIdentityConfig=classpath:wif-config.json"
+                                                                               
                 + "&impersonatedServiceAccount="
+                                                                               
                 + SERVICE_ACCOUNT));
+
+        assertThat(credentials).isInstanceOf(ImpersonatedCredentials.class);
+        ImpersonatedCredentials impersonated = (ImpersonatedCredentials) 
credentials;
+        assertThat(impersonated.getAccount()).isEqualTo(SERVICE_ACCOUNT);
+        
assertThat(impersonated.getSourceCredentials()).isInstanceOf(ExternalAccountCredentials.class);
+    }
+
+    private GoogleCloudStorageConfiguration configuration(String uri) throws 
Exception {
+        // not started: the endpoint would create its Storage client
+        GoogleCloudStorageComponent component = 
context.getComponent("google-storage", GoogleCloudStorageComponent.class);
+        return ((GoogleCloudStorageEndpoint) 
component.createEndpoint(uri)).getConfiguration();
+    }
+}
diff --git 
a/components/camel-google/camel-google-storage/src/test/resources/wif-config.json
 
b/components/camel-google/camel-google-storage/src/test/resources/wif-config.json
new file mode 100644
index 000000000000..714e3bdeb04f
--- /dev/null
+++ 
b/components/camel-google/camel-google-storage/src/test/resources/wif-config.json
@@ -0,0 +1,9 @@
+{
+  "type": "external_account",
+  "audience": 
"//iam.googleapis.com/projects/123456/locations/global/workloadIdentityPools/camel-pool/providers/camel-provider",
+  "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
+  "token_url": "https://sts.googleapis.com/v1/token";,
+  "credential_source": {
+    "file": "/var/run/secrets/camel/token"
+  }
+}
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
index d5df840e2e76..c2a1a5224564 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
@@ -445,6 +445,66 @@ public interface GoogleStorageComponentBuilderFactory {
             doSetProperty("healthCheckProducerEnabled", 
healthCheckProducerEnabled);
             return this;
         }
+    
+        /**
+         * The email of a service account to impersonate with the credentials 
of
+         * Workload Identity Federation, so the workload gets the permissions 
of
+         * that service account. Used when useWorkloadIdentityFederation is
+         * enabled; the federated identity needs the Service Account Token
+         * Creator role on the service account.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param impersonatedServiceAccount the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder 
impersonatedServiceAccount(java.lang.String impersonatedServiceAccount) {
+            doSetProperty("impersonatedServiceAccount", 
impersonatedServiceAccount);
+            return this;
+        }
+    
+        
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder 
useWorkloadIdentityFederation(boolean useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+    
+        /**
+         * The Workload Identity Federation credential configuration file 
(JSON,
+         * of type external_account), which says how to exchange a token of an
+         * external identity provider, such as AWS, Azure or an OIDC provider,
+         * for Google credentials. Used when useWorkloadIdentityFederation is
+         * enabled. It is loaded from the classpath by default; prefix it with
+         * classpath:, file:, http: or https: to load it from another location.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param workloadIdentityConfig the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder 
workloadIdentityConfig(java.lang.String workloadIdentityConfig) {
+            doSetProperty("workloadIdentityConfig", workloadIdentityConfig);
+            return this;
+        }
     }
 
     class GoogleStorageComponentBuilderImpl
@@ -487,6 +547,9 @@ public interface GoogleStorageComponentBuilderFactory {
             case "autowiredEnabled": ((GoogleCloudStorageComponent) 
component).setAutowiredEnabled((boolean) value); return true;
             case "healthCheckConsumerEnabled": ((GoogleCloudStorageComponent) 
component).setHealthCheckConsumerEnabled((boolean) value); return true;
             case "healthCheckProducerEnabled": ((GoogleCloudStorageComponent) 
component).setHealthCheckProducerEnabled((boolean) value); return true;
+            case "impersonatedServiceAccount": 
getOrCreateConfiguration((GoogleCloudStorageComponent) 
component).setImpersonatedServiceAccount((java.lang.String) value); return true;
+            case "useWorkloadIdentityFederation": 
getOrCreateConfiguration((GoogleCloudStorageComponent) 
component).setUseWorkloadIdentityFederation((boolean) value); return true;
+            case "workloadIdentityConfig": 
getOrCreateConfiguration((GoogleCloudStorageComponent) 
component).setWorkloadIdentityConfig((java.lang.String) value); return true;
             default: return false;
             }
         }
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
index 02160fc5e8ec..f5c63e0ead8d 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
@@ -877,6 +877,81 @@ public interface GoogleCloudStorageEndpointBuilderFactory {
             doSetProperty("useFixedDelay", useFixedDelay);
             return this;
         }
+        /**
+         * The email of a service account to impersonate with the credentials 
of
+         * Workload Identity Federation, so the workload gets the permissions 
of
+         * that service account. Used when useWorkloadIdentityFederation is
+         * enabled; the federated identity needs the Service Account Token
+         * Creator role on the service account.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param impersonatedServiceAccount the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder 
impersonatedServiceAccount(String impersonatedServiceAccount) {
+            doSetProperty("impersonatedServiceAccount", 
impersonatedServiceAccount);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder 
useWorkloadIdentityFederation(boolean useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder 
useWorkloadIdentityFederation(String useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * The Workload Identity Federation credential configuration file 
(JSON,
+         * of type external_account), which says how to exchange a token of an
+         * external identity provider, such as AWS, Azure or an OIDC provider,
+         * for Google credentials. Used when useWorkloadIdentityFederation is
+         * enabled. It is loaded from the classpath by default; prefix it with
+         * classpath:, file:, http: or https: to load it from another location.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param workloadIdentityConfig the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointConsumerBuilder 
workloadIdentityConfig(String workloadIdentityConfig) {
+            doSetProperty("workloadIdentityConfig", workloadIdentityConfig);
+            return this;
+        }
     }
 
     /**
@@ -1220,6 +1295,81 @@ public interface 
GoogleCloudStorageEndpointBuilderFactory {
             doSetProperty("operation", operation);
             return this;
         }
+        /**
+         * The email of a service account to impersonate with the credentials 
of
+         * Workload Identity Federation, so the workload gets the permissions 
of
+         * that service account. Used when useWorkloadIdentityFederation is
+         * enabled; the federated identity needs the Service Account Token
+         * Creator role on the service account.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param impersonatedServiceAccount the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder 
impersonatedServiceAccount(String impersonatedServiceAccount) {
+            doSetProperty("impersonatedServiceAccount", 
impersonatedServiceAccount);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder 
useWorkloadIdentityFederation(boolean useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder 
useWorkloadIdentityFederation(String useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * The Workload Identity Federation credential configuration file 
(JSON,
+         * of type external_account), which says how to exchange a token of an
+         * external identity provider, such as AWS, Azure or an OIDC provider,
+         * for Google credentials. Used when useWorkloadIdentityFederation is
+         * enabled. It is loaded from the classpath by default; prefix it with
+         * classpath:, file:, http: or https: to load it from another location.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param workloadIdentityConfig the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointProducerBuilder 
workloadIdentityConfig(String workloadIdentityConfig) {
+            doSetProperty("workloadIdentityConfig", workloadIdentityConfig);
+            return this;
+        }
     }
 
     /**
@@ -1426,6 +1576,81 @@ public interface 
GoogleCloudStorageEndpointBuilderFactory {
             doSetProperty("storageLocation", storageLocation);
             return this;
         }
+        /**
+         * The email of a service account to impersonate with the credentials 
of
+         * Workload Identity Federation, so the workload gets the permissions 
of
+         * that service account. Used when useWorkloadIdentityFederation is
+         * enabled; the federated identity needs the Service Account Token
+         * Creator role on the service account.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param impersonatedServiceAccount the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder 
impersonatedServiceAccount(String impersonatedServiceAccount) {
+            doSetProperty("impersonatedServiceAccount", 
impersonatedServiceAccount);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder 
useWorkloadIdentityFederation(boolean useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * Whether to authenticate with Workload Identity Federation instead of
+         * a service account key: with the credential configuration file given
+         * in workloadIdentityConfig or, when it is not set, with the
+         * Application Default Credentials, which detect Workload Identity on
+         * GKE.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: security
+         * 
+         * @param useWorkloadIdentityFederation the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder 
useWorkloadIdentityFederation(String useWorkloadIdentityFederation) {
+            doSetProperty("useWorkloadIdentityFederation", 
useWorkloadIdentityFederation);
+            return this;
+        }
+        /**
+         * The Workload Identity Federation credential configuration file 
(JSON,
+         * of type external_account), which says how to exchange a token of an
+         * external identity provider, such as AWS, Azure or an OIDC provider,
+         * for Google credentials. Used when useWorkloadIdentityFederation is
+         * enabled. It is loaded from the classpath by default; prefix it with
+         * classpath:, file:, http: or https: to load it from another location.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: security
+         * 
+         * @param workloadIdentityConfig the value to set
+         * @return the dsl builder
+         */
+        default GoogleCloudStorageEndpointBuilder 
workloadIdentityConfig(String workloadIdentityConfig) {
+            doSetProperty("workloadIdentityConfig", workloadIdentityConfig);
+            return this;
+        }
     }
 
     /**

Reply via email to