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



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

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

我得到preferred_name作为声明,但它似乎不可用于调用Graph API来检索电子邮件地址,因为它不是UPN。

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

idToken 的文档

accessToken 的文档

代码样本

证明msal支持两种获得额外索赔的方法

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

通过添加额外的作用域

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

当验证令牌时,可以通过设置TokenValidationParameters.NameClaimType使用不同的声明来获得主体的身份

最新更新