首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Managed Identity c#访问AzureBlobStorage

通过Managed Identity c#访问AzureBlobStorage
EN

Stack Overflow用户
提问于 2020-09-07 14:50:45
回答 2查看 500关注 0票数 0

我想知道是否没有实际的实现来访问c#和azure托管身份的blobstorage?

我知道可以通过弃用的nuget包WindowsAzure.Storage 9.3.3访问它,但是看起来新的Microsoft.Azure.Storage.Blob 11.2.1还没有实现这个功能……

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-09 07:08:12

Azure.Identity库具有TokenCredential抽象类的实现,可用于对Azure.Storage.Blobs库中的客户端进行身份验证。ManagedIdentityCredential可用于在启用了托管身份的azure主机上对客户端进行身份验证。

代码语言:javascript
复制
var blobServiceClient = new BlobServiceClient(new Uri($"https://{AccountName}.blob.core.windows.net"), new ManagedIdentityCredential());

有关Azure.Identity库的更多信息,请访问here

票数 1
EN

Stack Overflow用户

发布于 2020-09-07 14:55:13

使用Azure.Storage.Blobs,您可以执行以下操作:

代码语言:javascript
复制
public class ManagedIdentityTokenCredentials : TokenCredential
{
    private const string Resource = "https://storage.azure.com/";
    private readonly string _tenantId;

    public ManagedIdentityTokenCredentials(string tenantId)
    {
        _tenantId = tenantId;
    }

    public override async ValueTask<AccessToken> GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken)
    {
        var result = await new AzureServiceTokenProvider().GetAuthenticationResultAsync(Resource, _tenantId, cancellationToken: cancellationToken);
        return new AccessToken(result.AccessToken, result.ExpiresOn);
    }

    public override AccessToken GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
    {
        return GetTokenAsync(requestContext, cancellationToken).GetAwaiter().GetResult();
    }
}

...

var blobServiceClient = new BlobServiceClient(new Uri($"https://{AccountName}.blob.core.windows.net"), new ManagedIdentityTokenCredentials(TenantId));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63772633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档