azure - 验证未对用户进行身份验证的应用程序中的Azure B2C token

标签 azure active-directory jwt azure-ad-b2c

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

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

最佳答案

您可以在 API 应用程序中验证 token 的签名。 token 由非对称 key 签名。

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

enter image description here

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

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

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

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

关于azure - 验证未对用户进行身份验证的应用程序中的Azure B2C token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60964409/

相关文章:

java - JWT 正在发行相同的 token

azure - 您可以确定 Azure 刷新 token 的到期日期吗

c# - 如何延长使用耐用品的azure功能的超时?

c# - Microsoft Graph 中的城市和国家/地区等于 null

java - 甲骨文。使用 LDAP 进行身份验证始终返回 -16

java - 异常: Caused by: org. springframework.beans.factory.BeanCreationException:创建名称为 'httpPutFormContentFilter'的bean时出错

asp.net-core - ASP.NET Core 2.0 API,Angular SPA : OpenIddict Vs JWT Middleware

Azure服务总线 "manage claim is required for this operation"

powershell - 将ScriptPath从一个用户复制到另一个用户时出现问题

git - Gerrit 和事件目录