我正试着点击一个post请求来“https://login.microsoftonline.com/<my_tenat_id>/oauth2/token“来自我的java代码,但我收到错误“invalid_grant:aadsts50126:由于用户名或密码无效,验证凭据时出错”。我已经验证了凭据,它们是正确的(我可以登录到azure门户并查看我的aws应用程序的sso)。我甚至试着从 Postman 那里得到同样的请求,但也有同样的问题。
我传递的参数是:“grant\u type”、“password”“requested\u token\u type”urn:ietf:params:oauth:令牌-type:saml2“username”,username“password”,password“client\u secret”,clientsecret“client\u id”,clientid“resource”,clientid
我甚至检查了各种微软文档,但我仍然无法解决这个问题。谁能告诉我问题出在哪里。是api调用错误还是服务器设置错误。
拜托note:-initially my api调用正在工作,但随后我得到一个错误无效的\u请求:aadsts80014然后它自动得到解决,我开始得到无效的\u授权:aadsts50126。有没有人遇到过这个问题,或者知道如何解决这个问题。谢谢!
1条答案
按热度按时间1l5u6lss1#
我可以通过创建一个云用户来解决这个问题。联合用户使用资源所有者密码授予流失败的原因是,对于联合用户,azure ad必须将用户重定向到属于该用户的on prem域的特定联合服务器,以便adfs服务器可以通过本地域控制器获得身份验证。在资源所有者密码授予流中,此重定向是不可能的,因此无法验证用户名和密码,因此出现错误。
作为一个建议,我们可以创建一个新的仅云用户,其用户名和密码应该驻留在azuread中,以便在使用资源所有者密码授予流时,我们提交用户的凭据,aad可以在不进行任何重定向的情况下对用户进行身份验证。
此用户可以是aad中的普通用户,并且相应的委派权限应存在于应用程序注册中。现在需要确保的是,如果我们提供的委托权限需要管理员同意,那么在用户登录到应用程序之前,管理员必须对此委托权限提供管理员同意。如果我们想让用户提供他/她自己的同意(如果委派的权限需要用户同意),那么在继续执行资源所有者密码授予流之前,我们必须以某种方式提供用户同意。