Microsoft Graph Authentication错误AADSTS70000 code_verifier与code_challenge不匹配

时间:2017-08-15 21:05:52

标签: microsoft-graph

我有多个页面通过Microsoft Graph进行身份验证。一个人不工作。它返回(400) Bad Request,其error_description为AADSTS70000: The provided 'code_verifier' input value does not match the original 'code_challenge.'

所有重定向网址都在我的Microsoft应用程序下定义。除了URI,它们是相同的。

我找不到任何实际上说出code_verifiercode_challenge的含义的内容。由于我从未通过这些名称传递任何参数,因此它们必须指的是在登录之前和之后传递的其中一个参数。但我真的需要知道他们所指的是什么,所以我可以试着弄清楚真正的问题是什么。

我看过几篇帖子声称需要使用尾随斜杠,但我的任何重定向URI都没有这个帖子,而且大多数都有效。

以下是发起请求:

href="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={redacted}&response_mode=form_post&response_type=code&redirect_uri=https://wrmatthiesen.com/ApprovedContact/InviteeSignup.aspx&scope=openid offline_access User.Read Calendars.ReadWrite Contacts.Read Mail.Send& nonce=mauth:-6:Y:Y;1b803d44-f70b-4fed-b6c3-bc3afdb55646& state=mauth:-6:Y:Y;1b803d44-f70b-4fed-b6c3-bc3afdb55646"

收到代码后,这是跟进请求:

code=Mabb3f2bb-25b0-8e3b-541e-9763dd1e4136&redirect_uri=https%3a%2f%2fwrmatthiesen.com%2fApprovedContact%2fInviteeSignup.aspx&grant_type=authorization_code&client_id={redacted}&client_secret={redacted}&scope=openid+offline_access+User.Read+Calendars.ReadWrite+Contacts.Read+Mail.Send

2 个答案:

答案 0 :(得分:0)

1)您的初始请求包括几个包含特殊字符的未编码字符串。

2)您的查询字符串有几个空格:& nonce& state

您的第一个网址应如下所示:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=00000000-0000-0000-0000-000000000000&response_mode=form_post&response_type=code&redirect_uri=https://wrmatthiesen.com/ApprovedContact/InviteeSignup.aspx&scope=openid+offline_access+User.Read+Calendars.ReadWrite+Contacts.Read+Mail.Send&nonce=mauth%3A-6%3AY%3AY%3B1b803d44-f70b-4fed-b6c3-bc3afdb55646&state=mauth%3A-6%3AY%3AY%3B1b803d44-f70b-4fed-b6c3-bc3afdb55646

这里的组件是:

  • client_id:00000000-0000-0000-0000-000000000000
  • response_mode:form_post
  • response_type:code
  • redirect_uri:https%3A%2F%2Fwrmatthiesen.com%2FApprovedContact%2FInviteeSignup.aspx
  • 范围:openid+offline_access+User.Read+Calendars.ReadWrite+Contacts.Read+Mail.Send
  • nonce:mauth%3A-6%3AY%3AY%3B1b803d44-f70b-4fed-b6c3-bc3afdb55646
  • 州:mauth%3A-6%3AY%3AY%3B1b803d44-f70b-4fed-b6c3-bc3afdb55646

在第二个电话中,您的POST正文看起来正确无误:

  • 代码:Mabb3f2bb-25b0-8e3b-541e-9763dd1e4136
  • redirect_uri:https%3A%2F%2Fwrmatthiesen.com%2FApprovedContact%2FInviteeSignup.aspx
  • grant_type:authorization_code
  • client_id:00000000-0000-0000-0000-000000000000
  • client_secret:00000000-0000-0000-0000-000000000000
  • 范围:`openid + offline_access + User.Read + Calendars.ReadWrite + Contacts.Read + Mail.Send

答案 1 :(得分:0)

我一直在传入一个nonce参数,因为我一直这样做。为了方便起见,我让它与我的状态参数匹配。在这种情况下,我的现时看起来像这样:" nonce = mauth:-6:Y:Y; b5a41fdb-4b42-494e-85e1-8c193006d444"。

除了" mauth:"之外我放弃了所有内容,它起作用了。

然后我把nonce放在一起,它仍然有效。所以,就目前而言,我不会传递现有的。