【问题标题】:Azure REST API - 401 error when calling List Applications (GraphRBAC) focus ModeAzure REST API - 调用列表应用程序 (GraphRBAC) 焦点模式时出现 401 错误
【发布时间】:2018-10-25 18:22:02
【问题描述】:

我正在尝试使用 Azure REST API 测试可能的艺术,但我偶然发现了一个奇怪的问题

我无法列出应用程序,这对我们来说实际上很重要,因为我们正在尝试自动化其中的一些。

https://docs.microsoft.com/en-us/rest/api/graphrbac/applications/list

如果我尝试使用“试用”链接,我会收到 401 错误

{
  "odata.error": {
    "code": "Authentication_MissingOrMalformed",
    "message": {
      "lang": "en",
      "value": "Access Token missing or malformed."
    },
    "requestId": "a9758d8f-194f-4089-afd9-4b1d3ffb21d7",
    "date": "2018-10-25T18:22:46"
  }
}

请求确实有一个不记名令牌,我可以使用 Fiddler 看到它。

如果我尝试列出 Web 应用程序,它可以正常工作

https://docs.microsoft.com/en-us/rest/api/appservice/webapps/list

为了记录,用户是全局管理员

有什么想法吗?

TIA

【问题讨论】:

    标签: rest azure azure-active-directory microsoft-graph-api azure-ad-graph-api


    【解决方案1】:

    正如错误所说,问题在于所提供的令牌。您可以轻松检查解码后的令牌,并在 https://jwt.mshttps://jwt.io 等工具中查看确切声明

    我认为这可能是'aud' i.e. audience claim 的问题,因为您提到该令牌适用于列表 Web 应用程序 API,但不适用于列表应用程序。

    在列出 Web 应用程序的情况下,您可能正在获取诸如 https://management.core.windows.net/ 之类的资源的令牌,因此获取的令牌的 'aud' 也将获得相同的值。

    在获取列表应用程序调用的令牌时,检查您指定的 resource 的值。由于您尝试调用 Azure AD Graph API.. 资源值应为 'https://graph.windows.net'。任何其他值都可能导致此类问题。

    如果受众价值正确,但您仍然面临问题,请编辑您的问题以包含更多详细信息/实际代码,与您如何获取相关令牌有关。

    【讨论】:

    • 你是对的,但我无法控制微软提供的东西。在我的代码中,在设置了正确的受众后,即graph.windows.net 而不是 .com D'oh,我收到了一条更有趣的消息,即“权限不足,无法完成操作”,但发布令牌的应用程序具有 Owner 角色困惑...
    • 现在您已经更正了资源/受众。这看起来像是第二个问题。确保您的应用程序具有访问 Azure AD Graph API 的权限。您是直接作为应用程序获取令牌(即您使用应用程序权限)还是作为用户获取令牌(即尝试使用委派权限)..您需要相应地在 Azure AD 应用程序注册中的应用程序设置下设置所需的权限..
    • 我设置了错误的权限。当我真正需要 Windows Azure Active Directory 时,我已经授予了 Microsoft Graph 的权限
    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2021-07-04
    • 2021-12-02
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多