azure - 带有 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'
微软的文档很难用于应该是这样一个标准用例。任何帮助将不胜感激。
解决方案
我之前回答过几个类似的问题。根本原因是断言中使用的访问令牌是用于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 资源。
推荐阅读
- java - 通过 Android 套接字发送和接收字节的两个问题:
- c# - 在同一列中分组不同的值
- php - 如何在 WordPress 主题中修复 index.php 上的“id=error-page”默认值
- mongodb - 如何判断 document.save 是否在猫鼬中进行?
- node.js - Selenium使用nodejs单击一组equals元素中的特定元素
- java - spring.config.additional-location 不适用于绝对/相对父目录
- android - 在数字 EditText 中附加特殊字符
- python - 更新 tkinter 中的标签
- python-3.x - 如何访问集合元素的元素?
- c# - 无法将自定义用户数据添加到脚手架 ASP.NET Core 项目