从 msal 2.0 令牌获取 UPN 和电子邮件地址

Get UPN and email address from msal 2.0 tokens

从 adal 切换到 msal 2.0 浏览器库时,我在 idToken 响应中缺少用户的 UPN,这导致主体在通过后 principal.Identity.Name 中没有名称idToken 到后端。这在 adal 版本中可用。

var principal = tokenHandler.ValidateToken(validationToken, validationParameters, out SecurityToken validatedToken);

我收到了 preferred_name 作为声明,但似乎无法调用图表 API 来检索电子邮件地址,因为它不是 UPN。

一般情况下,我需要如何更改 msal 的令牌验证和 UPN 检索?传递 accessToken 并单独验证以获得更多声明?

Docs for idToken

Docs for accessToken

Code sample

事实证明 msal 支持 2 种获取额外声明的方法

  1. 通过 AD 清单设置
  2. 请求令牌时如下

通过添加额外的范围

const loginRequest = {
    scopes: ['User.Read', 'email']
};

并且在验证令牌时,可以通过设置 TokenValidationParameters.NameClaimType

使用不同的声明来获取委托人的身份