【问题标题】:Azure AD OAuth Access Token Request ::: 400 - Bad RequestAzure AD OAuth 访问令牌请求 ::: 400 - 错误请求
【发布时间】:2015-05-22 21:54:30
【问题描述】:

我有一个基于 Laravel 5 / Socialite 构建的 php Web 应用程序,我正在尝试使用 Windows azure AD OAuth 流实现 SSO 解决方案,但我得到一个通用的“400 Bad Request Error " 在对访问令牌的第二个 OAuth 请求上。
对 office 365 授权 URL 的第一个请求成功并向我的应用程序返回一个授权代码,但是当我尝试获取用户访问令牌时它失败了。

我已经检查并重新检查了我的请求,并且据我所知,它似乎是正确的:

POST https://login.windows.net/common/oauth2/token

标题

Host:login.windows.net
Content-type:application/x-www-form-urlencoded
User-Agent: wTrack/.001
Date: Thu, 21 May 2015 02:48:43 GMT 

身体

client_id=1ad9f025-dfaf-4cb7-a9ff-29ea619bab44&
client_secret=<secret>&
code=<code>&
redirect_uri=https%3A%2F%2Fwtrack.dev%2Flogin%2Fmicrosoft&
grant_type=authorization_code

我研究这个已经有一段时间了。任何可以提供的帮助将不胜感激。

【问题讨论】:

  • 通常状态为 400 的响应包含带有解释性消息的 JSON。如果存在,请您检查并发布吗?
  • 感谢@Igor 的建议。一旦我知道 JSON 信息在那里,我就四处寻找直到找到它:) 结果我收到了错误,因为我没有在 POST 请求的正文中包含 resource 参数。

标签: php azure oauth office365


【解决方案1】:

确保您的redirect_uri 与您用于授权码请求的redirect_uri 相同。另外,您可以尝试在请求正文中添加resource 参数。

【讨论】:

  • 问题是我没有在 POST 正文中包含 resource 参数(即使文档说它是可选的)。我没有发现这一点,因为 Socialite/Guzzle 库在其通用错误日志中不包含相关错误,直到通过 catch 暴露出来。我现在收到另一个错误:AADSTS90027: The client '...' and resource '...' identify the same application 的地址是here,但对我来说似乎不是一个很好的解决方案。谢谢推荐。
  • 你弄明白了吗?我有同样的问题:stackoverflow.com/questions/38648978/…
猜你喜欢
  • 2016-12-03
  • 2020-07-05
  • 2022-01-05
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多