【发布时间】:2021-08-06 12:40:39
【问题描述】:
我可以通过这些代码得到一个链接,它可以成功下载一个文件。
BlobContainerSasPermission blobContainerSasPermission = new BlobContainerSasPermission()
.setReadPermission(true)
.setWritePermission(true)
.setListPermission(true);
BlobServiceSasSignatureValues builder = new BlobServiceSasSignatureValues(OffsetDateTime.now().plusDays(1), blobContainerSasPermission)
.setProtocol(SasProtocol.HTTPS_ONLY);
BlobClient client = new BlobClientBuilder()
.connectionString("connection string")
.blobName("")
.buildClient();
String blobContainerName = "test";
return String.format("https://%s.blob.core.windows.net/%s?%s",client.getAccountName(), blobContainerName, client.generateSas(builder));
但是每个人都可以通过这个链接下载文件,我希望文件可以由授权的人下载。是否有任何代码或天蓝色的设置(例如 AD?)可以实现这一点?谢谢
--------------更新---------- ---
我找到了doc,并给出了原因。 注意:此方法调用仅在该对象的 HttpPipeline 中使用 TokenCredential 时有效。 但是在我导入的包中只有 BasicAuthenticationCredential 实现了 TokenCredential 。这是我的 mvn。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.11.0-beta.2</version>
</dependency>
我试过了
String userName = "userName";
String password = "password";
BasicAuthenticationCredential basicAuthenticationCredential = new BasicAuthenticationCredential(userName,password);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().endpoint(endpoint).credential(basicAuthenticationCredential).buildClient();
然后我得到了这个状态码 401,(InvalidAuthenticationInfo)
各位大神,救救我吧!
【问题讨论】:
-
在这里查看用户委托 SAS:docs.microsoft.com/en-us/rest/api/storageservices/…。
标签: java azure download blob azure-blob-storage