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。
我们正在将应用程序从“使用 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。