gpt4 book ai didi

azure - 如何创建字符串来签署 blob 以在 Azure 中生成SharedAccessSignature

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

我正在尝试从 Azure bloc 的 string_to_sign 创建 hmac 到 generateSharedAccessSignature,但它给我一个错误“签名字段格式不正确。”

下面是我的示例字符串

String data = sprintf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",
["r",
"2020-11-17",
"2020-11-19",
"/blob/myAccount/test/member-pic/member-993.png",
"",
"",
"",
"2017-04-17"]);

//get hmac string
String data = base64Encode(mac.convert(utf8.encode(data)).bytes);

最佳答案

我假设您使用 JAVA 作为编程语言,并且您希望生成具有读取权限和 2 天有效时间的 SAS token 。如果是这样,您可以使用 Azure Storage SDK 生成它并直接获取 SAS token ,请尝试以下代码:

            String connString = "<storage account connection string >";
String containerName = "<container name>";
String blobName = "<file name>";

BlobServiceClient client = new BlobServiceClientBuilder().connectionString(connString).buildClient();
BlobClient blobClient = client.getBlobContainerClient(containerName).getBlobClient(blobName);

BlobSasPermission blobSasPermission = new BlobSasPermission().setReadPermission(true); // grant read
// permission
// onmy
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(2); // 2 days to expire
BlobServiceSasSignatureValues values = new BlobServiceSasSignatureValues(expiryTime, blobSasPermission)
.setStartTime(OffsetDateTime.now());

System.out.println(blobClient.generateSas(values));

Maven 依赖:

    <dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.9.0</version>
</dependency>

关于azure - 如何创建字符串来签署 blob 以在 Azure 中生成SharedAccessSignature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884275/

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