Разрешения для управления базами данных Azure

Я работаю над небольшим приложением для подключения к Microsoft Azure, перечисления всех баз данных, принадлежащих определенной группе ресурсов, и экспорта всех указанных баз данных. Для этого я использую библиотеку Microsoft.WindowsAzure.Management.Sql.

Следуя этому руководству, мне удалось настроить регистрацию приложения в AD для моего приложения и назначить ему Owner роль (для тестирования), авторизуйтесь в Azure и получите токен доступа.

Однако, когда я пытаюсь использовать этот токен для выполнения каких-либо операций с базой данных (например, перечисления всех баз данных, используя IServerOperations.List), я получаю следующее исключение:

ForbiddenError: The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.

Идентификатор клиента, идентификатор подписки, идентификатор клиента и секрет клиента верны, и изменение любого из них приводит к другому исключению, уже на этапе аутентификации.

Как я могу это исправить? Если правильный ответ - "переключиться на Microsoft.Azure.Management.Sql", я прекрасно с этим справляюсь, но если возможно, я бы хотя бы хотел понять, почему это происходит.

1 ответ

Решение

Если правильный ответ - "переключиться на Microsoft.Azure.Management.Sql", я прекрасно с этим справляюсь, но, если возможно, я бы хотя бы хотел понять, почему это происходит.

Microsoft.WindowsAzure.Management.Sql реализует API ASM (старый API Azure).

Причина, по которой вы получаете эту ошибку, заключается в том, что вы пытаетесь аутентифицировать / авторизовать API диспетчера ресурсов Azure (ASM) с разрешением приложения. Но API управления службами - это делегированное разрешение, а не разрешение приложения.

Для получения более подробной информации о том, как проходить аутентификацию для ASM и ARM Rest API, обратитесь к другому потоку SO.

Как я могу это исправить?

Microsoft.Azure.Management.Sql реализует API ARM. Как вы упомянули, что вы могли бы использовать Microsoft.Azure.Management.Sql чтобы понять Microsoft.WindowsAzure.Management.Sql

или вы можете использовать авторизацию на основе сертификатов X509 для авторизации ваших запросов API ASM. Для получения дополнительной информации о том, как пройти аутентификацию с использованием сертификата управления, вы можете обратиться к этому руководству.

Примечание: рекомендуется использовать Microsoft.Azure.Management.Sql вместо Microsoft.WindowsAzure.Management.Sql

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