MS Graph API:无效的身份验证令牌

问题描述 投票:7回答:5

我正在尝试使用Microsoft Graph API查询Outlook / O365邮箱中的邮件。我是Azure门户网站中的registered my app,并收到了查询API的必要信息。该应用程序具有Mail.Read权限。 (我无权访问Azure门户,我被告知它是以这种方式设置的。)但是,当我从OAuth端点获取令牌时,它在任何后续调用中都不起作用。我正在使用Python的请求模块进行测试。

为什么这个电话失败了?好像我传递了所有正确的信息,但我显然遗漏了一些东西。

我通过执行POST获取令牌:

https://login.microsoftonline.com/my.domain/oauth2/token

我传递了必要的参数:

data = {'grant_type': 'client_credentials', 'client_id': CLIENTID, 'client_secret': SECRET, 'resource': APPURI}

我收到这样的回复:

{
    'resource': 'APPURI',
    'expires_in': '3599',
    'ext_expires_in': '3600',
    'access_token': 'TOKENHERE',
    'expires_on': '1466179206',
    'not_before': '1466175306',
    'token_type': 'Bearer'
}

但是,我尝试使用该令牌,但它不适用于我所称的任何内容。我将它作为标题传递:

h = {'Authorization': 'Bearer ' + TOKEN}

我正在调用此网址:

url = 'https://graph.microsoft.com/v1.0/users/[email protected]/messages'

具体来说,我用这个:

r = requests.get(url, headers=h)

回复是401:

{
    'error': {
        'innerError': {
            'date': '2016-06-17T15:06:30',
            'request-id': '[I assume this should be removed for privacy]'
         },
         'code': 'InvalidAuthenticationToken',
         'message': 'Access token validation failure.'
     }
}
azure office365 microsoft-graph
5个回答
16
投票

在您的登录请求中,资源参数应为https://graph.microsoft.com


1
投票

我想你需要从这里注册app“https://apps.dev.microsoft.com”而不是Azure Portal。


1
投票

除非您使用的是Client Credentials,否则您无法访问其他帐户邮箱的邮件。确保[email protected]与您通过身份验证的帐户相同,并且此地址也是该帐户的userPrincipalName。

您还可以使用简化的URI来请求您的消息,并绕过使用userPrincipalName确定帐户的/me。在这种情况下,GET请求将是https://graph.microsoft.com/v1.0/me/messages


1
投票

似乎是这样的,从v1端点发出的令牌对于至少一些使用MS Graph API的请求是无效的。

而是通过调用https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token尝试从v2端点获取令牌。

如果您正在使用oidc发现文档,您将在https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration找到v2的文件


0
投票

值得注意的是,即使MS的Azure文档没有指定列出资源的需要,我也无法在没有列出资源的情况下开始工作。

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-oauth-client-creds

有一个补充文档,专门针对MS Graph的双腿Auth实际使用示例中的“资源”。

https://developer.microsoft.com/en-us/graph/docs/authorization/app_only

快乐狩猎!

© www.soinside.com 2019 - 2024. All rights reserved.