der*_*rek 3 python-3.x azure-active-directory azure-ad-msal azure-managed-identity
我正在尝试使用 Azure 功能的托管标识来访问 AAD 保护的 Web 应用程序,这需要自定义流程而不是使用不同的客户端。所以第一步是获取访问令牌:
credential = DefaultAzureCredential()
scope = "https://graph.microsoft.com/.default"
token = credential.get_token(scope)
Run Code Online (Sandbox Code Playgroud)
我能够成功获得令牌。
然后访问受 AAD 保护的 Web 应用程序:
uri = "https://my-web-app-1.azurewebsites.net/"
headers = {
'Authorization': 'Bearer ' + token.token
}
api_response = requests.get(uri, headers=headers)
Run Code Online (Sandbox Code Playgroud)
但是,这一步会返回错误:
{“code”:401,“message”:“IDX10511:签名验证失败。尝试的密钥:'[PII 被隐藏]'。\nkid:'[PII 被隐藏]'。\n捕获的异常:\n '[PII 是隐藏]'。\n令牌:'[PII 已隐藏]'。"}
所以我怀疑我使用了错误的范围来获取令牌。所以我很困惑在这里使用哪个范围?
- - - 语境 - - -
我有一个天蓝色功能,已启用系统身份,已启用该功能来访问我的网络应用程序my-web-app-1.azurewebsites.net/。Web 应用程序my-web-app-1.azurewebsites.net/受 AAD 保护。
以下是我用于 Web 应用程序身份验证的 AAD 应用程序下的 API 权限。这里的错误是我为Web应用程序而不是Azure函数设置了API权限,以防万一无法设置(因为函数具有系统身份,而不是AAD应用程序,我们可以在其中设置API权限。)
尝试设置scope为{your-api-client-id}/.default获取访问令牌。将 your-api-client-id 替换为 Azure AD 中 API 应用程序的客户端 ID/应用程序 ID。
| 归档时间: |
|
| 查看次数: |
14205 次 |
| 最近记录: |