我正在开发一个 API,允许用户使用 Azure AD OAuth2 身份验证从 Azure 存储 (RBAC) 检索 blob。这是场景:
我需要确保 API 返回一个 blob(用户有权访问),否则如果经过身份验证的用户无权访问所请求的存储帐户和容器中的特定 blob,则返回身份验证错误。
我正在使用此 .NET 代码根据这些详细信息创建一个 Blob 客户端。
Uri blobUri = new Uri($"https://{storageAccountName}.blob.core.windows.net/{containerName}/{filePath}");
BlobClient blobClient = new BlobClient(blobUri, new DefaultAzureCredential());
问题是我能够访问所需的 blob,因为我在本地开发设置中运行它。我必须在 Azure Cli 中执行 az login 才能对其进行测试。但是当我尝试在 Azure 上的已部署应用程序中运行它时,它会给出 403 错误。
我已确保我至少拥有 Blob 读取器访问权限和资源组中的读取器访问权限。
用于参考的文档:https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication/?tabs=command-line
任何有关如何安全有效地实现这一点的指导或代码示例将不胜感激。谢谢!
部署后,您的应用程序将采用托管身份或服务主体身份验证。确保前者拥有存储资源的适当权限。