繁体   English   中英

对于使用 Angular SPA 获取的 Active Directory B2C JWT 令牌,acr 声明为 null

[英]acr claim is null for the Active Directory B2C JWT token acquired using Angular SPA

I downloaded here from GITHUB an Azure Sample for using Azure Active Directory B2C (ADB2C) in Angular. 请考虑我已成功配置 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”声明。 在这里,在微软官方文档中,他们写道:

仅与旧策略一起使用。 所以我想知道:

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

谢谢

搞定了我引用 Derisen(作者)在 GitHub 上回复我答案:

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

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

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM