Я разрабатываю инструмент, похожий на облачный проводник Visual Studio, который выполняет ограниченный набор задач управления и развертывания внутри подписки Azure пользователя.Azure-аутентификация для утилиты управления
Я отбрасываю несколько вещей, связанных с аутентификацией против Azure и как приложение представляет себя для Azure.
Большая часть документации об аутентификации с Azure связана с веб-приложениями, которые позволяют пользователям проходить аутентификацию против Azure Active Directory. Это не мой сценарий. Хотя мне приложение обязательно аутентифицирует пользователей от Azure AD (как и все пользователи Azure), мои пользователи являются администраторами, а не «пользователями».
Я понимаю, что ранее программное обеспечение, выполнявшее задачи администрирования, получило сертификат управления, который отдельно зарегистрирован на веб-портале управления Azure. Я понимаю это прекрасно.
... однако я также понимаю, что сертификаты управления почти устарели и заменены Принципами обслуживания, что само по себе имеет смысл с точки зрения безопасности (поскольку это обеспечивает более грамотную защиту на основе ролей), однако недостатком является то, что есть много ручных шагов и обручей для перехода, чтобы обеспечить использование Принципов обслуживания с помощью программного обеспечения для администрирования - в частности, вам необходимо предварительно зарегистрировать свое приложение на Azure Portal.
Мне это не нравится, потому что это значительно увеличивает пользовательское трение с помощью программного обеспечения, которое я пишу. Я хочу, чтобы мое программное обеспечение вел себя как облачный проводник Visual Studio или Azure PowerShell, поскольку вам не нужно предварительно регистрировать что-либо: 1. просто запустите программу на рабочем столе; 2. Вы получите приглашение войти в систему с учетными данными учетной записи администратора Azure. 3. мое программное обеспечение отображает содержимое ваших подписки и позволяет выполнять ваши задачи управления.
До сих пор я на самом деле есть что-то, что делает это - я выполнить следующие шаги:
- Использование
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext
для проверки подлинности противhttps://login.microsoftonline.com/common
(с использованиемAcquireTokenAsync
, который представляет WebView для входа в систему). Я используюclientId: "1950a258-227b-4e31-a9cf-717495945fc2"
, который является клиентом Azure PowerShell. - Используйте маркер с шага 1, чтобы перечислять Арендаторов и Подписки в учетной записи пользователя.
- Пользователю предлагается выбрать арендатора, а затем подписку из списка загруженный на шаге 2.
- Отправить новый запрос аутентификации
https://login.microsoft.com/{tenantId}
(где{tenantId}
извлекается из шага 3), опять же, используя тот жеclientId
.
Однако я не люблю олицетворять Azure PowerShell - Microsoft может отменить этот clientId.
... но как я могу зарегистрировать clientId, который может использоваться для входа в систему на этапе 1 (когда нет tenantId
или контекста подписки, таким образом, нет Azure AD, который содержит Принципов обслуживания)?