如何在没有用户的情况下获得访问权限

时间:2020-01-02 06:39:53

标签: azure-active-directory office365 microsoft-graph token

我正在尝试遵循此Get access without a user来获取访问令牌。我正在使用API​​请求 https://login.microsoftonline.com/ <-tenant-id-> / oauth2 / token 获得访问令牌。当我对上面给定的链接使用步骤5时,出现以下错误:

{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure. Invalid audience.",
"innerError": {
  "request-id": "e9e9820e-2a3f-411a-bc77-760c9369fc8f",
  "date": "2020-01-02T06:17:41"
}
}
}

我已经注册了具有以下权限的应用:Calendars.Read,Calendars.ReadWrite,Sites.Read.All,User.Read,User.Read.All,并已生成秘密密钥,并将重定向URL注册为: User.Read.All。

我的问题是: 1.在创建应用程序时我做错了什么吗? 2.为什么第4步的链接无效? 3.使用上述给定的api请求是否获得了错误的访问权限?

1 个答案:

答案 0 :(得分:2)

在第5步中,它将调用Microsoft Graph-Get a user,因此请确保您的应用具有Microsoft Graph中的User.Read.All应用许可(必须为application许可,而不是{{1 }}权限),添加权限后,如下所示(注意:请不要忘记单击“授予管理员同意”按钮)

enter image description here

enter image description here

enter image description here

在您提供的文档中,它使用v2.0端点delegated,但在问题中使用v1.0端点/oauth2/v2.0/token

因此,请将请求URL更改为/oauth2/token,然后使用下面的URL。

请求网址:

/oauth2/v2.0/token

请求正文:

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

您可以在postman中获得令牌。

enter image description here

然后使用令牌调用Get a user API:

client_id=xxxxxxxxxxxxxxx
&scope=https://graph.microsoft.com/.default
&client_secret=xxxxxxxxxxxxxxxx
&grant_type=client_credentials

enter image description here