【问题标题】:acr claim is null for the Active Directory B2C JWT token acquired using Angular SPA对于使用 Angular SPA 获取的 Active Directory B2C JWT 令牌,acr 声明为空
【发布时间】:2020-05-12 15:39:42
【问题描述】:

我从 GITHUB 下载了 here 一个 Azure 示例,用于在 Angular 中使用 Azure Active Directory B2C (ADB2C)。 请考虑我已成功配置 Azure 门户上的 ADB2C,并且能够与我的 Angular 应用程序进行交互。事实上,我很高兴能够毫无问题地注册新用户。
但是,一旦我登录,它总是返回以下消息:

密码已成功重置。请使用新密码登录

我尝试重设密码,但总是收到相同的密码。我检查了 Microsoft 代码,发现了这一行:

  if (success.idToken.claims['acr'] !== b2cPolicies.names.signUpSignIn) {
    window.alert("Password has been reset successfully. \nPlease sign-in with your new password");
    return this.authService.logout()
  }

我进一步调查了一下,发现生成的 ADB2C JWTToken 缺少“acr”声明。而here,在微软官方文档中,他们写道:

仅用于旧策略。 所以我想知道:

  1. “acr”声明是强制性的吗?
  2. 能否在不影响稳定性的情况下注释掉该行?该应用程序似乎可以正常工作,并且返回的 JWT 格式正确
  3. 为什么 GitHub 代码使用这种奇怪的条件?我会打开一个问题而不是..

谢谢

【问题讨论】:

    标签: angular azure jwt azure-ad-b2c bearer-token


    【解决方案1】:

    解决了。我引用Derisen(作者)在GitHub上回复我here的答案:

    1. 仅当您需要使用密码重置流程时才需要 acr 声明。对于较新的政策,其等效项是 tfp(如果您的令牌中没有该声明,请告诉我)。
    2. 如果您不需要密码重置流程,您当然可以这样做。

    我意识到在 Azure 门户的 ADB2C 部分中,您可以更改设置:

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 2021-02-13
      • 1970-01-01
      • 2021-04-21
      • 2017-05-17
      相关资源
      最近更新 更多