【发布时间】:2020-10-24 07:25:44
【问题描述】:
从 adal 切换到 msal 2.0 浏览器库时,我在 idToken 响应中缺少用户的 UPN,这导致在将 idToken 传递给后端。这在 adal 版本中可用。
var principal = tokenHandler.ValidateToken(validationToken, validationParameters, out SecurityToken validatedToken);
我收到了preferred_name 作为声明,但它似乎无法调用 Graph API 来检索电子邮件地址,因为它不是 UPN。
我一般需要如何更改 msal 的令牌验证和 UPN 检索?传递 accessToken 并单独验证以获得更多声明?
【问题讨论】:
-
IdToken 在证书中。证书未加载或用户无法访问。证书使用虚拟连接进行验证,连接可能未完成。怀疑是代码使用的是 TLS 的默认版本,即 1.0/1.1,您需要专门添加 TLS 版本才能使用 1.2/1.3。五年前,由于安全问题,业界决定淘汰 1.0/1.1。今年 6 月,微软推出了一项安全更新,在服务器上禁用了 1.0/1.1。旧示例代码可能没有使用 1.2/1.3 的更新。证书也需要使用正确的加密模式。
-
抱歉,我的问题可能不清楚。我在这里谈论这个docs.microsoft.com/en-us/azure/active-directory/develop/…
-
文档不清楚密钥的来源。甚至 RCP 规范也令人困惑 (tools.ietf.org/html/rfc7517)。 JWK 是 JSON 网络密钥。您的链接指的是 JWT(Jason Web Token)。我认为令牌和密钥是相同的。因此,如果您查看 RFC 7517 的第 4.6 段,它指的是证书。密钥不必来自证书,但证书是分发密钥的常规方法。当传输层使用 TLS 身份验证时,您的文档指的是应用层。
-
我感觉我们在谈论非常不同的事情 :)
-
没有。您正在查看唯一的应用程序层,我知道较低级别发生了什么。
标签: javascript c# active-directory adal msal