获取访问令牌时出现invalid_grant错误

时间:2019-06-27 22:39:11

标签: azure-active-directory microsoft-graph azure-ad-b2c

我正在尝试建立一个网站,用户可以在其中通过Azure AD B2C登录。登录后,我尝试提供一个安全区域,用户可以在其中通过Microsoft Graph API更改其Azure B2C用户属性(名字,姓氏等)。

我正尝试跟着Get a Token documentation

一切正常,直到第3步为止,在该步骤中,使用我在返回URL上收到的代码呼叫https://login.microsoftonline.com/common/oauth2/v2.0/token以获得access_token

这是我正在做的一般流程:

  1. 最终用户单击我的本地主机站点上的登录链接,该链接链接到我的Azure B2C租户策略。链接看起来像这样:
https://login.microsoftonline.com/mytenantname.onmicrosoft.com/oauth2/v2.0/authorize
?client_id=[MyAppID]
&response_type=code+id_token
&redirect_uri=http%3A%2F%2Flocalhost%3A17000%2Fprocessing%2Findex
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.write
&state=[MyCustomState]&p=[MyCustomPolicy]
  1. 用户登录并重定向到redirect_uri

  2. redirect_uri成功接收了codeid_tokenstate的值。

  3. 我从中获取code值,并使用以下正文提出POST https://login.microsoftonline.com/common/oauth2/v2.0/token请求:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
HTTP/1.1

grant_type=authorization_code
&code=[code]
&client_secret=[application secret]
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.readwrite
&redirect_uri=http%3A%2F%2Flocalhost%3A17000%2Fprocessing%2Findex
  1. 我从该端点收到的响应代码是上面的错误消息。
{
  "error": "invalid_grant",
  "error_description": "AADSTS9002313: Invalid request. Request is malformed or invalid.\r\nTrace ID:6d7a8e32-bcbf-4fc4-a37a-87dae4781b00\r\nCorrelation ID:252912b7-5775-491a-968f-00ab03696dd9\r\nTimestamp: 2019-06-2722:11:18Z",
  "error_codes": [9002313],
  "timestamp": "2019-06-27 22:11:18Z",
  "trace_id": "6d7a8e32-bcbf-4fc4-a37a-87dae4781b00",
  "correlation_id": "252912b7-5775-491a-968f-00ab03696dd9"
}

其他StackOverflow帖子提到要验证redirect_uri是否必须在初始登录和后续的access_token请求之间匹配。它们看起来与我相同,但是我仍然收到错误。

任何想法可能出什么问题吗?

1 个答案:

答案 0 :(得分:0)

似乎您正在尝试使用Authorization Code Grant V2.0

获取访问令牌
  

您的请求与Authorization Code Grant V2.0格式不匹配,并且您遇到了该错误。

您应该为Authorization Code Grant V2.0发送令牌请求,如下所示:

Token Endpoint: `https://login.microsoftonline.com/common/oauth2/v2.0/token` 

client_id:b603c7be-_YourApp_ID-e6921e61f925 

scope:https://graph.microsoft.com/User.ReadWrite.All 

redirect_uri:https://www.getpostman.com/oauth2/callback 

grant_type:authorization_code 

client_secret:Vxf1SluKbgu4P_YourAppSecret_DSeZ8wL/Yp8ns4sc= 

code:OAQABAAIAAADCoMpjJXrxTq9VG9te-7FXrnBIp82sWR1nC

有关详细信息,请参见屏幕截图:

enter image description here