如何使用Azure AD B2C在react-aad-msal中使用“忘记密码”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Azure AD B2C在react-aad-msal中使用“忘记密码”?相关的知识,希望对你有一定的参考价值。

我在Azure AD B2C上使用react-aad-msal。我已登录并注销工作。但是,当我点击“忘记密码?”时,身份验证窗口消失,没有任何反应。

enter image description here

我似乎需要指定我的“忘记密码”政策的名称,但我不知道该把它放在哪里。

根据Tony的回答,将此代码添加到我的App的渲染中:

if (window.location.href.indexOf("error_description=AADB2C90118") >= 0)
    {
      return <AzureAD
      provider={
        new MsalAuthProviderFactory({
          authority: 'https://login.microsoftonline.com/tfp/x5aaas.onmicrosoft.com/B2C_1_PwdReset', 
          clientID: 'a1568977-3095-4bf6-a6d6-c10c87658488',
          scopes: ['https://x5aaas.onmicrosoft.com/ui/use'],
          type: LoginType.Redirect,
          postLogoutRedirectUri: window.origin,
        })
      }
      unauthenticatedFunction={this.unauthenticatedFunction}
      userInfoCallback={this.userJustLoggedIn}
      authenticatedFunction={this.authenticatedFunction}
    />;
    }

我看到单击“忘记密码?”后,条件为真,返回发生。但是,密码重置窗口没有显示,我被重定向回我的应用程序URL。

有什么建议?

答案

我做的是在我的App.js中创建一个Route:

          <Route
            path="/forgot"
            component={() => {
              window.location.href = forgotPasswordUrl;
              return null;
            }}
          />

然后,在constructor

if (window.location.hash.indexOf('AADB2C90118') >= 0) {
  history.push('/forgot');
}

这很有效。

另一答案

在Azure B2C中使用组合注册/登录策略时,用户必须自己处理忘记密码方案。你可以找到更详细的评论here

使用本地帐户注册或登录用户流程包括“忘记密码?”链接在体验的第一页。单击此链接不会自动触发密码重置用户流。

而是将错误代码AADB2C90118返回给您的应用程序。您的应用程序需要通过运行重置密码的特定用户流来处理此错误代码。要查看示例,请查看演示用户流链接的simple ASP.NET sample

以上是关于如何使用Azure AD B2C在react-aad-msal中使用“忘记密码”?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?

如何从Azure AD B2C获取用户组信息

Azure AD B2C:注销社交帐户(使用 OIDC 的 Azure AD)

如何使用 Azure AD B2C 获取 Facebook 个人资料图片

如何使用Azure AD B2C保护Spring Boot REST API?

如何使用Azure AD B2C在react-aad-msal中使用“忘记密码”?