gpt4 book ai didi

azure - 访问 token 验证失败。无效受众,office 365 Graph API

转载 作者:行者123 更新时间:2023-12-03 02:04:35 28 4
gpt4 key购买 nike

抱歉,我在尝试设置图形 API 时有点不知所措。我的最终目标是仅应用程序访问。当我尝试进行身份验证时,出现错误“访问 token 验证失败”。无效受众。

我的代码

import requests
tenant = 'widgetsinc'
token_request_url = 'https://login.microsoftonline.com/{}/oauth2/v2.0/token'.format(tenant)
auth_payload = {
'client_id': 'deaf-beef-cafe',
'scope': 'api://deaf-beef-cafe/.default',
'client_secret': 'hunter2',
'grant_type': 'client_credentials'
}


x = requests.post(token_request_url, data=auth_payload)
token = x.json()
print(token)

url = "https://graph.microsoft.com/v1.0/users"
payload={'Authorization':token['access_token']}

x = requests.post(url, headers=payload)

print(x.json())
exit()```

The result of print(token)

{'token_type': '承载者',“过期时间”:3599,'ext_expires_in':3599,'access_token':'已删除'}


the result of print(x.json())

{'错误': {'代码': 'InvalidAuthenticationToken','message': '访问 token 验证失败。无效观众。','内部错误':{'日期': '2023-01-25T00:38:48','请求 ID': '已删除','client-request-id': '这也被删除了'}}}```

我在网络用户界面中对我的应用程序的权限 permissions

最佳答案

{ 'error': { 'code': 'InvalidAuthenticationToken', 'message': 'Access token validation failure. Invalid audience.', 'innerError': { 'date':'2023-01-25T00:38:48', 'request-id': 'removed', 'client-request-id': 'this also removed' } } }

当您传递错误的范围或您的 token 具有错误的受众以在您的环境中调用 Microsoft Graph API 时,就会出现上述错误。根据MS-Document ,要获取访问 token ,您需要在范围内传递 https://graph.microsoft.com/.default

我尝试使用具有相同 api 权限的作用域 https://graph.microsoft.com/.default 使用相同的代码来让所有用户都收到错误:

API 权限:

enter image description here

代码:

import requests
tenant = '<tenant-id>'
token_request_url = 'https://login.microsoftonline.com/{}/oauth2/v2.0/token'.format(tenant)
auth_payload = {
'client_id': '<client-id>',
'scope': 'https://graph.microsoft.com/.default',
'client_secret': '<client secret>',
'grant_type': 'client_credentials'
}


x = requests.post(token_request_url, data=auth_payload)
token = x.json()
print(token)

url = "https://graph.microsoft.com/v1.0/users"
payload={'Authorization':token['access_token']}

x1 = requests.get(url, headers=payload)

token1=x1.json()
print(token1)

控制台:

enter image description here

要获取所有用户,您需要使用具有应用程序 API 权限的 User.read.all

API 权限:

enter image description here

控制台:

向应用程序添加 API 权限后,所有用户都可以成功执行代码。

enter image description here

引用: List users - Microsoft Graph v1.0 | Microsoft Learn

关于azure - 访问 token 验证失败。无效受众,office 365 Graph API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75228773/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com