【问题标题】:Invalid request. Request is malformed or invalid. While getting Access Token From Azure无效的请求。请求格式错误或无效。从 Azure 获取访问令牌时
【发布时间】:2020-05-15 20:15:04
【问题描述】:

我正在尝试从 Azure AD 获取访问令牌。为此,我执行了以下步骤

1) 在 Azure Active Directory 上创建企业应用程序

2) 我可以使用授权获取访问令牌 --->> '获取新访问令牌'

3) 点击https://login.microsoftonline.com/<Application ID>/oauth2/token URL 的“POST”请求

已为 POST 正文进行了以下配置

  • 授权类型为 OAuth 2.0
  • 使用“表单数据”传递正文,如下所示

ClientID 是第一步创建的应用程序的 ApplicationID

代码也是第一步创建的应用程序的 ApplicationID

不确定我是否配置正确

4) 当我尝试发送请求时使用相同的访问代码,我得到以下错误响应

`{
    "error": "invalid_grant",
    "error_description": "AADSTS9002313: Invalid request. Request is malformed or invalid.\r\nTrace ID: 60b8fb68-40d5-43da-9b7b-36de021c2900\r\nCorrelation ID: 90ed2f2c-1ac8-4044-8742-493a3fce51be\r\nTimestamp: 2019-07-03 12:42:32Z",
    "error_codes": [
        9002313
    ],
    "timestamp": "2019-07-03 12:42:32Z",
    "trace_id": "60b8fb68-40d5-43da-9b7b-36de021c2900",
    "correlation_id": "90ed2f2c-1ac8-4044-8742-493a3fce51be"
}

请让我知道我错在哪里或需要更改。

【问题讨论】:

  • 如果我的答案对你有用,你可以接受它作为答案。

标签: azure oauth-2.0 azure-active-directory azure-ad-graph-api


【解决方案1】:

我遇到了同样的问题,最后发现我的问题是重定向uri中授权后返回的代码实际上是www.yourredirecturl.com/?code=....&section_state=....

所以在?code= 之后复制整个内容,简单地包含&section_state 并使code 不正确。希望这能解决您的问题。

【讨论】:

  • 让 code=location.search.split('code=')[1];代码=code.split('&')[0]; //添加这个
【解决方案2】:

如果我没记错,您正在尝试使用OAuth 2.0 code grant flow 获取令牌。

对于这个代码流有两个步骤:

  1. 请求授权码
  2. 使用此授权码需要请求令牌

获取授权码

您在浏览器或 post man 中粘贴以下代码。在邮递员中执行如下操作:

https://login.microsoftonline.com/YourTennatId.onmicrosoft.com/oauth2/authorize?client_id=YourClentId&response_type=code&redirect_uri=https://www.getpostman.com/oauth2/callback&response_mode=query&scope=offline_access%20user.read%20mail.read

获得授权码后,将其复制以进行下一步。

使用授权码请求访问令牌:

Token Request Endpoint: https://login.microsoftonline.com/YourTenantId/oauth2/token

client_id:YourClientId
scope:https://graph.microsoft.com/User.ReadWrite.All
redirect_uri:https://www.getpostman.com/oauth2/callback
grant_type:authorization_code
client_secret:YourAppsSecret
code:Paste Your Code Here

邮差格式:

希望这能解决您的问题。

【讨论】:

  • 在进行上述授权代码调用时,我是否需要在 azure 中进行有效订阅?在我的代码中实际实现之前,我正在做这个概念证明。 ??
  • 是的,你需要那个。在这种情况下可能无法获得令牌。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 2022-01-05
  • 2011-10-25
  • 2013-08-10
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多