如何解决如何正确使用天蓝色身份的“ManagedIdentityCredential”的“get_token”
我正在尝试使用 Azure 函数的托管标识来访问受 AAD 保护的 Web 应用程序,这需要自定义流程而不是使用不同的客户端。所以第一步是获取访问令牌:
credential = DefaultAzureCredential()
scope = "https://graph.microsoft.com/.default"
token = credential.get_token(scope)
我能够成功获取令牌。
然后访问受 AAD 保护的 Web 应用程序:
uri = "https://my-web-app-1.azurewebsites.net/"
headers = {
'Authorization': 'Bearer ' + token.token
}
api_response = requests.get(uri,headers=headers)
然而,这一步返回错误:
{"code":401,"message":"IDX10511:签名验证失败。密钥 试过:'[PII 被隐藏]'。 \nkid: '[PII 被隐藏]'。 \n例外 捕获:\n '[PII is hidden]'。\ntoken: '[PII is hidden]'。"}
所以我怀疑我使用了错误的范围来获取令牌。所以我很困惑在这里使用哪个范围?
------上下文-----
我有一个已启用系统身份的 azure 函数,该函数已启用访问我的网络应用程序 my-web-app-1.azurewebsites.net/
。网络应用 my-web-app-1.azurewebsites.net/
受 AAD 保护。
这是我用于 Web 应用程序身份验证的 AAD 应用程序下的 API 权限。这里的错误是我为 Web 应用程序而不是 Azure 函数设置了 API 权限,以防万一无法设置(因为函数具有系统标识,而不是我们可以设置 API 权限的 AAD 应用程序。)
解决方法
尝试将 scope
设置为 {your-api-client-id}/.default
以获取访问令牌。将 your-api-client-id 替换为 Azure AD 中 API 应用的客户端 ID/应用程序 ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。