c# - Azure 存储帐户使用托管标识和 C# 进行身份验证
问题描述
我正在尝试使用用户分配的托管标识对 Azure 存储帐户进行身份验证,但出现以下错误:
无法使用用户分配的托管标识对 Azure 存储进行身份验证...
之前,在 Azure 门户中,我提供了对存储帐户中托管标识的参与者访问权限。所有其他参数(AccountURL、容器名称和托管标识)都是正确的。我在await blobClient.UploadAsync
请在下面找到代码,
public class BlobStorageManager
{
private BlobContainerClient blobContainerClient = null;
public BlobStorageManager()
{
var accountURL = ConfigurationManager.AppSettings["AccountURL"].ToString();
var containerName = ConfigurationManager.AppSettings["ContainerName"].ToString();
var managedIdentity = ConfigurationManager.AppSettings["ManagedIdentity"].ToString();
var blobServiceClient = new BlobServiceClient(new Uri(accountURL), new ManagedIdentityCredential(managedIdentity));
blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
}
public async Task<string> UploadFileToBlobAsync(string fileName, Stream fileData, string contentType)
{
try
{
BlobClient blobClient = blobContainerClient.GetBlobClient(fileName);
var blobHttpHeaders = new BlobHttpHeaders()
{
ContentType = contentType
};
var blobUploadOptions = new BlobUploadOptions()
{
HttpHeaders = blobHttpHeaders
};
await blobClient.UploadAsync(fileData, blobUploadOptions).ConfigureAwait(false);
return blobClient.Uri.AbsoluteUri;
}
catch (Exception ex)
{
throw (ex);
}
}
我正在使用 Azure.Identity 1.4.0 和 Azure.Storage.Blobs 12.10.0
我错过了任何步骤吗?请指教。
解决方案
贡献者角色不授予数据平面访问权限。它仅提供管理存储帐户资源本身的访问权限。
您需要将存储 Blob 数据参与者角色授予托管标识。这将为其提供数据访问权限。
推荐阅读
- sql - SQL CASE 语句返回重复值
- php - PHP json_decode 显示成表格
- php - NetSuite Suitetalk API - 自上次修改后获取客户,忽略特定字段
- javascript - 使用过滤器 javascript 过滤多个类别
- python-3.x - 初学者:类型错误:
() 得到了一个意外的关键字参数“func_names” - html - 减少单选标签线之间的空间
- php - 尝试使用 MySQL 填充时,PHP 表单完全空白
- java - log4j2 参数替换不调用 toString() 方法
- kendo-asp.net-mvc - 进行几次选择后,Kendo 多选启用摘要标记模式
- amazon-web-services - 如果源数据库是 S3,AWS Database Migration Service (DMS) 中的“模式”指的是什么?