Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建用于签名的字符串,以便在Azure中为blob生成SharedAccessSignature_Azure_Azure Storage Blobs - Fatal编程技术网

如何创建用于签名的字符串,以便在Azure中为blob生成SharedAccessSignature

如何创建用于签名的字符串,以便在Azure中为blob生成SharedAccessSignature,azure,azure-storage-blobs,Azure,Azure Storage Blobs,我正在尝试为Azure bloc从字符串到签名创建hmac,以生成SharedAccessSignature,但它给了我一个错误“签名字段格式不正确” 下面是我的示例字符串 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"

我正在尝试为Azure bloc从字符串到签名创建hmac,以生成SharedAccessSignature,但它给了我一个错误“签名字段格式不正确”

下面是我的示例字符串

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作为编程语言,并且希望生成一个具有
Read
permission和2天有效时间的SAS令牌。如果是这样,您只需使用Azure Storage SDK生成它并直接获取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));
String-connString=”“;
字符串containerName=“”;
字符串blobName=“”;
BlobServiceClient=new BlobServiceClientBuilder().connectionString(connString.buildClient();
BlobClient BlobClient=client.getBlobContainerClient(containerName).getBlobClient(blobName);
BlobSasPermission BlobSasPermission=新建BlobSasPermission().setReadPermission(true);//格兰特·里德
//许可
//昂米
OffsetDateTime expiryTime=OffsetDateTime.now().plusDays(2);//2天到期
BlobServiceSasSignatureValues=新的BlobServiceSasSignatureValues(过期时间,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>

com.azure
azure存储blob
12.9.0

您是否参考了blob访问所需的上述字符串“是”,请提供完整的代码和完整的错误消息?