首页 > 解决方案 > 带有 Azure AD 访问令牌的 Azure 函数

问题描述

我正在构建一组自定义 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:断言签名验证失败。[原因 - 提供的签名值与预期的签名值不匹配。,客户端使用的密钥指纹:'XXXXXXXXXXXXXXXXXXXXXXXXXX'

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

标签: azureazure-active-directoryazure-functions

解决方案


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

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

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

请注意:您只能在范围内放置一种类型的 api 资源。


推荐阅读