从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支持两种获得额外索赔的方法
- 通过AD清单设置
- 请求令牌时,如下所示
通过添加额外的作用域
const loginRequest = {
scopes: ['User.Read', 'email']
};
当验证令牌时,可以通过设置TokenValidationParameters.NameClaimType
使用不同的声明来获得主体的身份