我有一个方案,用户可以从前端应用程序登录/注册Azure AD B2C。之后,他们将调用与此前端分开的API应用程序(带有JWT令牌)。要求是API应用程序验证用户的令牌并决定是否执行请求。我可以使用auth标头将JWT令牌从前端发送到API。我也可以在API中接收它。现在的挑战是要验证该令牌不会被中间人伪造,或者不会被持有它的人滥用。我知道每个令牌都带有时间戳,可以检查是否过期。但是,这还不够。我需要以某种方式针对Azure AD B2C进行检查。
更新:该API是基于NodeJs的Azure Functions应用
答案 0 :(得分:2)
您可以在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
答案 1 :(得分:1)