带有 Azure AD 访问令牌的 Azure 函数

时间:2021-03-29 20:15:49

标签: azure azure-active-directory azure-functions

我正在构建一组自定义 Azure Functions (Java),供 iOS 和 Android 本机客户端使用本质上和 Oauth2 身份验证策略访问。

我能够从 https://login.microsoftonline.com/XXXXX-XXXXXXXXX/oauth2/v2.0/token 成功获取不记名访问令牌,但是当我将此令牌提供给我的 Azure 函数并尝试在代码中对其进行验证时,我收到以下错误。在验证不记名令牌时,我正在执行类似于此处提供的示例的操作:https://dev.to/425show/secure-apis-with-azure-functions-java-azure-ad-and-ms-graph-49p1

<块引用>

AADSTS50013:断言签名验证失败。 [原因 - 的 提供的签名值与预期的签名值不匹配。, 客户端使用的密钥指纹:'XXXXXXXXXXXXXXXXXXXXXXXXXXX'

微软的文档很难用于应该是这样一个标准用例。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我之前回答过几个类似的问题。根本原因是断言中使用的访问令牌是用于 Microsoft Graph api 资源还是用于 web api 资源。您可以通过解析令牌以查看 aud 声明来确定令牌的颁发者。

如果您使用此访问令牌调用 Microsoft Graph api,则只需将 scope 设置为:https://graph.microsoft.com/.default

如果您使用访问令牌调用 web api(这是您在 Azure 门户中公开的 api),那么您需要将 scope 设置为:{{1} }.

请注意:作用域内只能放置一种类型的api资源。