You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过SAS令牌与端点连接Azure存储账户?求Java示例

仅用SAS令牌和存储端点连接Azure存储的方案(Java实现)

当然可以!你完全不需要完整的连接字符串,只依靠SAS令牌和存储账户/容器的端点URL就能成功连接并操作Azure存储服务(比如Blob存储)。SAS令牌本身已经包含了访问权限、有效期等关键信息,配合端点就能完成身份验证。

核心原理

SAS(共享访问签名)是一种安全的授权机制,它通过在URL中附加包含权限、有效期、资源范围等参数的令牌,让持有该URL的用户可以在指定范围内访问Azure存储资源,无需暴露存储账户的密钥。

Java实现示例(以Blob存储为例)

下面是使用Azure Storage Blob Java SDK(最新稳定版本)的示例代码,演示如何通过SAS令牌和容器端点来操作Blob:

首先确保你的项目中引入了依赖(Maven为例):

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.25.0</version> <!-- 建议使用最新稳定版本 -->
</dependency>

1. 通过容器SAS令牌连接并列出Blob

import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobContainerClientBuilder;
import com.azure.storage.blob.models.BlobItem;

public class SasTokenConnectionExample {
    public static void main(String[] args) {
        // 替换为你的容器端点URL(格式:https://{存储账户名}.blob.core.windows.net/{容器名})
        String containerEndpoint = "https://<your-storage-account-name>.blob.core.windows.net/<your-container-name>";
        // 替换为你的容器级SAS令牌(注意:如果令牌带前缀?,直接传入即可,SDK会自动处理)
        String sasToken = "<your-sas-token>";

        // 构建Blob容器客户端
        BlobContainerClient containerClient = new BlobContainerClientBuilder()
                .endpoint(containerEndpoint)
                .sasToken(sasToken)
                .buildClient();

        // 列出容器中的所有Blob
        System.out.println("容器内的Blob列表:");
        for (BlobItem blobItem : containerClient.listBlobs()) {
            System.out.println("- " + blobItem.getName());
        }
    }
}

2. 通过账户级SAS令牌连接存储账户

如果使用的是账户级SAS令牌,只需要把端点换成存储账户的根端点,同样传入SAS令牌即可:

import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

public class AccountSasConnectionExample {
    public static void main(String[] args) {
        // 存储账户根端点URL(格式:https://{存储账户名}.blob.core.windows.net)
        String accountEndpoint = "https://<your-storage-account-name>.blob.core.windows.net";
        // 替换为你的账户级SAS令牌
        String accountSasToken = "<your-account-sas-token>";

        // 构建Blob服务客户端
        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
                .endpoint(accountEndpoint)
                .sasToken(accountSasToken)
                .buildClient();

        // 列出存储账户下的所有容器
        System.out.println("存储账户内的容器列表:");
        blobServiceClient.listBlobContainers().forEach(container -> {
            System.out.println("- " + container.getName());
        });
    }
}

注意事项

  • 确保SAS令牌的权限与你要执行的操作匹配(比如要上传Blob需要write权限,列出资源需要list权限等)。
  • SAS令牌有有效期,过期后需要重新生成。
  • 如果你的SAS令牌是通过Azure门户或Azure CLI生成的,注意不要遗漏任何必要参数(比如资源类型、权限范围)。

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:03:10