gpt4 book ai didi

Azure Function App 读/写表存储 - InvalidAuthenticationInfoContent

转载 作者:行者123 更新时间:2023-12-03 03:34:05 25 4
gpt4 key购买 nike

我正在尝试使用托管标识来授予我的 C# 应用程序写入存储帐户表存储的权限。基于this documentation ,我可以使用 Azure AD 托管标识授予从函数应用到我的存储帐户的访问权限。我已授予此记录所需的所有权限 here 。我正在使用TableServiceClient访问我的代码中的表。

string storageAccountName = Environment.GetEnvironmentVariable("STORAGE_ACCOUNT_NAME");
Uri tableUri = new Uri(string.Format("https://{0}.table.core.windows.net/", storageAccountName));
services.AddScoped(x => new TableServiceClient(tableUri, new DefaultAzureCredential()));

所以

  1. 在函数应用上将适当的角色添加到托管身份
  2. 在函数应用内检索指向正确表 URI 的 Azure 凭据

我希望可以访问存储帐户中的表,但我收到以下错误

2022-10-06T08:11:48.500 [Error] Executed 'MyFunc' (Failed, Id=<myfailureid>, Duration=1882ms)Server failed to authenticate the request. Please refer to the information in the www-authenticate header.RequestId:<requestId>Time:2022-10-06T08:11:48.3870421ZStatus: 401 (Server failed to authenticate the request. Please refer to the information in the www-authenticate header.)ErrorCode: InvalidAuthenticationInfoContent:{"odata.error":{"code":"InvalidAuthenticationInfo","message":{"lang":"en-US","value":"Server failed to authenticate the request. Please refer to the information in the www-authenticate header.\nRequestId:<requestId>\nTime:2022-10-06T08:11:48.3870421Z"}}}Headers:Server: Microsoft-HTTPAPI/2.0x-ms-request-id: <ms-request-id>x-ms-error-code: REDACTEDWWW-Authenticate: Bearer authorization_uri=https://login.microsoftonline.com/<subscription id>/oauth2/authorize resource_id=https://storage.azure.comDate: Thu, 06 Oct 2022 08:11:47 GMTContent-Length: 279Content-Type: application/json

我只是想从我的函数应用程序中删除一些连接字符串,并且我意识到现在使用托管身份来完全访问存储帐户是 basically unworkable如果您想在不切换到使用 WEBSITE_RUN_FROM_PACKAGE 中的 URL 的情况下进行部署,MS 强烈建议不要这样做,但我至少希望可以使用托管身份从我的代码中访问表和 blob。

这似乎是非常基本的访问要求,所以我认为我做错了什么。对此的任何指导将不胜感激

最佳答案

我在发布之前找到了答案,但我想分享此内容,以防其他人遇到此问题。

问题在于 Azure 根据潜在位置的层次结构获取权限,如 here 所示。 。我已经设置了 AZURE_CLIENT_ID 变量,因此如果我使用 DefaultAzureCredential,它默认使用该权限。所以我然后找到了 ManagedIdentityCredential 的文档类,它避免了这种权限层次结构搜索链,而是使用特定的身份 clientID。然后使用constructor对于使用用户分配的身份并为其提供在托管身份概述中找到的 clientId,它成功读取了我的权限并正常工作。

关于Azure Function App 读/写表存储 - InvalidAuthenticationInfoContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73971321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com