我想知道是否没有使用c#和azure托管身份访问blobstorage的强制实现?
我知道可以通过不赞成使用的nuget程序包WindowsAzure.Storage 9.3.3来访问它,但是看起来新的Microsoft.Azure.Storage.Blob 11.2.1尚未实现此功能。 ..
我想念什么吗?
答案 0 :(得分: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));
答案 1 :(得分:1)
Azure.Identity
库具有TokenCredential
抽象类的实现,可用于对Azure.Storage.Blobs
库中的客户端进行身份验证。 ManagedIdentityCredential
可用于在启用了托管身份的Azure主机上对客户端进行身份验证。
var blobServiceClient = new BlobServiceClient(new Uri($"https://{AccountName}.blob.core.windows.net"), new ManagedIdentityCredential());
有关Azure.Identity
库的更多信息,请参见here。