У меня служба приложения, развернутая с включенным MSI (с назначенной системой идентификацией). Эта служба приложений будет использовать MSI для получения токена доступа к защищенному веб-API AAD. Веб-API извлечет appid из токена и проверит appid по предварительно настроенному белому списку. Если appid отсутствует в белом списке, доступ запрещен.
Таким образом, чтобы разрешить службе приложений с поддержкой MSI получать доступ к веб-API, мне нужно знать идентификатор приложения службы приложений MSI и добавить его в белый список.
Я знаю, что могу запустить следующий сценарий powershell в консоли отладки службы приложений, чтобы получить токен и получить appid, расшифровав токен.
$apiVersion = "2017-09-01"
$resourceURI = "<resource uri of AAD protected Web API>"
$tokenAuthURI = $env:MSI_ENDPOINT + "?resource=$resourceURI&api-version=$apiVersion"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token
Но мне интересно, есть ли более простой способ получить appid службы приложений MSI без получения токена.