【问题标题】:MSAL verify token server-sideMSAL 验证令牌服务器端
【发布时间】:2023-01-12 05:15:01
【问题描述】:

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

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

我看不到任何具有“验证”方法的 Microsoft 服务器端节点库,我们可以使用它来验证来自客户端的 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

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

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

【问题讨论】:

    标签: javascript node.js msal


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      我们遵循相同的流程,目前使用 azure-ad-jwt-v2,它验证从前端发送的服务器上的令牌。希望有帮助!

      【讨论】:

        猜你喜欢
        • 2015-03-03
        • 2017-10-30
        • 1970-01-01
        • 2022-08-16
        • 2017-12-28
        • 2012-12-08
        • 2012-06-05
        • 2017-07-23
        • 2015-10-23
        相关资源
        最近更新 更多