Lua中的Custom Kong插件来处理JWT

时间:2019-02-28 18:26:31

标签: plugins lua jwt kong

我正在从零开始学习Lua,考虑创建一个像这样的插件:

用例1: 一个网站或React应用程序将请求发送到kong,头中没有UserId,没有JWT。 Kong将请求发送到预期的微服务(访客模式)。

用例2: 网站或React应用程序将请求发送给kong,标题中带有UserId。 如果没有JWT,则插件会将请求重定向到创建JWT的网页,然后重定向回Kong,Kong依次将请求发送到使用JWT的预期微服务。

用例3: 网站或React应用程序将请求发送到kong,并在标头和JWT中发送一个UserId。 Kong将请求按其方式发送给使用JWT的预期微服务。

我希望我有道理。 这可能吗?难还是容易?那里已经有解决方案了吗?如果没有,我将不胜感激一些通用的指针,以指导我应该如何做。我去过一段时间编程,但从未碰过Lua ^^。

谢谢

1 个答案:

答案 0 :(得分:0)

在你的插件上,你将实现你的访问逻辑, 在配置上定义标题名称以检索您的值和 url

检查值是否为零

function plugin:access(config)
  plugin.super.access(self)
  val = kong.request.get_header(config.headerId)
  jwt = kong.request.get_header(config.headerJwt)
  if val == nil and jwt == nil then -- no ID no JWT guest mode
    return
  end
  if jwt == nil then --case 2 redirect
    kong.response.set_header("Location", config.url)
    return kong.response.exit(302, config.url)
  end