gpt4 book ai didi

java - 如何使用服务主体和 Java/Spring-Boot 连接到 Azure Blob 存储

转载 作者:行者123 更新时间:2023-12-02 23:05:01 25 4
gpt4 key购买 nike

我正在使用 Spring Boot 和 Java 编写一个应用程序,该应用程序将文件写入 Azure Blob 存储。如何使用服务主体进行身份验证?理想情况下,SP 的详细信息应通过某些属性或外部文件读取。

我一直在翻阅大量的文档和示例,所有这些似乎都不是我想要的。我见过的大多数示例都使用存储帐户 key ,但我不想这样做。

一些示例代码将非常感激。正如我所说,我正在努力寻找一个像样的示例(既包括如何使用 SP,也包括如何用 Java 写入 Azure BLOB 存储),因为似乎有很多不同的方式来访问分散在各处的存储。微软文档。

最佳答案

您可以使用ADAL4J获取 token ,然后使用该 token 写入 blob。

  1. 为您的委托(delegate)人添加角色分配。

enter image description here

  • 获取 token 。

    public static String getToken() throws Exception {
    String TENANT_ID = "your tenant id or name, e4c9*-*-*-*-*57fb";
    String AUTHORITY = "https://login.microsoftonline.com/" + TENANT_ID;
    String CLIENT_ID = "your application id, dc17*-*-*-*a5e7";
    String CLIENT_SECRET = "the secret, /pG*32";
    String RESOURCE = "https://storage.azure.com/";
    String ACCESS_TOKEN = null;
    ExecutorService service = Executors.newFixedThreadPool(1);
    AuthenticationContext context = null;
    try {
    context = new AuthenticationContext(AUTHORITY, false, service);
    ClientCredential credential = new ClientCredential(CLIENT_ID, CLIENT_SECRET);
    Future<AuthenticationResult> future = context.acquireToken(RESOURCE, credential, null);
    ACCESS_TOKEN = future.get().getAccessToken();
    } catch (InterruptedException e) {
    e.printStackTrace();
    } catch (ExecutionException e) {
    e.printStackTrace();
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } finally {
    service.shutdown();
    }
    return ACCESS_TOKEN;
    }
  • 访问 blob。

    public static void main(String[] args) throws Exception {
    String token = getToken();
    StorageCredentialsToken credentialsToken = new StorageCredentialsToken("storagetest789", token);
    CloudBlobClient blobClient = new CloudBlobClient(new URI("https://storagetest789.blob.core.windows.net/"), credentialsToken);
    CloudBlobContainer blobContainer = blobClient.getContainerReference("pub");
    CloudBlockBlob blockBlob = blobContainer.getBlockBlobReference("test.txt");
    blockBlob.uploadText("Test!");
    }
  • 希望有帮助。

    关于java - 如何使用服务主体和 Java/Spring-Boot 连接到 Azure Blob 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380701/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com