如何在KONGA中设置JWT身份验证

时间:2019-10-03 07:44:01

标签: jwt api-gateway kong jwt-auth kong-plugin

我想向我的服务添加JWT身份验证。 我已完成以下步骤,但JWT身份验证无法正常工作

  1. 创建一个Consumer
  2. 将JWT机密插入Consumer
  3. Consumer idService中添加带有Route的JWT插件

但是,我从邮递员那里收到的消息是未经授权。 我使用的是 Key-Auth Basic Auth ,我没有问题。我要找的网站太多,但无法解决我的问题。

我使用 jwt.io 网站生成令牌,但不确定在Payload部分中填写的信息。

服务/路线中的JWT

enter image description here

消费者中的JWT

enter image description here

网站jwt.io中的JWT (这是令人困惑的部分,停留在有效负载此处)

enter image description here

邮递员

enter image description here

感谢任何人都可以帮助我。

  • KONGA版本:0.14.3
  • Kong版本:1.3.0

2 个答案:

答案 0 :(得分:3)

与您有同样的问题,您执行的每个步骤都是绝对正确的。我也找不到其他地方的解决方案。但是幸运的是,我在再次检查了所有参数以启用JWT插件并为消费者创建JWT之后得到了解决方案。

我发现此参数{ "error": { "code": "malformed input", "message": "Filter Messages/any(m: m/PublishedTime ge 2020-03-11T08:19:11.0465793Z) is invalid. Expected '<Item> <operator> <Value>' pattern." } } 必须作为config.header_names输入(输入:D后要记住类型Authorization)。

enter image description here

尽管Kong文档(https://docs.konghq.com/hub/kong-inc/jwt/)表示该值为可选,默认值为“ Authorization” ,但实际上,如果您将其留空,我意识到Kong无法从标头中提取JWT

答案 1 :(得分:0)

您的jwt令牌中必须存在密钥声明名称(在您的情况下为“ iss”),并且必须配置kong的消费者以期望该名称(在相应消费者的“ key”字段中)

要使令牌有效,令牌中的“ iss”值必须等于创建消费者时输入的“ key”值