Kong和JWT - API应如何从令牌中提取信息

问题描述 投票:0回答:4

今天我开始关注Kong以及它如何通过插件提供一些功能。我正在阅读[在此处输入链接描述] [插件]页面并开始查看JWT。

孔似乎提供了这些终点(而不仅仅是):

  • 创建消费者;
  • 创建/删除JWT凭证;
  • 使用从步骤2获取的凭据生成JWT令牌;

一旦激活,Kong将验证JWT(和声明)的有效性,并将请求转发给API端点(如果它有效)。

这是我的问题:

  1. 由于JWT还用于携带信息(例如客户ID,客户角色),以便在每次API中始终都有用户信息的子集而无需每次查询数据库或其他端点,每个API如何解析JWT令牌并提取它的信息?
  2. 想象一下,我想创建一个与Kong交互的单页应用程序,它隐藏了许多微服务。哪个是使用JWT的最佳方法,每个后端微服务可以解析JWT令牌以检索例如发出请求的用户ID?
  3. kong是否提供api来解析JWT令牌?
java spring-boot jwt kong
4个回答
0
投票
  1. 您可以使用像JJWT这样的JWT库来解码API端点实现中的令牌,也可以使用专用的微服务来为您解码它
  2. 在对用户进行身份验证时,您将生成并访问令牌,然后在每个请求的标头中将其发送。这样,您的微服务可以通过#1中描述的选项之一验证用户
  3. 看起来不像

0
投票

请检查以下链接,该插件将解析您的JWT令牌并对其进行解码:https://github.com/wego/kong-jwt-claim-headers

此外,如果您需要帮助来设置jwt插件,请检查:Kong-auth0-jwt


0
投票

另一种选择是使用kong-oidc并将其部署为资源服务器,验证OAuth 2.0 JWT令牌。


0
投票

我有类似的要求。我通过在我的spring-boot应用程序中添加JwtFilter来实现它,它将提取JWT令牌,解析它并将其设置在SecurityContextHolder中。我可以通过在需要时从SecurityContextHolder获取令牌来提取用户信息。我面临的挑战是确定注册JWT时使用的secret,因为我无法控制它在消费者端的生成方式。

© www.soinside.com 2019 - 2024. All rights reserved.