【Azure 应用服务】在App Service 中如何通过Managed Identity获取访问Azure资源的Token呢? 如Key Vault

问题描述

当App Service启用了Managed Identity后,Azure中的资源就可以使用此Identity访问。 如果需要显示的获取这个Token,如何实现呢?

问题解答

在App Service开启托管标识之后,会生成两个环境变量IDENTITY_ENDPOINT和IDENTITY_HEADER:

  • IDENTITY_ENDPOINT - 本地令牌服务的 URL。是一个本地 URL,应用可从其请求令牌。
  • IDENTITY_HEADER - 用于帮助缓解服务器端请求伪造 (SSRF) 攻击的标头。 该值由平台轮换。

在根据《App Service 托管标识》的介绍,可以通过多种方式获取到对Azure资源的Token。如 HTTP GET, .NET, Java, PowerShell等。

image.png

这里就通过App Service Kudu工具,发送 curl 请求,快速获取 Access Token。

**第一步:在kudu中执行set指令,获取当前环境中是有的参数设置,从中找到 IDENTITY_ENDPOINT 和 IDENTITY_HEADER **


image.png

第二步:发送curl 请求,获取Access Token

curl -v "?resource=https://vault.azure.cn&api-version=2019-08-01" -H "X-IDENTITY-HEADER:"

注意

1) 需要用正确的值替换,如:http://127.0.0.1:41723/MSI/token/, 在 token后面必须添加反斜杠( / ),不可以省略。

2) resource=https://vault.azure.cn ,resource的url可以根据需要访问的资源进行替换。

3) 需要正确的值进行替换。

请求返回Body中,包含access_token内容。


image.png

参考文档

如何使用应用服务和 Azure Functions 的托管标识: https://docs.azure.cn/zh-cn/app-service/overview-managed-identity?tabs=portal%2Chttp

【end】

你可能感兴趣的:(【Azure 应用服务】在App Service 中如何通过Managed Identity获取访问Azure资源的Token呢? 如Key Vault)