MSAL 验证令牌服务器端

MSAL verify token server-side

我们正在将应用程序从“使用 Google 登录”移动到“使用 Microsoft 登录”。它是一个 SPA,但查询 API 数据。客户端全部使用 MSAL v2 (msal-browser.min.js),我们可以正常登录和注销。

当我们向服务器发送请求时,我们会发送 JWT ID 令牌。服务器是 NodeJS API.

我看不到任何具有可用于验证来自客户端的 ID 令牌的 'verify' 方法的 Microsoft 服务器端节点库。

我们一直在查看 @azure/msal-node and @azure/msal-common,但看不到任何我们可以将 ID 令牌提供给以验证令牌是否有效以及用户是否已登录的内容。

如果用户未登录,我们希望从 API return 'unauthorised'。

使用 Google,这很容易,我们这样使用 google-auth-library

const client = new OAuth2Client(googleClientId)
const ticket = await client.verifyIdToken({ idToken: googleIdToken, audience: googleClientId })
const payload = ticket.getPayload() // jwt payload

我希望微软的同类产品很难找到,或者很难找到,我只是愚蠢地没有找到它。

是否有 Node 库提供了一种方法来验证 MSAL ID 令牌,确认令牌有效并且用户已登录...?

MSAL 节点用于获取令牌,以便客​​户端可以访问受保护的资源,而不是用于验证 API 中的令牌。我不认为微软目前提供任何节点库来验证令牌,但你可以使用 jsonwebtoken 代替。

MSAL 节点库中有一个 code sample 展示了如何验证令牌中的某些声明。

如果您好奇验证 Azure AD JWT 的详细步骤是什么,我写了一篇 article 来介绍各个步骤。代码示例是用 Java 编写的,但所有步骤也适用于 Node。