我有多个页面通过Microsoft Graph进行身份验证。一个人不工作。它返回(400) Bad Request
,其error_description为AADSTS70000: The provided 'code_verifier' input value does not match the original 'code_challenge.'
所有重定向网址都在我的Microsoft应用程序下定义。除了URI,它们是相同的。
我找不到任何实际上说出code_verifier
和code_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
答案 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
这里的组件是:
00000000-0000-0000-0000-000000000000
form_post
code
https%3A%2F%2Fwrmatthiesen.com%2FApprovedContact%2FInviteeSignup.aspx
openid+offline_access+User.Read+Calendars.ReadWrite+Contacts.Read+Mail.Send
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
https%3A%2F%2Fwrmatthiesen.com%2FApprovedContact%2FInviteeSignup.aspx
authorization_code
00000000-0000-0000-0000-000000000000
00000000-0000-0000-0000-000000000000
答案 1 :(得分:0)
我一直在传入一个nonce参数,因为我一直这样做。为了方便起见,我让它与我的状态参数匹配。在这种情况下,我的现时看起来像这样:" nonce = mauth:-6:Y:Y; b5a41fdb-4b42-494e-85e1-8c193006d444"。
除了" mauth:"之外我放弃了所有内容,它起作用了。
然后我把nonce放在一起,它仍然有效。所以,就目前而言,我不会传递现有的。