From 402113665da8fbc90a479d7af0bce0f23b33b1b8 Mon Sep 17 00:00:00 2001 From: ruben-janssens <72014318+ruben-janssens@users.noreply.github.com> Date: Fri, 27 Jun 2025 10:49:04 +0200 Subject: [PATCH 1/3] Add azure-identity package --- structurizr-onpremises/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/structurizr-onpremises/build.gradle b/structurizr-onpremises/build.gradle index 9fec5bc..a9b3cc2 100644 --- a/structurizr-onpremises/build.gradle +++ b/structurizr-onpremises/build.gradle @@ -87,6 +87,7 @@ dependencies { implementation 'com.amazonaws:aws-java-sdk-sts:1.12.783' implementation 'com.azure:azure-storage-blob:12.30.0' + implementation 'com.azure:azure-identity:1.16.2' implementation 'javax.cache:cache-api:1.1.1' implementation 'org.ehcache:ehcache:3.10.8' @@ -150,4 +151,4 @@ configurations.implementation { configurations.all { exclude group: "commons-logging", module: "commons-logging" -} \ No newline at end of file +} From a79adabc248e9f532916870a34d6d9c4406ff384 Mon Sep 17 00:00:00 2001 From: ruben-janssens <72014318+ruben-janssens@users.noreply.github.com> Date: Fri, 27 Jun 2025 11:04:05 +0200 Subject: [PATCH 2/3] Add DefaultAzureCredential as default credential --- .../workspace/AzureBlobStorageWorkspaceDao.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java b/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java index bf2dcb5..4389f9a 100644 --- a/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java +++ b/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java @@ -11,6 +11,7 @@ import com.azure.storage.blob.models.ListBlobsOptions; import com.azure.storage.blob.specialized.BlockBlobClient; import com.azure.storage.common.StorageSharedKeyCredential; +import com.azure.identity.DefaultAzureCredentialBuilder; import com.structurizr.onpremises.configuration.Configuration; import com.structurizr.onpremises.domain.Image; import com.structurizr.onpremises.domain.InputStreamAndContentLength; @@ -50,12 +51,16 @@ public class AzureBlobStorageWorkspaceDao extends AbstractWorkspaceDao { } private BlobContainerClient createBlobContainerClient() { - StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accessKey); - - BlobServiceClient blobServiceClient = new BlobServiceClientBuilder() - .endpoint(String.format("https://%s.blob.core.windows.net/", accountName)) - .credential(credential) - .buildClient(); + BlobServiceClientBuilder builder = new BlobServiceClientBuilder() + .endpoint(String.format("https://%s.blob.core.windows.net/", accountName); + + if (accessKey != null && !accessKey.isEmpty()) { + builder.credential(new StorageSharedKeyCredential(accountName, accessKey)); + } else { + builder.credential(new DefaultAzureCredentialBuilder().build()); + } + + BlobServiceClient blobServiceClient = builder.buildClient(); return blobServiceClient.getBlobContainerClient(containerName); } From 03954d30386365ab477224702158db72cb9a3e1f Mon Sep 17 00:00:00 2001 From: ruben-janssens <72014318+ruben-janssens@users.noreply.github.com> Date: Fri, 27 Jun 2025 13:09:13 +0200 Subject: [PATCH 3/3] Add missing closing ) --- .../component/workspace/AzureBlobStorageWorkspaceDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java b/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java index 4389f9a..9bd0276 100644 --- a/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java +++ b/structurizr-onpremises/src/main/java/com/structurizr/onpremises/component/workspace/AzureBlobStorageWorkspaceDao.java @@ -52,7 +52,7 @@ public class AzureBlobStorageWorkspaceDao extends AbstractWorkspaceDao { private BlobContainerClient createBlobContainerClient() { BlobServiceClientBuilder builder = new BlobServiceClientBuilder() - .endpoint(String.format("https://%s.blob.core.windows.net/", accountName); + .endpoint(String.format("https://%s.blob.core.windows.net/", accountName)); if (accessKey != null && !accessKey.isEmpty()) { builder.credential(new StorageSharedKeyCredential(accountName, accessKey));