添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如何用基于证书的认证创建Azure blob,并使用java从中下载文件?

2 人关注

我写了一个java程序,连接到我创建的Azure blob存储,并使用下面的程序下载文件内容,但我真正的prod场景是不同的,客户端共享ThumbPrint、ClientId、AzureKeyVaultUrl、SecretId和containerName以及certficate。我的程序在我创建的有试用期的账户上运行良好。但我不明白如何用基于证书的认证来创建账户,并在使用java程序连接时使用它。 包 com.com.cn

import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.OperationContext;
import com.microsoft.azure.storage.StorageException;
import com.microsoft.azure.storage.blob.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.Scanner;
public class ConnectToAzureToExistingContainer {
    public static final String storageConnectionString =
            "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy;EndpointSuffix=zzzz";
    public static void main( String[] args )
        CloudStorageAccount storageAccount;
        CloudBlobClient blobClient = null;
        CloudBlobContainer container=null;
        try {
            storageAccount = CloudStorageAccount.parse(storageConnectionString);
            blobClient = storageAccount.createCloudBlobClient();
            container = blobClient.getContainerReference("revenuestream");
            CloudBlockBlob blob = container.getBlockBlobReference("revenuestreams.csv");
            System.out.println(blob.downloadText());
            System.out.println("Done...");
        catch (StorageException ex){
            System.out.println(String.format("Error returned from the service. Http code: %d and error code: %s", ex.getHttpStatusCode(), ex.getErrorCode()));
        catch (Exception ex) {
            System.out.println(ex.getMessage());
    
2 个评论
存储账户支持Azure AD Auth(OAuth2)。然后你连接到存储账户,你会从Azure AD获得一个访问令牌。你可以通过aclient_id+证书来获得一个令牌。这就是你所说的吗?
我有客户的azure证书和ThumbPrint、ClientId、AzureKeyVaultUrl、SecretId和containerName。我是否必须将证书转换为其他格式,如pem,因为从一个例子中我认为我必须将其转换为PEM。使用该证书还需要哪些步骤?比如安装证书?我还得到了导入向导,它要求提供私钥......我在哪里可以得到私钥?
java
azure
certificate
azure-blob-storage
Archana Mundaye
Archana Mundaye
发布于 2019-07-08
1 个回答
Md Farid Uddin Kiron
Md Farid Uddin Kiron
发布于 2021-08-31
0 人赞同

正如@Thomas所说,你可以使用Azure AD获取访问令牌来访问你的存储文件。 主要的机制你可以参考 这个文档 。 你需要获得一个访问令牌来调用 存储API 来访问你的存储服务。 而你想使用证书来获得这个访问令牌来访问存储服务。你可以按照下面的步骤进行。

  • 准备好你的.cer证书和.pfx证书,并将你的.cer证书上传到你的Azure AD应用程序。

  • 运行这个ps以获得你的.pfx文件的x5t值,我们在签署jwt令牌时将需要它。

    $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
    $cer.Import("path of your .pfx file","password of your .pfx file",'Exportable')
    $x5t = [System.Convert]::ToBase64String($cer.GetCertHash()) 
    
  •