我正在尝试从string_to_sign为Azure集团创建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);发布于 2020-11-24 05:17:27
我假设您正在使用JAVA作为编程语言,并且希望生成一个具有Read置换和2天有效时间的SAS令牌。如果是这样的话,您只需使用来生成它并直接获得一个SAS令牌,请尝试下面的代码:
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>https://stackoverflow.com/questions/64884275
复制相似问题