azure - 在未对用户进行身份验证的应用中验证 Azure B2C 令牌
问题描述
我有一个场景,用户将从前端应用程序登录/注册到 Azure AD B2C。之后,他们将调用与该前端分开的 API 应用程序(使用 JWT 令牌)。要求是 API 应用程序验证用户的令牌并决定是否执行请求。我可以使用 auth 标头将 JWT 令牌从前端发送到 API。我也可以在 API 中接收它。现在的挑战是验证这个令牌不是被中间人伪造的,或者只是被掌握它的人滥用。我知道每个令牌都带有时间戳,可以检查是否过期。然而,这还不够。我需要以某种方式对照 Azure AD B2C 检查它。
更新:API 是基于 NodeJs 的 Azure Functions 应用程序
解决方案
您可以在 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
推荐阅读
- ruby-on-rails - Webpacker 无法在 Dockerized Rails App 中编译
- javascript - 未捕获的 ReferenceError:addRecord 未在 HTMLButtonElement.onclick 中定义
- c - 即使在调用忽略它之后,C linux tcsetpgrp 也会停止父进程
- powershell - 使用密码压缩文件夹作为powershell
- tableau-api - 混合数据源中的表计算
- tableau-api - 更改日期范围时的 Tableau 常量参考线问题
- c# - 如何在我的单人游戏中设置收集金币的限制?
- javascript - 你能检查点击一个元素是否有什么作用吗?喜欢带你到另一个页面吗?
- azure - 发布管道 - 在 docker 阶段之间共享工件
- angular - Angular中的表单值返回空