无法重置通过Graph API创建的B2C帐户密码

问题描述 投票:0回答:3

希望有人可以阐明以下问题;

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

由于要求,该应用程序使用用户名(而不是电子邮件地址)登录到该应用程序。到目前为止,除以下情况外,我已经成功完成了所有工作:

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

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

目前,我必须通过Azure手动设置电子邮件,以便那些帐户的密码可以由所有者重新设置。这显然不是理想的,并且想查看是否有人解决了这个问题,或者至少可以确认这确实是Graph API的局限性。

感谢您的帮助

azure-ad-b2c azure-ad-graph-api
3个回答
0
投票

问题已经确定,注册策略使用strongAuthEmail属性为基于用户名的帐户存储经过验证的电子邮件。密码重置策略将使用此密码来验证用户拥有用户名。使用图形API创建用户时,您无法填充此字段,该字段不会公开。唯一的选择是使用自定义策略,该策略将此安全电子邮件存储在扩展属性中,然后您的图api创建用户也可以将同一属性作为目标以允许星标对齐。


0
投票

Mail属性与“身份验证方法”下的“ Email不同,并且当前没有此类图形API来设置身份验证方法下的Email值。

enter image description here

通过这种方式,无需为用户创建Azure AD B2C用户,因为用户可以自己注册。


0
投票

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

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

就是这样。现在,如何创建帐户都无所谓,电子邮件地址将存储在extension属性中,并且密码重置将能够使用该属性找到该帐户。

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

© www.soinside.com 2019 - 2024. All rights reserved.