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
]
我使用相同的密码登录组织邮件。但是我仍然收到此错误。而且我可以看到用户名在目录中可用。还授予了委派权限。有人可以解释我在想什么吗?
此错误的原因以下吗?
我已经使用以下方法在我的个人前景帐户中创建了该应用程序 https://apps.dev.microsoft.com,我正在尝试阅读组织邮件。
我们的组织正在使用单点登录
答案 0 :(得分:0)
这是您如何使用资源所有者密码凭据(ROPC)
来获取令牌的确切示例。第1步:
这样设置您的请求网址:
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或您的首选范围
请参见下面的屏幕快照,了解请求正文格式:
作为回应,我按预期获得了令牌。参见下图:
问题的可能原因:
个人帐户不能用于此代码流
如果您更改了应用程序的机密并尝试使用旧的机密,则可能会发生。
您的用户名和密码可能与当前租户不同。
您可以尝试上面的示例来按预期方式获取请求。您还可以检查azure门户以检查您的应用程序创建成功。欲了解更多信息,你可以看看 here
注意:您使用的个人帐户对此流程不正确。请参阅以下屏幕快照:有关详细信息,请参阅Microsoft官方文档here
答案 1 :(得分:0)
我们有一个Hydrid AD(Aprem到Azure广告),并且已将power bi嵌入到Web应用程序中。当我们尝试通过与Tenantid,client_id等一起调用https://login.microsoftonline.com/来获取访问令牌时,我们遇到了错误 错误”:“ invalid_grant”, “ error_description”:“ AADSTS50126:由于无效的用户名或密码,验证凭据时发生错误
当我们尝试另一个在Azure广告中完全创建用户的租户时,我们可以获取访问令牌。我们需要有一个公共ID来获取令牌并显示工作区中可用的报告。
如果用户是在Azure AD中创建的,则它不会在本地广告中同步,因此,我们无法将此用户分配给该工作区。
请帮助我们