Подключитесь к API управления службами Azure из C# без интерактивного входа

Я пытаюсь подключиться к API-интерфейсу управления службами Azure, используя C#, но единственный способ, которым пример ( https://msdn.microsoft.com/en-gb/library/azure/ee460782.aspx) работает, если с помощью интерактивной проверки подлинности метод, требующий от меня ввести имя пользователя и пароль Azure. Поскольку мы хотим вызывать этот метод из рабочей роли, это будет невозможно. Есть ли способ сделать это?

1 ответ

Решение

Поскольку мы хотим вызывать этот метод из рабочей роли, это будет невозможно. Есть ли способ сделать это?

Есть два способа сделать это:

  1. Connect to your Azure Subscription using X509 Certificate Хотя это и не рекомендуется в зависимости от направления, в котором движется Azure, но это вариант.
  2. Create a user in Azure AD just for executing Service Management APIВ этом подходе вы создадите пользователя в Azure AD. Затем вы назначите этому пользователю Co-Admin роль в вашей подписке Azure (обе они должны выполняться через старый портал Azure). Как только вы это сделаете, вам нужно будет получить токен, указав имя пользователя / пароль в своем коде. Что-то вроде ниже:

        var authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantid}")
        UserCredential userCredential = new UserCredential(userName, password);
        AuthenticationResult authResult = authContext.AcquireToken("https://management.core.windows.net/", clientId, userCredential);
    

Однако, пожалуйста, имейте в виду несколько вещей:

  • Если вы создаете пользователя через портал Azure, убедитесь, что вы выполнили вход хотя бы один раз, используя этого пользователя, поскольку в этом случае пользователь должен изменить пароль при первом входе в систему. Также, пожалуйста, убедитесь, что срок действия пароля пользователя не истек. Я верю, используя Graph API непосредственно вы можете достичь этого.
  • Размещение учетных данных пользователя в коде сопряжено с большими рисками. Если кто-то завладеет этим именем пользователя / паролем, он по сути получит доступ ко всей вашей подписке.

Если возможно, пожалуйста, посмотрите, если используете Azure Resource Manager (ARM) API это вариант для вас, чтобы управлять подпиской вместо Service Management API, С Role-based access control (RBAC) в ARM API вы можете просто создать Service Principal введите user и предоставьте им только необходимые разрешения. Не нужно делать их со-администратором в вашей подписке.

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