首页 > 解决方案 > 尝试使用来自外部域的用户名更改本地 Azure AD B2C 用户的密码时出现错误 AADSTS50034

问题描述

我正在为我的 Angular 6 前端应用程序开发 Azure AD B2C,并使用 Microsoft Graph API 来更改登录用户的密码。我正在access_token使用授权码流程。

当用户有一个用户名时它工作正常xyz@myb2cname.onmicrosoft.com,我得到一个access_token然后调用https://graph.microsoft.com/v1.0/users/{id}/changePassword

但是,当我尝试对用户名如xyz@gmail.comor的用户执行相同操作abc@hotmail.com时,在获取access_token from 授权码流 ( grant_type=password) 时出现错误。注意:这些用户是我的 AAD B2C 租户中的“本地”帐户

以下是我收到的错误消息:

{
    "error": "invalid_grant",
    "error_description": "AADSTS50034: To sign into this application the account must be 
                          added to the myb2cname.onmicrosoft.com directory.
                          Trace ID: 8fcae061-5088-4393-9e5b-d0a83d1d0a00
                          Correlation ID: 0dc6c906-c54b-4cd8-ae8b-46f3f6118e40
                          Timestamp: 2018-08-01 06:16:55Z",
    "error_codes": [
        50034
    ],
    "timestamp": "2018-08-01 06:16:55Z",
    "trace_id": "8fcae061-5088-4393-9e5b-d0a83d1d0a00",
    "correlation_id": "0dc6c906-c54b-4cd8-ae8b-46f3f6118e40"
}

当用户名看起来像或时,如何调用changePassword使用电子邮件身份提供商(登录-注册策略)登录的用户?xyz@gmail.comabc@hotmail.com insteadxyz@myb2cname.onmicrosoft.com

标签: microsoft-graph-apiazure-ad-b2c

解决方案


这是预期的行为。在实施之前,您需要清楚地了解 AD。

在 Azure AD 中,要根据目录对用户进行身份验证,用户应该是 Active Directory 的一部分。不属于 Active Directory 的用户将不会被验证。仅当用户通过身份验证时才会生成令牌。

尝试为不属于 Active Directory 的用户生成令牌类似于使用无效用户帐户登录 Azure 门户。


推荐阅读