调用图形API时,承载令牌无效

时间:2019-03-17 14:28:18

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

我想在广告中查看有关我的用户的完整信息(组中的用户等)。 我已经有一个登录到AD的应用程序,然后获得了承载令牌,该令牌可以访问我的Azure区块链工作台API,并且一切正常。 Workbench 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 Active Directory用户基本信息特权。我还给了它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"

        }

    }

}

1 个答案:

答案 0 :(得分:3)

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

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

解码令牌

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