获取启用 MSI 的应用程序服务的 AAD 应用程序 ID 的最简单方法是什么
What is the easiest way to get the AAD application ID of MSI enabled app service
我部署了一个启用了 MSI 的应用程序服务(具有系统分配的标识)。此应用程序服务将使用 MSI 检索访问令牌以访问受 AAD 保护的 Web API。 web API 会从token 中获取appid,并根据预先配置的白名单检查appid,如果appid 不在白名单中,则拒绝访问。
所以为了允许MSI启用的应用服务访问网络API,我需要知道MSI应用服务的应用程序ID并将其添加到白名单。
我知道我可以 运行 在我的应用程序服务调试控制台中使用 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
但我想知道是否有更简单的方法来获取 MSI 应用程序服务的 appid 而无需检索令牌。
您可以使用(Get-AzADServicePrincipal -ObjectId xxxx).ApplicationId
,在Web 应用程序门户上查看对象ID 很容易找到。
您也可以通过应用程序 ID 在 企业应用程序 中搜索该应用程序。
我部署了一个启用了 MSI 的应用程序服务(具有系统分配的标识)。此应用程序服务将使用 MSI 检索访问令牌以访问受 AAD 保护的 Web API。 web API 会从token 中获取appid,并根据预先配置的白名单检查appid,如果appid 不在白名单中,则拒绝访问。
所以为了允许MSI启用的应用服务访问网络API,我需要知道MSI应用服务的应用程序ID并将其添加到白名单。
我知道我可以 运行 在我的应用程序服务调试控制台中使用 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
但我想知道是否有更简单的方法来获取 MSI 应用程序服务的 appid 而无需检索令牌。
您可以使用(Get-AzADServicePrincipal -ObjectId xxxx).ApplicationId
,在Web 应用程序门户上查看对象ID 很容易找到。
您也可以通过应用程序 ID 在 企业应用程序 中搜索该应用程序。