如何正确使用azure身份的“ManagedIdentityCredential”的“get_token”

2024-03-09

我正在尝试使用 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 权限。这里的错误是我为W​​eb应用程序而不是Azure函数设置了API权限,以防万一无法设置(因为函数具有系统身份,而不是AAD应用程序,我们可以在其中设置API权限。)


尝试设置scope as {your-api-client-id}/.default获取访问令牌。将 your-api-client-id 替换为 Azure AD 中 API 应用程序的客户端 ID/应用程序 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用azure身份的“ManagedIdentityCredential”的“get_token” 的相关文章

随机推荐