【问题标题】:ROPC - Getting "invalid_grant" error with description as "AADSTS50126: Invalid username or password"ROPC - 出现“invalid_grant”错误,描述为“AADSTS50126:用户名或密码无效”
【发布时间】:2020-10-30 03:05:00
【问题描述】:
POST /{{AAD}}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 611fa720-e1f4-5bbc-e0f7-b7620bab24af

client_id={{client_id}}
&username=username@domain.com
&password={{password}}
&grant_type=password
&scope=https%3A%2F%2Fgraph.microsot.com%2FMail.Read
&redirect_uri=https%3A%2F%2Flocalhost%3A1234

对于上述请求,我得到了类似的响应,

"error": "invalid_grant",
    "error_description": "AADSTS50126: Invalid username or password.\r\nTrace ID: a0bd31e0-59e3-4836-b654-8e449d491c00\r\nCorrelation ID: de329d02-e714-48bb-a876-387167034ba3\r\nTimestamp: 2019-03-05 11:12:51Z",
    "error_codes": [
        50126
    ]

我使用相同的密码登录组织邮件。但我仍然收到此错误。我可以看到用户名在目录中可用。还授予委派权限。有人能解释一下我错过了什么吗?

出现此错误的原因有哪些?

  1. 我已在我的个人 Outlook 帐户中使用 https://apps.dev.microsoft.com 我正在尝试阅读组织邮件。

  2. 我们的组织正在使用单点登录

【问题讨论】:

  • 如果您对此有任何疑问,请随时在此评论中写下。

标签: oauth-2.0 azure-active-directory


【解决方案1】:

以下是使用 资源所有者密码凭据 (ROPC) 获取令牌的确切示例

第 1 步:

像这样设置您的请求 URL:

https://login.microsoftonline.com/YourTenantName/TenantID.onmicrosoft.com/oauth2/v2.0/token

查看屏幕截图

您可以在您的 Azure 门户顶部获取您的租户名称。来看看

屏幕截图如下:

第 2 步:

请求头格式

第 3 步:

根据您的申请信息设置您的请求正文,格式如下:

client_id:您的客户 ID

client_secret:您的应用程序密码

用户名:此应用程序的用户名

密码:此应用程序的密码

grant_type:密码

范围:https://graph.microsoft.com/.default 或您的首选范围

请参阅下面的屏幕截图以了解请求正文格式:

作为回应,我按预期得到了我的令牌。见下图:

问题的可能原因

  1. 个人账户不能用于此代码流

  2. 如果您更改了应用程序密码并尝试使用旧密码,则可能会发生这种情况。

  3. 您的用户名和密码可能与当前租户不同。

您可以尝试上面的示例来按预期获取您的请求。您还可以检查 azure 门户以检查您的应用程序是否已成功创建。有关更多信息,您可以查看 here

注意:您使用的个人帐户不适合此流程。看下面的截图:详细可以看微软官方文档here

【讨论】:

  • 感谢您的回答。我已经尝试将用户名设置为 username@org_domain.onmicrosoft.com 并得到 AADSTS50034: The user account Microsoft.AzureAD.Telemetry.Diagnostics.PII does not exist in the {{AAD}} directory ,所以我使用了 username@orgdomain.com。我已经设置了新的应用程序密码和密码,并尝试使用新的凭据。仍然面临这个问题。
  • 仅供参考,我仅使用 azure 目录用户列表中的合格用户名
  • @Ray 我已经更新了答案,你现在可以试试。您不能将个人帐户用于此代码流。谢谢
猜你喜欢
  • 2019-05-19
  • 2015-12-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多