возможно, вы можете зарегистрировать свое приложение как мультитенантное приложение, чтобы пользователи во внешнем Azure AD могли войти в ваше приложение. Для получения подробной информации о мультитенантном приложении, пожалуйста, обратитесь к этому документ
Для получения информации о ВМ в пользовательской подписке Azure вам необходимо внедрить процесс, позволяющий вашему пользователю (с ролью владельца подписки Azure) предоставлять как минимум разрешение на чтение виртуальных машин для подписки пользователей на ваше мультитенантное приложение, чтобы Ваше приложение может получить необходимую информацию о виртуальной машине пользователя.
Я объясню детали процессов обработки отверстий по вашему требованию:
Step1:
Вы можете просто обратиться к этому документу , чтобы развернуть многосайтовое приложение. Если пользователи из другого Azure AD (мы называем это B-арендатором здесь) хотят использовать ваше мультитенантное приложение, администратор Арендатор B должен зарегистрироваться в вашем приложении (этот процесс вы можете увидеть подробнее здесь )
Шаг2:
Как только администратор AD завершит процесс регистрации, ваше мультитенантное приложение появится в «Корпоративных приложениях» B-арендатора. Вы можете найти его, используя свой мультитенантный идентификатор приложения:
Этот шаг просто для проверки, если ваше приложение успешно проживал арендатора клиента.
Step3
Этот шаг предоставит связанные с виртуальной машиной разрешения определенной подписки Azure клиента B для вашего мультитенантного приложения. Вы должны позволить администратору подписки Azure (у которого есть роль владельца) предоставить это разрешение:
Перейти к подписке Blade:
Добавьте роль «Вкладчик виртуальной машины» (это встроенная роль, у нее есть все разрешения на управление ВМ, кроме разрешения на чтение) в ваше мультитенантное приложение, вы можете найти свое приложение, используя его идентификатор приложения:
Выберите его и нажмите «Сохранить», этот шаг завершен.
Шаг 4
Попытка получить информацию о виртуальной машине из определенной подписки Azure B-клиента.
На этом этапе я буду использовать REST API для получения необходимой вам информации о виртуальной машине.
Получить токен доступа от арендатора B:
Request URL:
POST https://login.microsoftonline.com/<-B tenant name->/oauth2/token
Request header:
Content-Type: application/x-www-form-urlencoded
Request Body:
client_id=<-your multi teant app id->&
client_secret=<-client secret of your multi tenant app->&
grant_type=client_credentials&
resource=https://management.azure.com/
Вы можете получить access_token, чтобы получить необходимую информацию о виртуальной машине через API REST ниже:
Request URL:
GET https://management.azure.com/subscriptions/<-your users' subscription ID->/resourceGroups/<-the resource group you want to query ->/providers/Microsoft.Compute/virtualMachines?api-version=2018-06-01
Request Header :
Authorization: Bearer <-access token->
Я проверил на моей стороне, и это работает для меня:
Надеюсь, это поможет!