通过 Managed Identity c# 访问 AzureBlobStorage
Access AzureBlobStorage via Managed Identity c#
我想知道是否没有使用 C# 和 Azure 托管身份访问 blobstorage 的实际实现?
我知道可以通过已弃用的 nuget 包 WindowsAzure.Storage 9.3.3 访问它,但看起来新的 Microsoft.Azure.Storage.Blob 11.2.1 还没有这个功能实施...
我是不是漏了什么?
使用 Azure.Storage.Blobs
你可以这样做:
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));
Azure.Identity
库具有 TokenCredential
抽象 class 的实现,可用于对 Azure.Storage.Blobs
库中的客户端进行身份验证。 ManagedIdentityCredential
可用于在启用托管标识的 Azure 主机上对客户端进行身份验证。
var blobServiceClient = new BlobServiceClient(new Uri($"https://{AccountName}.blob.core.windows.net"), new ManagedIdentityCredential());
可以找到有关 Azure.Identity
库的更多信息 here。
我想知道是否没有使用 C# 和 Azure 托管身份访问 blobstorage 的实际实现?
我知道可以通过已弃用的 nuget 包 WindowsAzure.Storage 9.3.3 访问它,但看起来新的 Microsoft.Azure.Storage.Blob 11.2.1 还没有这个功能实施...
我是不是漏了什么?
使用 Azure.Storage.Blobs
你可以这样做:
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));
Azure.Identity
库具有 TokenCredential
抽象 class 的实现,可用于对 Azure.Storage.Blobs
库中的客户端进行身份验证。 ManagedIdentityCredential
可用于在启用托管标识的 Azure 主机上对客户端进行身份验证。
var blobServiceClient = new BlobServiceClient(new Uri($"https://{AccountName}.blob.core.windows.net"), new ManagedIdentityCredential());
可以找到有关 Azure.Identity
库的更多信息 here。