Несанкционированное исключение при использовании DefaultAzureCredential только с включенным AzureCliCredential

я использую DefaultAzureCredential из Azure.Identity только с AzureCliCredential включен, чтобы разрешить проверку подлинности в Azure Active Directory с помощью Azure CLI для получения токена доступа.

Затем экземпляр RegistryManager для IoTHub создается с учетными данными для получения списка устройств, зарегистрированных в конкретном ресурсе IoTHub.

Код показан ниже:

      namespace default_azure_credential_repro
{
    using System;
    using System.Threading.Tasks;
    using Microsoft.Azure.Devices;
    using Azure.Identity;
    class Program
    {
        static async Task Main(string[] args)
        {
            var credential = new DefaultAzureCredential(
                new DefaultAzureCredentialOptions {
                    ExcludeVisualStudioCredential = true,
                    ExcludeVisualStudioCodeCredential = true,
                    ExcludeAzurePowerShellCredential = true,
                    ExcludeEnvironmentCredential = true,
                    ExcludeSharedTokenCacheCredential = true,
                    ExcludeManagedIdentityCredential = true,
                }
            );
            var hostName = "{host name here}";
            var manager = RegistryManager.Create(hostName, credential);
            var query = manager.CreateQuery("select * from devices", 100);
            while (query.HasMoreResults) {
                foreach (var device in await query.GetNextAsTwinAsync()) {
                    Console.WriteLine(device.DeviceId);
                }
            }
        }
    }
}

Когда я запустил приведенный выше код, я получил следующую ошибку, указывающую на то, что токен доступа не имеет разрешения на вызов API, необходимого для запроса устройств.

      Unhandled exception. Microsoft.Azure.Devices.Common.Exceptions.UnauthorizedException: {"Message":"{\"errorCode\":401003,\"trackingId\":\"{trackingIdHere}\",\"message\":\"Principal live.com#myemailaddress@example.com is not authorized for POST on /devices/query due to no assigned permissions\",\"timestampUtc\":\"2021-05-29T13:33:29.0065016Z\"}","ExceptionMessage":""}

Но я могу перечислить устройства с помощью z cli, используя следующую команду.

      $ az iot hub device-identity list -n {resource name here}

Почему моя программа не работает, но запускается az cli успешно? Заранее спасибо.

0 ответов

Другие вопросы по тегам