首页 > 解决方案 > 在未对用户进行身份验证的应用中验证 Azure B2C 令牌

问题描述

我有一个场景,用户将从前端应用程序登录/注册到 Azure AD B2C。之后,他们将调用与该前端分开的 API 应用程序(使用 JWT 令牌)。要求是 API 应用程序验证用户的令牌并决定是否执行请求。我可以使用 auth 标头将 JWT 令牌从前端发送到 API。我也可以在 API 中接收它。现在的挑战是验证这个令牌不是被中间人伪造的,或者只是被掌握它的人滥用。我知道每个令牌都带有时间戳,可以检查是否过期。然而,这还不够。我需要以某种方式对照 Azure AD B2C 检查它。

更新:API 是基于 NodeJs 的 Azure Functions 应用程序

标签: azureactive-directoryjwtazure-ad-b2c

解决方案


您可以在 API 应用程序中验证令牌的签名。令牌由非对称密钥签名。

AzureB2C 中的每个用户流都有一个关联的元数据文档,其中包含标签“jwks_uri”中键的所有详细信息

在此处输入图像描述

“jwks_uri”:“ https://xxxxxx.b2clogin.com/xxxxxxxxx.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_pe ”,

您可以从 jwks_uri 标签下的链接中获取密钥详细信息,并使用它来验证签名。另请记住,这些密钥是轮换的,因此您需要每 24 小时获取一次最新的。

示例:- https://github.com/azure-ad-b2c/samples/tree/master/policies/user_info

文档https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview


推荐阅读