首页 > 解决方案 > 无法通过 Graph API 重置 B2C 帐户密码创建

问题描述

希望有人可以对以下问题有所了解;

我有一个使用 Azure B2C 对用户进行身份验证的 Angular 和 .Net 核心 Web API 应用程序。用户帐户由用户自己通过登录/注册自定义策略创建,或者管理员可以使用 Graph API 通过应用程序创建帐户。

由于要求,该应用程序使用用户名(而不是电子邮件地址)登录应用程序。到目前为止,除了以下情况外,我已经设法使一切正常:

通过 Graph API 创建帐户时,该帐户的所有者无法重置该帐户的密码。错误是“找不到提供的用户 ID 的帐户”。

通过自定义注册策略创建的帐户并非如此,因此我进行了一些比较,发现对于通过 Graph API 创建的那些帐户,电子邮件丢失(可以在用户 -> 身份验证方法下找到)。我查看了填充该字段,但似乎“邮件”属性是“只读”(不确定这是否是正确的属性)。

目前,我必须通过 Azure 手动设置电子邮件,以便在必要时由其所有者重置这些帐户的密码。这显然不理想,想看看是否有人可能已经解决了这个问题,或者至少得到确认这确实是 Graph API 的限制。

在此先感谢您的帮助

标签: azure-ad-b2cazure-ad-graph-api

解决方案


所以我设法使用 Jas Suri 概述的方法来完成这项工作。这些是我经历的步骤

  1. 在我的 B2C 租户中创建了一个自定义属性来保存帐户电子邮件地址
  2. 在 TrustFrameworkBase.xml 中包含自定义属性声明类型 (extension_emailAddress) 以及 strongAuthenticationEmailAddress
  3. 更新了我的应用程序的自定义策略以包含本地帐户发现的技术配置文件。我基本上只是从这里复制了必要的点点滴滴
  4. 更新了本地帐户发现以执行与 extenstion_emailAddres 而不是 strongAuthenticationEmailAddress 的比较。
  5. 在注册用户旅程中添加了一个额外步骤,以便将 strongAuthenticationEmailAddress 中的值复制到 extension_emailAddress
  6. 更新了我的 Web API / Graph API“创建用户”功能,以便它设置 extension_appidguid_emailAddress

而已。现在不管帐户是如何创建的,电子邮件地址将存储在扩展属性中,并且密码重置将能够使用该属性找到帐户。

如果有人遇到此问题,很乐意提供更多详细信息。


推荐阅读