This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch 2642 in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
commit d0575a5e8a2bfe49aaaa3de6d3b1e1602f7393de Author: Andrea Cosentino <[email protected]> AuthorDate: Wed Feb 18 13:45:45 2026 +0100 CAMEL-22688 - Add support for Client Secret Credentials in Azure Identity authentication for camel-azure-storage-blob component - Reflect in the Kamelet Signed-off-by: Andrea Cosentino <[email protected]> --- ...azure-storage-blob-append-sink-description.adoc | 9 ++++-- ...storage-blob-changefeed-source-description.adoc | 20 ++++++++++++- ...torage-blob-event-based-source-description.adoc | 11 +++++++ .../azure-storage-blob-sink-description.adoc | 9 ++++-- .../azure-storage-blob-source-description.adoc | 9 ++++-- .../azure-storage-blob-append-sink.kamelet.yaml | 26 +++++++++++++++- ...ure-storage-blob-changefeed-source.kamelet.yaml | 35 ++++++++++++++++++++-- ...re-storage-blob-event-based-source.kamelet.yaml | 26 ++++++++++++++-- kamelets/azure-storage-blob-sink.kamelet.yaml | 26 +++++++++++++++- kamelets/azure-storage-blob-source.kamelet.yaml | 31 +++++++++++++++++-- .../azure-storage-blob-append-sink.kamelet.yaml | 26 +++++++++++++++- ...ure-storage-blob-changefeed-source.kamelet.yaml | 35 ++++++++++++++++++++-- ...re-storage-blob-event-based-source.kamelet.yaml | 26 ++++++++++++++-- .../kamelets/azure-storage-blob-sink.kamelet.yaml | 26 +++++++++++++++- .../azure-storage-blob-source.kamelet.yaml | 31 +++++++++++++++++-- 15 files changed, 316 insertions(+), 30 deletions(-) diff --git a/docs/modules/ROOT/partials/azure-storage-blob-append-sink-description.adoc b/docs/modules/ROOT/partials/azure-storage-blob-append-sink-description.adoc index 7bf765835..6bb8d1da0 100644 --- a/docs/modules/ROOT/partials/azure-storage-blob-append-sink-description.adoc +++ b/docs/modules/ROOT/partials/azure-storage-blob-append-sink-description.adoc @@ -6,17 +6,20 @@ In this Kamelet, you can use these Azure authentication methods: - Azure Identity mechanism: `AZURE_IDENTITY` - Plain Shared Account Key: `SHARED_ACCOUNT_KEY` +- Client Secret Credentials: `CLIENT_SECRET` The order of evaluation for `AZURE_IDENTITY` is the following: - Enviroment - - Workload Identity - - Managed Identity - - Azure Developer CLI + - Workload Identity + - Managed Identity + - Azure Developer CLI - IntelliJ - Azure CLI - Azure Powershell +For `CLIENT_SECRET` you'll need to provide `clientId`, `clientSecret`, and `tenantId` properties. + For more information, see the https://learn.microsoft.com/en-us/java/api/overview/azure/identity-readme[Azure Identity documentation] === Optional Headers diff --git a/docs/modules/ROOT/partials/azure-storage-blob-changefeed-source-description.adoc b/docs/modules/ROOT/partials/azure-storage-blob-changefeed-source-description.adoc index f64593805..26d009523 100644 --- a/docs/modules/ROOT/partials/azure-storage-blob-changefeed-source-description.adoc +++ b/docs/modules/ROOT/partials/azure-storage-blob-changefeed-source-description.adoc @@ -2,4 +2,22 @@ === Authentication methods -In this Kamelet you have to use the shared account key of your Azure Storage Blob Container. +In this Kamelet, you can use these Azure authentication methods: + +- Azure Identity mechanism: `AZURE_IDENTITY` +- Plain Shared Account Key: `SHARED_ACCOUNT_KEY` +- Client Secret Credentials: `CLIENT_SECRET` + +The order of evaluation for `AZURE_IDENTITY` is the following: + + - Enviroment + - Workload Identity + - Managed Identity + - Azure Developer CLI + - IntelliJ + - Azure CLI + - Azure Powershell + +For `CLIENT_SECRET` you'll need to provide `clientId`, `clientSecret`, and `tenantId` properties. + +For more information, see the https://learn.microsoft.com/en-us/java/api/overview/azure/identity-readme[Azure Identity documentation] diff --git a/docs/modules/ROOT/partials/azure-storage-blob-event-based-source-description.adoc b/docs/modules/ROOT/partials/azure-storage-blob-event-based-source-description.adoc index 119e881d2..9f67083fa 100644 --- a/docs/modules/ROOT/partials/azure-storage-blob-event-based-source-description.adoc +++ b/docs/modules/ROOT/partials/azure-storage-blob-event-based-source-description.adoc @@ -5,3 +5,14 @@ For this Kamelet the Connection string is the basic method for authenticating to the Azure Servicebus Queue. To use this Kamelet you'll need to set up Events on your Azure Storage Blob account and select as an endpoint an Azure Servicebus Queue. + +For the Azure Storage Blob access, you can use these Azure authentication methods: + +- Azure Identity mechanism: `AZURE_IDENTITY` +- Plain Shared Account Key: `SHARED_ACCOUNT_KEY` +- Shared Key Credential: `SHARED_KEY_CREDENTIAL` +- Client Secret Credentials: `CLIENT_SECRET` + +For `CLIENT_SECRET` you'll need to provide `clientId`, `clientSecret`, and `tenantId` properties. + +For more information, see the https://learn.microsoft.com/en-us/java/api/overview/azure/identity-readme[Azure Identity documentation] diff --git a/docs/modules/ROOT/partials/azure-storage-blob-sink-description.adoc b/docs/modules/ROOT/partials/azure-storage-blob-sink-description.adoc index 49b358386..4b563d5a8 100644 --- a/docs/modules/ROOT/partials/azure-storage-blob-sink-description.adoc +++ b/docs/modules/ROOT/partials/azure-storage-blob-sink-description.adoc @@ -6,17 +6,20 @@ In this Kamelet, you can use these Azure authentication methods: - Azure Identity mechanism: `AZURE_IDENTITY` - Plain Shared Account Key: `SHARED_ACCOUNT_KEY` +- Client Secret Credentials: `CLIENT_SECRET` The order of evaluation for `AZURE_IDENTITY` is the following: - Enviroment - - Workload Identity - - Managed Identity - - Azure Developer CLI + - Workload Identity + - Managed Identity + - Azure Developer CLI - IntelliJ - Azure CLI - Azure Powershell +For `CLIENT_SECRET` you'll need to provide `clientId`, `clientSecret`, and `tenantId` properties. + For more information, see the https://learn.microsoft.com/en-us/java/api/overview/azure/identity-readme[Azure Identity documentation] === Optional Headers diff --git a/docs/modules/ROOT/partials/azure-storage-blob-source-description.adoc b/docs/modules/ROOT/partials/azure-storage-blob-source-description.adoc index 4f8ab514f..8f1567dd4 100644 --- a/docs/modules/ROOT/partials/azure-storage-blob-source-description.adoc +++ b/docs/modules/ROOT/partials/azure-storage-blob-source-description.adoc @@ -6,15 +6,18 @@ In this Kamelet, you can use these Azure authentication methods: - Azure Identity mechanism: `AZURE_IDENTITY` - Plain Shared Account Key: `SHARED_ACCOUNT_KEY` +- Client Secret Credentials: `CLIENT_SECRET` The order of evaluation for `AZURE_IDENTITY` is the following: - Enviroment - - Workload Identity - - Managed Identity - - Azure Developer CLI + - Workload Identity + - Managed Identity + - Azure Developer CLI - IntelliJ - Azure CLI - Azure Powershell +For `CLIENT_SECRET` you'll need to provide `clientId`, `clientSecret`, and `tenantId` properties. + For more information, see the https://learn.microsoft.com/en-us/java/api/overview/azure/identity-readme[Azure Identity documentation] diff --git a/kamelets/azure-storage-blob-append-sink.kamelet.yaml b/kamelets/azure-storage-blob-append-sink.kamelet.yaml index 4f7f3cb78..3dbf5a8cb 100644 --- a/kamelets/azure-storage-blob-append-sink.kamelet.yaml +++ b/kamelets/azure-storage-blob-append-sink.kamelet.yaml @@ -54,11 +54,32 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:core" @@ -89,6 +110,9 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" operation: "commitAppendBlob" blobType: "appendBlob" credentialType: "{{credentialType}}" diff --git a/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml b/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml index 6b66edb34..2e76d5460 100644 --- a/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml +++ b/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml @@ -35,7 +35,6 @@ spec: required: - period - accountName - - accessKey type: object properties: period: @@ -56,6 +55,33 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + credentialType: + title: Credential Type + description: Determines the credential strategy to adopt. + type: string + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] + default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:azure-storage-blob" - "camel:kamelet" @@ -73,8 +99,11 @@ spec: uri: "azure-storage-blob:{{accountName}}" parameters: operation: "getChangeFeed" - accessKey: "{{accessKey}}" - credentialType: "SHARED_ACCOUNT_KEY" + accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" + credentialType: "{{credentialType}}" - split: expression: simple: "${body}" diff --git a/kamelets/azure-storage-blob-event-based-source.kamelet.yaml b/kamelets/azure-storage-blob-event-based-source.kamelet.yaml index 210e531f8..6bacd0b05 100644 --- a/kamelets/azure-storage-blob-event-based-source.kamelet.yaml +++ b/kamelets/azure-storage-blob-event-based-source.kamelet.yaml @@ -37,7 +37,6 @@ spec: - connectionString - accountName - containerName - - accessKey type: object properties: topicOrQueueName: @@ -78,12 +77,33 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string default: SHARED_ACCOUNT_KEY - enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "CLIENT_SECRET"] getBlob: title: Get Object in Container description: >- @@ -135,6 +155,6 @@ spec: - simple: '${exchangeProperty.azure-storage-blob-event-type} == "Microsoft.Storage.BlobCreated" && ${exchangeProperty.azure-storage-blob-subject} contains "{{containerName}}"' steps: - toD: >- - azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}} + azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{?accessKey}})&azureClientId=RAW({{?clientId}})&azureClientSecret=RAW({{?clientSecret}})&azureTenantId=RAW({{?tenantId}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}} - to: 'kamelet:sink' diff --git a/kamelets/azure-storage-blob-sink.kamelet.yaml b/kamelets/azure-storage-blob-sink.kamelet.yaml index e6fe7a5c7..b2e186270 100644 --- a/kamelets/azure-storage-blob-sink.kamelet.yaml +++ b/kamelets/azure-storage-blob-sink.kamelet.yaml @@ -54,11 +54,32 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:core" @@ -89,5 +110,8 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" operation: "uploadBlockBlob" credentialType: "{{credentialType}}" diff --git a/kamelets/azure-storage-blob-source.kamelet.yaml b/kamelets/azure-storage-blob-source.kamelet.yaml index b90546a7a..296e6289c 100644 --- a/kamelets/azure-storage-blob-source.kamelet.yaml +++ b/kamelets/azure-storage-blob-source.kamelet.yaml @@ -54,13 +54,34 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials delay: title: Delay description: The number of milliseconds before the next poll of the selected blob. type: integer default: 500 deleteAfterRead: - title: Auto-delete Blob + title: Auto-delete Blob description: Specifies to delete blobs after consuming them type: boolean default: false @@ -68,7 +89,7 @@ spec: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dataTypes: out: @@ -148,6 +169,9 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" credentialType: "{{credentialType}}" delay: "{{delay}}" steps: @@ -162,5 +186,8 @@ spec: parameters: operation: "deleteBlob" accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml index 4f7f3cb78..3dbf5a8cb 100644 --- a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml @@ -54,11 +54,32 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:core" @@ -89,6 +110,9 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" operation: "commitAppendBlob" blobType: "appendBlob" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml index 6b66edb34..2e76d5460 100644 --- a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-changefeed-source.kamelet.yaml @@ -35,7 +35,6 @@ spec: required: - period - accountName - - accessKey type: object properties: period: @@ -56,6 +55,33 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + credentialType: + title: Credential Type + description: Determines the credential strategy to adopt. + type: string + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] + default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:azure-storage-blob" - "camel:kamelet" @@ -73,8 +99,11 @@ spec: uri: "azure-storage-blob:{{accountName}}" parameters: operation: "getChangeFeed" - accessKey: "{{accessKey}}" - credentialType: "SHARED_ACCOUNT_KEY" + accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" + credentialType: "{{credentialType}}" - split: expression: simple: "${body}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-event-based-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-event-based-source.kamelet.yaml index 210e531f8..6bacd0b05 100644 --- a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-event-based-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-event-based-source.kamelet.yaml @@ -37,7 +37,6 @@ spec: - connectionString - accountName - containerName - - accessKey type: object properties: topicOrQueueName: @@ -78,12 +77,33 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string default: SHARED_ACCOUNT_KEY - enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "CLIENT_SECRET"] getBlob: title: Get Object in Container description: >- @@ -135,6 +155,6 @@ spec: - simple: '${exchangeProperty.azure-storage-blob-event-type} == "Microsoft.Storage.BlobCreated" && ${exchangeProperty.azure-storage-blob-subject} contains "{{containerName}}"' steps: - toD: >- - azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}} + azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{?accessKey}})&azureClientId=RAW({{?clientId}})&azureClientSecret=RAW({{?clientSecret}})&azureTenantId=RAW({{?tenantId}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}} - to: 'kamelet:sink' diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml index e6fe7a5c7..b2e186270 100644 --- a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml @@ -54,11 +54,32 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials credentialType: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dependencies: - "camel:core" @@ -89,5 +110,8 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" operation: "uploadBlockBlob" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml index b90546a7a..296e6289c 100644 --- a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml @@ -54,13 +54,34 @@ spec: format: password x-descriptors: - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob client Id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob client secret. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob tenant id. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials delay: title: Delay description: The number of milliseconds before the next poll of the selected blob. type: integer default: 500 deleteAfterRead: - title: Auto-delete Blob + title: Auto-delete Blob description: Specifies to delete blobs after consuming them type: boolean default: false @@ -68,7 +89,7 @@ spec: title: Credential Type description: Determines the credential strategy to adopt. type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"] default: "SHARED_ACCOUNT_KEY" dataTypes: out: @@ -148,6 +169,9 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" credentialType: "{{credentialType}}" delay: "{{delay}}" steps: @@ -162,5 +186,8 @@ spec: parameters: operation: "deleteBlob" accessKey: "{{?accessKey}}" + azureClientId: "{{?clientId}}" + azureClientSecret: "{{?clientSecret}}" + azureTenantId: "{{?tenantId}}" credentialType: "{{credentialType}}"
