Azure Function 集成 App Config 和托管标识 - 本地调试方法

我已经翻遍了各种文档,但是我没有找到任何与我的问题有关的信息。其他服务的示例很多,但是针对我的情况却没有任何相关信息。

我有一个 Azure 函数。

我启用了它的托管标识。

我在 App Configuration 访问管理(IAM)中为该函数添加了数据读取器角色。

在我的代码中,我添加了

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        var appConfigEndpoint = Environment.GetEnvironmentVariable("AppConfigEndpoint");
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options => options.Connect(new Uri(appConfigEndpoint), new ManagedIdentityCredential()));
    }

在我的 Startup.cs 文件中。

当我在本地 DEBUG 时,遇到了以下错误:

A host error has occurred during startup operation '<some GUID>'.
Azure.Identity: ManagedIdentityCredential authentication unavailable. No Managed Identity endpoint found.
Value cannot be null. (Parameter 'provider')

我还尝试了将 new ManagedIdentityCredential() 更改为 new DefaultAzureCredential(),但是我得到了:

A host error has occurred during startup operation '732e2be5-0729-4279-b15a-833c8313b39a'.
Azure.Data.AppConfiguration: Service request failed.
Status: 403 (Forbidden)

Headers:
Server: openresty/1.17.8.2
Date: Wed, 30 Jun 2021 14:15:22 GMT
Connection: keep-alive
x-ms-request-id: 2f2066ef-9222-42d5-b96b-85a9b338127e
x-ms-client-request-id: 68cd19e1-0166-4567-a3f9-10f9a1cb6f3c
x-ms-correlation-request-id: 2f2066ef-9222-42d5-b96b-85a9b338127e
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Authorization, x-ms-client-request-id, x-ms-useragent, x-ms-content-sha256, x-ms-date, host, Accept, Accept-Datetime, Date, If-Match, If-None-Match, Sync-Token, x-ms-return-client-request-id, ETag, Last-Modified, Link, Memento-Datetime, retry-after-ms, x-ms-request-id, x-ms-client-session-id, x-ms-effective-locale, WWW-Authenticate
Strict-Transport-Security: max-age=15724800; includeSubDomains
Content-Length: 0
.
Value cannot be null. (Parameter 'provider')

我的 Azure 帐户已添加到 Visual Studio 中,并在“工具”>“选项”>“Azure 服务身份验证”中进行了选择。

我已经快要发狂了 - 我还需要做什么才能在本地进行调试呢?

点赞
用户1658906
用户1658906

ManagedIdentityCredential 只在 Azure 中适用。 相反地,您可以将其更改为使用 DefaultAzureCredential 。 它会尝试多种方法,包括管理身份验证和 Visual Studio 验证。 因此,在本地也可以正常工作。 当然,您的用户帐户也需要具有所需的 RBAC 角色。

2021-06-30 14:57:59