MSAL 验证令牌服务器端

Ste*_*ast 13 javascript node.js azure-ad-msal

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

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

我看不到任何具有“验证”方法的 Microsoft 服务器端 Node 库,我们可以使用该方法来验证来自客户端的 ID 令牌。

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

如果用户未登录,我们希望从 API 返回“未经授权”。

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

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

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

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

sgo*_*lez 8

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

MSAL Node 库中有一个代码示例,演示如何验证令牌中的某些声明。

如果您想更详细地了解验证 Azure AD JWT 的步骤,我写了一篇文章来介绍各个步骤。该代码示例是用 Java 编写的,但所有步骤也适用于 Node。