【问题标题】:invalid_grant: AADSTS50126: Error validating credentials due to invalid username or passwordinvalid_grant:AADSTS50126:由于用户名或密码无效,验证凭据时出错
【发布时间】:2021-01-29 20:59:18
【问题描述】:

我试图从我的 Java 代码中向https://login.microsoftonline.com/<My_Tenant_Id>/oauth2/token 发送一个发布请求,但我收到了错误“invalid_grant: AADSTS50126: 由于用户名或密码无效而验证凭据时出错”。我已经验证了凭据并且它们是正确的(我能够登录到 Azure 门户并查看我的 AWS APP for SSO)。我什至尝试从邮递员那里获得相同的请求,但也遇到了同样的问题。

我传递的参数是:

"grant_type", "password"
"requested_token_type","urn:ietf:params:oauth:token-type:saml2"
"username", username
"password", password
"client_secret", clientSecret
"client_id", clientId
"resource", clientId

我什至检查了各种 Microsoft 文档,但仍然无法解决问题。 任何人都可以告诉可能是什么问题。是 API 调用错误还是服务器设置错误。

请注意:最初我的 API 调用正常,但后来我收到一个错误 invalid_request: AADSTS80014 然后它自动得到解决,我开始收到 invalid_grant: AADSTS50126。有没有人遇到过这个问题或知道如何解决这个问题。谢谢!

【问题讨论】:

  • 我使用与您相同的请求正文。但它对我来说很好。您能否提供 Postman 中请求的屏幕截图(包括请求正文和响应)?记得删除截图中的租户 ID、客户端 ID、客户端密码、用户名和密码。
  • 在这个问题上您还需要帮助吗?
  • 嗨,艾伦,我现在可以解决这个问题了。我为资源所有者密码授予流程创建了一个仅限云的用户,它按预期工作。谢谢!
  • 很高兴知道这一点。您介意添加答案以帮助他人吗?

标签: java azure oauth-2.0 azure-active-directory single-sign-on


【解决方案1】:

我可以通过创建仅限云的用户来解决此问题。联合用户使用资源所有者密码授予流程失败的原因是,对于联合用户,Azure AD 必须将用户重定向到属于用户的本地域的特定联合服务器,以便 ADFS 服务器可以关闭身份验证与本地域控制器。在资源所有者密码授权流程中,此重定向是不可能的,因此它无法验证用户名和密码,从而导致该错误。

作为建议,我们可以创建一个新的仅云用户,其用户名和密码应驻留在 Azure AD 中,以便在使用资源所有者密码授予流程时,我们提交用户的凭据,AAD 无需任何重定向即可对用户进行身份验证。

此用户可以是 AAD 中的普通用户,并且相应的委派权限应存在于应用注册中。现在要确保的另一件事是,如果我们提供的委派权限需要管理员同意,那么在用户登录应用程序之前,管理员必须向此委派权限提供管理员同意。如果我们希望用户提供他/她自己的同意(如果委派的权限需要用户同意),那么我们必须在继续资源所有者密码授予流程之前以某种方式提供用户同意。

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多