首页 > 解决方案 > AADB2C 嵌入式密码重置:未触发本地帐户发现

问题描述

我们正在实施嵌入式密码重置,这是新的推荐做法。一旦我们单击Forgot your password?链接,就会按预期调用重置子旅程。

重置子旅程总是跳过本地帐户发现步骤,用户验证他们的电子邮件以访问他们的帐户信息,并直接跳转到屏幕输入新密码 - 新密码输入失败,因为没有帐户可将新密码写入。

我们的重置密码旅程如下:

<SubJourney Id="PasswordReset" Type="Call">
  <OrchestrationSteps>

    <OrchestrationStep Order="1" Type="ClaimsExchange">
    <!-- This orchestration step never occurs. The user is never prompted for their email address. -->
   
  <ClaimsExchanges>
        <ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="NewCredentials" nicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
      </ClaimsExchanges>
    </OrchestrationStep>
  </OrchestrationSteps>
</SubJourney>

到目前为止,我们的代码直接取自教程和示例代码。我们如何解决这个问题,还有其他人遇到过同样的问题吗?

标签: azureazure-active-directoryazure-ad-b2cazure-ad-b2c-custom-policy

解决方案


您的问题已解决,将其作为答案发布到线程末尾:

这是 B2C 系统中的一个错误 - 初始组合登录和注册步骤似乎设置了email声明,即使用户点击“忘记密码”链接也是如此。LocalAccountDiscoveryUsingEmailAddress 配置文件尝试使用(空白)声明而不提示用户输入地址,跳转到密码写入步骤但没有选择要写入密码的帐户。我们通过创建resetEmail仅由帐户发现和密码写入配置文件使用的新声明来解决此问题。


推荐阅读