【问题标题】:Bearer token is not valid when calling the graph API调用图 API 时不记名令牌无效
【发布时间】:2023-11-28 09:34:02
【问题描述】:

我想在 AD 中查看有关我的用户的完整信息(组中的用户等...) 我已经有一个登录到 AD 的应用程序,然后我获得了一个可以访问我的 azure 区块链工作台 API 的不记名令牌,并且一切正常。 工作台 API 有一个用户端点,但信息有限,它有名字、姓氏、电子邮件等......我想知道更多。

当尝试使用我已经拥有的不记名令牌调用 https://graph.microsoft.com/v1.0/me 端点时,它是无效的,我得到:

{

    "odata.error": {

    "code": "Authentication_MissingOrMalformed",

    "message": {

        "lang": "en",

        "value": "Access Token missing or malformed."

    },

    "requestId": "47322d1e-24d5-4170-ace5-947a8725ec1c",

    "date": "2019-03-13T08:14:37"

    }

}

我也尝试了不同的方法。我有一个服务主体,并为此服务主体提供了有关用户权限的 Windows 活动目录基本信息。我还给了它一个 Microsoft Graph 权限以及 mu 区块链应用程序的权限(不确定我是否需要)。

我使用客户端凭据正文调用 https://login.microsoftonline.com/{{tenant-id}}/oauth2/token 并获得一个不记名令牌。现在有了这个不记名令牌,我得到:

{

    "error": {

        "code": "Authorization_RequestDenied",

        "message": "Insufficient privileges to complete the operation.",

        "innerError": {

            "request-id": "2a7febaa-a6db-4770-a323-1971fa0bf863",

            "date": "2019-03-17T13:54:57"

        }

    }

}

【问题讨论】:

    标签: active-directory azure-active-directory microsoft-graph-api microsoft-graph-sdks


    【解决方案1】:

    需要为 Microsoft Graph API 获取访问令牌作为资源。

    在第一种方法中,您已经拥有的用于 Workbench api 的令牌将不适用于 Microsoft Graph,因为该令牌适用于 Workbench API。您可以通过查看该令牌的 aud 声明来检查这一点。您可以使用https://jwt.ms 解码令牌

    在第二种方法中,令牌应该可以工作,只要您指定要获取令牌的资源是 https://graph.microsoft.com 而不是工作台 API。如果您仍然遇到问题,请分享您用于获取令牌的代码或解码后的令牌本身(减去任何敏感信息)

    【讨论】:

    • 最终第二种方法确实奏效了,我只需要授予更多与用户相关的访问权限,谢谢
    最近更新 更多