使用托管标识访问Azure存储账户的scope参数及对接实现方法
对应scope参数
你场景下需要传入的scope为 https://storage.azure.com/.default,如果需要限定仅能访问指定存储账户,也可以使用 https://<你的存储账户名称>.blob.core.windows.net/.default。
前置配置要求
- 你使用的App Registration需要在目标存储账户的「访问控制(IAM)」中,被分配存储Blob数据参与者角色(仅分配普通的参与者/所有者角色无效,该类角色为存储资源的控制平面权限,不包含Blob数据的读写权限)
- 角色分配后需要等待1-2分钟让权限生效,避免调用时出现权限不足报错
修改后的参考代码示例
首先需要先安装Azure存储Blob的NuGet包:Azure.Storage.Blobs
using Azure.Storage.Blobs; using Microsoft.Identity.Client; // 令牌获取逻辑和你之前的逻辑一致,仅修改scope参数即可 AuthenticationResult authenticationResult = null; var _app = ConfidentialClientApplicationBuilder.Create(Environment.GetEnvironmentVariable("ClientId")) .WithAuthority(string.Format(Environment.GetEnvironmentVariable("AADInstance"), Environment.GetEnvironmentVariable("Tenant"))) .WithClientSecret(Environment.GetEnvironmentVariable("ClientSecret")).Build(); // 仅此处修改为存储对应的scope authenticationResult = _app.AcquireTokenForClient(new string[] { "https://storage.azure.com/.default" }).ExecuteAsync().Result; // 向存储容器写入数据的逻辑 BlobClient blobClient = new BlobClient( new Uri("https://<你的存储账户名>.blob.core.windows.net/<你的容器名>/<要写入的Blob名称>"), new Azure.AzureKeyCredential(authenticationResult.AccessToken) ); // 示例:上传本地文件 await blobClient.UploadAsync(@"<本地文件路径>", overwrite: true);
内容的提问来源于stack exchange,提问作者techno
相关产品推荐
相关产品推荐

