Подключитесь к API управления службами Azure из C# без интерактивного входа
Я пытаюсь подключиться к API-интерфейсу управления службами Azure, используя C#, но единственный способ, которым пример ( https://msdn.microsoft.com/en-gb/library/azure/ee460782.aspx) работает, если с помощью интерактивной проверки подлинности метод, требующий от меня ввести имя пользователя и пароль Azure. Поскольку мы хотим вызывать этот метод из рабочей роли, это будет невозможно. Есть ли способ сделать это?
1 ответ
Поскольку мы хотим вызывать этот метод из рабочей роли, это будет невозможно. Есть ли способ сделать это?
Есть два способа сделать это:
Connect to your Azure Subscription using X509 Certificate
Хотя это и не рекомендуется в зависимости от направления, в котором движется Azure, но это вариант.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 и предоставьте им только необходимые разрешения. Не нужно делать их со-администратором в вашей подписке.