使用托管身份连接到Azure应用配置时为403

时间:2020-05-11 12:17:26

标签: azure-app-configuration

我正在尝试使用托管身份从网络框架应用程序连接到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应用配置数据权限

enter image description here

这是我应该使用的clientId吗?

enter image description here

更新:

我刚刚尝试使用活动目录的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"]);
    }

1 个答案:

答案 0 :(得分:4)

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

以下是我想讲的几件事

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