问题描述
从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并单独验证以获取更多声明?
解决方法
事实证明,msal支持2种方法来获得更多索赔
- 通过广告清单设置
- 当请求以下令牌时
通过添加其他范围
const loginRequest = {
scopes: ['User.Read','email']
};
,并且在验证令牌时,可以通过设置TokenValidationParameters.NameClaimType