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 daab82ac0b1 CAMEL-19325: Add default identity support (#10003) daab82ac0b1 is described below commit daab82ac0b1da97f4cdee5801a606776ad5f8a97 Author: Andreas Klug <andreas.kl...@de.bosch.com> AuthorDate: Sat May 6 09:08:38 2023 +0200 CAMEL-19325: Add default identity support (#10003) Co-authored-by: Andreas Klug (BD/XDE1) <kga...@fe-c-014an.fritz.box> --- components/camel-azure/camel-azure-cosmosdb/pom.xml | 4 ++++ .../component/azure/cosmosdb/CosmosDbComponent.java | 3 --- .../component/azure/cosmosdb/CosmosDbConfiguration.java | 16 +++++++++++++++- .../azure/cosmosdb/client/CosmosDbClientFactory.java | 10 ++++++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/components/camel-azure/camel-azure-cosmosdb/pom.xml b/components/camel-azure/camel-azure-cosmosdb/pom.xml index 41e2725a717..52b95d63714 100644 --- a/components/camel-azure/camel-azure-cosmosdb/pom.xml +++ b/components/camel-azure/camel-azure-cosmosdb/pom.xml @@ -46,6 +46,10 @@ <groupId>com.azure</groupId> <artifactId>azure-cosmos</artifactId> </dependency> + <dependency> + <groupId>com.azure</groupId> + <artifactId>azure-identity</artifactId> + </dependency> <!-- extras --> <dependency> diff --git a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbComponent.java b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbComponent.java index 7ff3f0273d1..21486ea59d6 100644 --- a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbComponent.java +++ b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbComponent.java @@ -82,9 +82,6 @@ public class CosmosDbComponent extends DefaultComponent { if (ObjectHelper.isEmpty(configuration.getDatabaseEndpoint())) { throw new IllegalArgumentException("Azure CosmosDB database endpoint must be specified."); } - if (ObjectHelper.isEmpty(configuration.getAccountKey())) { - throw new IllegalArgumentException("Azure CosmosDB account key must be specified."); - } } } } diff --git a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbConfiguration.java b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbConfiguration.java index bb17deaf247..a504dae6976 100644 --- a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbConfiguration.java +++ b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CosmosDbConfiguration.java @@ -35,8 +35,11 @@ public class CosmosDbConfiguration implements Cloneable { @UriPath private String containerName; @UriParam(label = "security", secret = true) - @Metadata(required = true) + @Metadata(required = false) private String accountKey; + @UriParam(label = "security", secret = false) + @Metadata(required = false) + private boolean useDefaultIdentity; @UriParam(label = "common") @Metadata(required = true) private String databaseEndpoint; @@ -126,6 +129,17 @@ public class CosmosDbConfiguration implements Cloneable { this.accountKey = accountKey; } + /** + * Indicates whether to use the default identity mechanism instead of the access key. + */ + public boolean isUseDefaultIdentity() { + return useDefaultIdentity; + } + + public void setUseDefaultIdentity(boolean useDefaultIdentity) { + this.useDefaultIdentity = useDefaultIdentity; + } + /** * Sets the Azure Cosmos database endpoint the component will connect to. */ diff --git a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/client/CosmosDbClientFactory.java b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/client/CosmosDbClientFactory.java index 7a1b116eb5f..eba3a1f7b2a 100644 --- a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/client/CosmosDbClientFactory.java +++ b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/client/CosmosDbClientFactory.java @@ -21,6 +21,7 @@ import java.util.stream.Stream; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.CosmosClient; import com.azure.cosmos.CosmosClientBuilder; +import com.azure.identity.DefaultAzureCredentialBuilder; import org.apache.camel.component.azure.cosmosdb.CosmosDbConfiguration; import org.apache.camel.util.ObjectHelper; @@ -40,8 +41,8 @@ public final class CosmosDbClientFactory { } private static CosmosClientBuilder createBasicClient(final CosmosDbConfiguration configuration) { + CosmosClientBuilder builder = new CosmosClientBuilder() - .key(configuration.getAccountKey()) .endpoint(configuration.getDatabaseEndpoint()) .contentResponseOnWriteEnabled(configuration.isContentResponseOnWriteEnabled()) .consistencyLevel(configuration.getConsistencyLevel()) @@ -54,7 +55,12 @@ public final class CosmosDbClientFactory { .map(String::trim) .toList()); } - + if (configuration.isUseDefaultIdentity()) { + final DefaultAzureCredentialBuilder defaultAzureCredentialBuilder = new DefaultAzureCredentialBuilder(); + builder.credential(defaultAzureCredentialBuilder.build()); + } else { + builder.key(configuration.getAccountKey()); + } return builder; } }