Azure ad b2c Can';t通过Graph API重置B2C帐户密码创建

Azure ad b2c Can';t通过Graph API重置B2C帐户密码创建,azure-ad-b2c,azure-ad-graph-api,Azure Ad B2c,Azure Ad Graph Api,希望有人能对下面的事情有所启发 我得到了一个Angular和.Net核心Web API应用程序,它使用Azure B2C对用户进行身份验证。 用户帐户由用户自己通过登录/注册自定义策略创建,或者管理员可以使用Graph API通过应用程序创建帐户 由于这些要求,应用程序使用用户名(而不是电子邮件地址)登录到应用程序。到目前为止,除了以下场景外,我已设法使所有内容正常工作: 通过Graph API创建帐户时,该帐户的所有者无法重置帐户的密码。错误是“无法找到提供的用户ID的帐户” 对于通过自定义注

希望有人能对下面的事情有所启发

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

由于这些要求,应用程序使用用户名(而不是电子邮件地址)登录到应用程序。到目前为止,除了以下场景外,我已设法使所有内容正常工作:

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

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

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


提前感谢您的帮助

邮件
属性与身份验证方法下的
电子邮件
不同,目前没有此类图形api来设置身份验证方法下的
电子邮件


顺便说一句,没有必要为用户创建Azure AD B2C用户,因为用户可以自己注册。

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

因此,我使用Jas Suri概述的方法成功地实现了这一点。这些是我经历的步骤

  • 在我的B2C租户中创建了一个自定义属性以保存帐户电子邮件地址
  • 在TrustFrameworkBase.xml中包括自定义属性声明类型(扩展名\电子邮件地址)以及strongAuthenticationEmailAddress
  • 更新了“我的应用”的自定义策略,以包括本地帐户发现的技术配置文件。我基本上只是从中复制了一些必要的片段
  • 更新了本地帐户发现,以与extenstion_EmailAddress(而不是strongAuthenticationEmailAddress)执行比较
  • 在注册用户旅程中添加了一个额外步骤,以便将strongAuthenticationEmailAddress中的值复制到扩展名\u emailAddress
  • 更新了my Web API/Graph API“create user”函数,以便设置扩展名\u appidguid\u emailAddress
  • 就这样。现在,无论如何创建帐户,电子邮件地址都将存储在扩展属性中,密码重置将能够使用该属性找到帐户


    如果有人遇到这个问题,很乐意提供更多细节

    我没有官方的确认,但这似乎是一个限制。我一直在苦苦思索你到底遇到了什么,并且在这里发现了一些(大部分是旧的)帖子,表明这是真的。您可以使用Graph API填充“Alternate Email”字段,但这样做似乎没有任何价值。(用户无法使用该电子邮件地址重置密码。)我还没有看到任何通过图形填充“email”字段的方法,当您“获取”用户时,在Json中找不到该值(如果您通过Azure控制台手动填充)。是的,我也这么认为。我只是想从其他人那里得到意见,这样至少我知道我没有遗漏一些明显的东西。不过,我对Jas Suri提到的提议中的“黑客”很感兴趣。也许今天可以试一试,看看我是否有进展。另外,有点离题(如果违反SO规则,很高兴提出另一个问题)-你们中有人在第一次登录时经历了重大延迟吗?每次用户导航到应用程序并登录时,都会花费大量的时间。我们的自定义策略确实会进行一些http调用来检索有关用户的一些信息,但是这些调用速度非常快。此外,一旦登录,注销和重新登录的速度相当快。几乎就像B2C不是一种“永远在线”的模式。谢谢分享这个选项。我们已经使用自定义策略,所以我会尝试一下,让你们知道它是如何进行的。嗨@Pilsen,你介意分享更多关于你在上面分享的步骤的细节吗?我一直在努力解决同样的问题,如果能得到任何帮助,我将不胜感激。Thanks@AkanmuSola很乐意帮忙。你走过我在上面摆姿势的那些步骤了吗。我需要更多信息,请告诉我,我会把它放在这里。我已经有一段时间没有这样做了,但应该能够追溯我的步骤谢谢你的反馈,我终于让它工作了,你分享的步骤真的很有帮助。谢谢