【问题标题】:403 when connecting to Azure App Configuration using a Managed Identity使用托管标识连接到 Azure 应用程序配置时出现 403
【发布时间】:2020-08-26 23:36:10
【问题描述】:

我正在尝试使用托管标识从网络框架应用连接到 Azure 应用配置,但存在权限问题。

我如何连接

options.Connect(new Uri("https://myconfigstore.azconfig.io"), new ManagedIdentityCredential(clientId));

我已经尝试了使用门户网站可以找到的所有各种 clientId、objectids 和 applicationId guid,但无论何时使用 guid 调用它,总是收到错误的请求

Azure.Identity.CredentialUnavailableException: 'ManagedIdentityCredential authentication unavailable, 
the requested identity has not been assigned to this resource.
Status: 400 (Bad Request)

如果我在未指定 clientId 的情况下创建 ManagedIdentityCredential,则会收到此错误

Azure.RequestFailedException: 'Service request failed.
Status: 403 (Forbidden)

我已授予我的管理身份 Azure 应用配置数据权限

这是我应该使用的 clientId 吗?

更新:

我刚刚尝试使用我的活动目录的 ID(AAD --> 属性),我得到了一个

Azure.RequestFailedException: 'Service request failed.
Status: 403 (Forbidden)

这只能意味着我使用了错误的 ID,否则它应该返回 400(错误请求),就像我看到的另一个错误一样。

完整代码

private static async Task Main()
    {
        var builder = new ConfigurationBuilder();

        const string clientId = "e589d9f1-xxxx-xxxx-xxxx-6bc940d50ab7";

        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(new Uri("https://myconfigstore.azconfig.io"), new ManagedIdentityCredential(clientId));
        });

        _configuration = builder.Build();

        Console.WriteLine("Number of keys: " + _configuration.GetChildren().Count());

        Console.WriteLine("Demo: " + _configuration["Demo"]);
    }

【问题讨论】:

    标签: azure-app-configuration


    【解决方案1】:

    本文档演示了如何使用托管标识从应用服务访问应用配置,但您可以将应用服务替换为支持托管标识的任何其他 Azure 服务。 https://docs.microsoft.com/en-us/azure/azure-app-configuration/howto-integrate-azure-managed-service-identity

    这里有几件事我想指出

    • 确保在运行应用程序的 Azure 服务中启用托管标识。
    • 当您使用系统分配 托管标识时,您无需提供客户端 ID。您只需在使用用户分配托管身份时提供客户端 ID。
    • 确保在您的应用配置实例的访问控制中授予托管身份应用配置数据读取者应用配置数据所有者角色。
    • 在角色分配后等待至少 15 分钟,以便传播权限。
    • 托管标识只能在您的代码在 Azure 服务中运行时工作。在本地运行时它将不起作用。

    【讨论】:

    • > 托管标识仅在您的代码在 Azure 服务中运行时才能工作。在本地运行时它将不起作用。好的。应该是这个原因。我现在已经创建了单独的 app.Debug.config 和 app.Release.config 文件。发布配置配置为使用托管帐户使用 Azure 应用配置,调试使用配置文件中的 appsettings。 ````
    • 只有当您的代码在 Azure 服务中运行时,托管标识才能工作。在本地运行时它将不起作用。 这是什么意思?我有一个 WPF 应用程序在我的桌面上运行。如何访问 Azure 存储帐户?谢谢。
    • @sabuncu,您的 WPF 应用程序仍然可以使用 AAD 身份之一(服务主体或用户 MSA 身份)来访问您的 Azure 存储帐户或 Azure 应用程序配置。只是标识不能是托管标识,因为托管标识仅在 Azure 服务中可用,而 WPF 应用程序在桌面上运行。
    • @ZhenlanWang 谢谢你的信息,我很感激。
    • 您可以在开发和生产期间使用 DefaultAzureCredential 在凭据类型之间轻松切换。它只是自动选择可用的内容(托管身份、VS 中的登录用户、环境变量等)c-sharpcorner.com/article/…
    猜你喜欢
    • 2021-01-24
    • 2021-10-08
    • 2021-01-28
    • 1970-01-01
    • 2022-08-02
    • 2020-07-03
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多