繁体   English   中英

Azure AD OAuth 中的“资源所有者密码凭据授予”问题

[英]Issue with "Resource owner password credentials grant" in Azure AD OAuth

无法通过直接传递用户名和密码来获取访问令牌

端点: https ://login.microsoftonline.com/ {tenant_id}/oauth2/token

grant_type: password
client_id: APPLICATION_ID
resource: https://graph.microsoft.com/.default
username: <username@microsoft.com>
password: <password>
Scope : openid

应用程序在https://apps.dev.microsoft.com/中创建

获取无效授权错误:

{
"error": "invalid_grant",
"error_description": "AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: 1ff96bc3-29c8-48f1-b7cc-f77c01525500\r\nCorrelation ID: 9821fdf5-25dc-4b07-84b3-f084194ea123\r\nTimestamp: 2018-09-14 20:04:01Z",
"error_codes": [
    70002,
    50126
],
"timestamp": "2018-09-14 20:04:01Z",
"trace_id": "1ff96bc3-29c8-48f1-b7cc-f77c01525500",
"correlation_id": "9821fdf5-25dc-4b07-84b3-f084194ea123"
}

令牌响应

您似乎没有授予您的应用程序的权限。 确保将所有用户添加到应用程序并确保您具有正确的 web.config 参数。

此外,请确保用于连接托管域的用户名和密码正确。 在使用不正确的用户之前,我已经收到此错误。 普通的 azure 全局管理员用户可能无法进行身份验证。 您需要确保您使用的是 CSP 管理员用户。

更新

看起来这里有不止一个问题在起作用。

  1. 您正在使用 Azure AD 令牌端点,但错误地向 Azure AD B2C 注册了您的应用程序(所以案例 2 根据我的原始答案)。

  2. 现在,在更正那个之后,您应该为这个在 Azure AD 中注册的新应用程序使用 clientid 和客户端密码。

  3. 确保您已在 Azure AD 中的“所需权限”下为您的应用程序添加 Microsoft Graph 权限,并在选择适当权限的最后,确保您按下“授予权限”按钮以表示同意。

  4. 查看您收到的错误消息和代码(invalid_grant 和“AADSTS70002:验证凭据时出错。AADSTS50126”),我用我自己的测试应用程序从 Postman 中尝试了与您完全一样的 ROPC,并尝试了多种不同的传递错误输入的组合,但是您看到的确切错误代码仅出现在我的密码或用户名不正确的情况下(如消息所述:))。 在所有其他情况下,错误代码将有所不同。

在此处输入图像描述

因此,对于用户名 - 确保提供完全限定名称,例如 rohitsaigal@mydomain.onmicrosoft.com

密码 - 很明显。

根据上面的说明再试一次,让我们看看它是如何进行的。

原始答案

应用程序在https://apps.dev.microsoft.com/中创建

这意味着您的应用程序已向 Azure AD B2C 注册。

您注册应用程序的位置与您使用的令牌端点不匹配。

案例 1 - 您希望使用 Azure AD B2C

资源所有者密码凭据授予仍处于公共预览阶段,您需要按照 Microsoft 在此处提供的说明进行操作 -

在 Azure AD B2C 中配置资源所有者密码凭据流

您将点击以获取令牌的端点也将与您提到的端点不同。

https://yourtenant.b2clogin.com/<yourtenant.onmicrosoft.com>/oauth2/v2.0/token?p=B2C_1_ROPC_Auth

案例 2 - 您希望使用 Azure AD B2B

在这种情况下,您使用正确的端点来获取令牌,但是您错误地使用 Azure AD B2C 注册了您的应用程序,您需要更改它并从 Azure 门户注册您的应用程序。

此处的说明和详细信息 - 将应用程序与 Azure Active Directory 集成

以防万一您需要了解 Azure AD B2B 与/s B2C 之间的差异 - 请查看此 SO Post

这是另一个有用的SO 帖子,提供有关通过 Azure 门户 v/s https://apps.dev.microsoft.com注册应用程序的信息(新应用程序注册门户)

这适用于 https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-ropc-policy?tabs=app-reg-ga&pivots=b2c-user-flow

但请记住,存在以下限制:

  • 密码过期或需要更改时不能使用。
  • 不支持 MFA
  • 不支持社交登录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM