【问题标题】:Can't reset B2C account password create via the Graph API无法通过 Graph API 重置 B2C 帐户密码创建
【发布时间】:2020-04-25 09:31:02
【问题描述】:

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

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

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

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

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

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

提前感谢您的帮助

【问题讨论】:

  • 我没有官方确认,但这似乎是一个限制。我一直在努力解决您遇到的问题,并在这里发现了一些(大多数是较旧的)帖子表明这是真的。您可以使用 Graph API 填充“备用电子邮件”字段,但这样做似乎没有任何价值。 (用户不能使用该电子邮件地址来重置密码。)我还没有看到通过 Graph 填充“电子邮件”字段的任何方法,并且当您“获取”用户时,在 Json 中找不到该值(如果您已通过 Azure 控制台手动填充它)。
  • 是的,我也是这么想的 feffrotman。我只是想从其他人那里得到意见,这样至少我知道我没有遗漏一些明显的东西。然而,我对 Jas Suri 提出的“hack”很感兴趣。今天可能会试一试,看看我能不能到任何地方。
  • 另外,有点离题(如果违反 SO 规则,很高兴提出另一个问题) - 你们中的任何人在第一次登录时是否遇到过严重的延迟?每次导航到应用程序并登录时,都会花费大量时间。我们的自定义策略确实会进行一些 http 调用来检索有关用户的一些信息,但这些调用非常快。此外,一旦登录,注销和重新登录非常快。几乎就像 B2C 不是处于“永远在线”模式之类的事情。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 嗨@Pilsen,您介意分享您在上面分享的步骤的更多详细信息吗,我一直在努力解决同样的问题,希望能得到任何帮助。谢谢
  • @AkanmuSola 乐于提供帮助。您是否完成了我上面提出的那些步骤。如果您需要更多信息,请告诉我,我会放在这里。我已经有一段时间没有这样做了,但应该能够追溯我的脚步
  • 感谢您的反馈,我终于让它工作了,您分享的步骤真的很有帮助。谢谢
【解决方案2】:

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

【讨论】:

  • 感谢您分享该选项。我们已经使用了自定义策略,所以我会尝试一下,让你们知道它是怎么回事。
【解决方案3】:

Mail属性与Authentication Methods下的Email不一样,目前还没有这个graph api来设置Authentication Methods下的Email值。

顺便说一句,由于用户可以自己注册,因此无需为用户创建 Azure AD B2C 用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2018-09-13
    相关资源
    最近更新 更多