【发布时间】:2019-07-10 10:21:49
【问题描述】:
我部署了启用 MSI 的应用服务(具有系统分配的身份)。此应用服务将使用 MSI 检索对 AAD 保护的 Web API 的访问令牌。 Web API 会从 token 中检索 appid,并根据预先配置的白名单检查 appid,如果 appid 不在白名单中,则拒绝访问。
所以要允许启用 MSI 的应用服务访问 Web 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 而无需检索令牌。
【问题讨论】:
-
为什么需要手动检查代码中的app_id?您应该将您的 MSI 分配给 WebApi,然后您确定只有受信任的消费者可以调用您的 webapi
-
谢谢 Thomas,有什么文档可以参考吗?
-
我的回复有用吗?
-
谢谢南希,你的方法有效!
标签: azure azure-web-app-service azure-managed-identity