从 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 并单独验证以获得更多声明?
事实证明 msal 支持 2 种获取额外声明的方法
- 通过 AD 清单设置
- 请求令牌时如下
通过添加额外的范围
const loginRequest = {
scopes: ['User.Read', 'email']
};
并且在验证令牌时,可以通过设置 TokenValidationParameters.NameClaimType
使用不同的声明来获取委托人的身份
从 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 并单独验证以获得更多声明?
事实证明 msal 支持 2 种获取额外声明的方法
- 通过 AD 清单设置
- 请求令牌时如下
通过添加额外的范围
const loginRequest = {
scopes: ['User.Read', 'email']
};
并且在验证令牌时,可以通过设置 TokenValidationParameters.NameClaimType