我正在尝试使用 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 已隐藏]'。\n令牌:'[PII 已隐藏]'。"}
所以我怀疑我使用了错误的范围来获取令牌。所以我很困惑在这里使用哪个范围?
- - - 语境 - - -
我有一个已启用系统身份的天蓝色功能,已启用该功能来访问我的网络应用程序my-web-app-1.azurewebsites.net/
。网络应用程序my-web-app-1.azurewebsites.net/
受 AAD 保护。
以下是我用于 Web 应用程序身份验证的 AAD 应用程序下的 API 权限。这里的错误是我为Web应用程序而不是Azure函数设置了API权限,以防万一无法设置(因为函数具有系统身份,而不是AAD应用程序,我们可以在其中设置API权限。)
尝试设置scope
as {your-api-client-id}/.default
获取访问令牌。将 your-api-client-id 替换为 Azure AD 中 API 应用程序的客户端 ID/应用程序 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)