3

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

Kong似乎提供了这些端点(不仅如此):

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

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

以下是我的问题:

  1. 由于 JWT 还用于携带信息(例如客户 ID、客户角色),以便在每个 API 中始终拥有用户信息的子集,而无需每次查询数据库或其他端点,每个 API 如何解析 JWT 令牌并提取里面的信息?

  2. 想象一下,我想创建一个与 Kong 交互的单页应用程序,它隐藏了许多微服务。哪个是使用 JWT 的最佳方式,每个后端微服务都可以解析 JWT 令牌以检索例如发出请求的用户 ID?

  3. kong 是否提供 api 来解析 JWT 令牌?

4

5 回答 5

0

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

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

于 2018-05-30T08:12:07.890 回答
0

实际上,一旦 Kong 验证了与消费者关联的 JWT 令牌,它就会在请求标头中添加额外的信息,例如x-consumer-custom-id, x=consumer-username,x-consumer-groups等...

如果您愿意为数据库中的每个用户添加消费者条目,请将消费者的自定义 ID 与数据库的真实用户 ID 相关联。

然后对于每个请求,您将能够确定谁是发布者。

如果您想了解更多信息但仍想使用 JWT 插件,则必须使用额外的组件(JWT 库、第三方服务等)。

于 2019-12-26T14:03:34.950 回答
0

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

于 2018-08-30T09:36:17.907 回答
0

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

于 2018-05-30T09:10:00.420 回答
0
  1. 您可以使用 JWT 库(例如 JJWT)来解码 API 端点实现中的令牌,也可以使用专门的微服务为您解码它

  2. 当您对用户进行身份验证时,您将生成并访问令牌,然后在每个请求的标头中发送它。这样,您的微服务可以通过 #1 中描述的选项之一验证用户

  3. 看起来不像

于 2017-05-14T04:45:54.113 回答