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

Posted

技术标签:

【中文标题】如何在 KONGO 中设置 JWT 身份验证【英文标题】:How to setting JWT Authentication in KONGA 【发布时间】:2020-02-01 12:00:55 【问题描述】:

我想为我的服务添加 JWT 身份验证。 我已完成以下步骤,但 JWT 身份验证不起作用

    创建一个Consumer 将 JWT 机密插入 ConsumerServiceRoute 中添加带有Consumer id 的JWT 插件

但是,我从 Postman 收到的消息是未经授权。 如果我使用 Key-AuthBasic Auth,我没有问题。我寻找和找到的网站太多,但没有解决我的问题。

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

服务/路由中的 JWT

消费者中的 JWT

网站 jwt.io 中的 JWT(这是令人困惑的部分,卡在 Payload 中)

邮递员

如果有人可以帮助我,不胜感激。

孔加版本:0.14.3 港版:1.3.0

【问题讨论】:

您能否详细介绍一下您的 kong 配置以及您通过邮递员发送的请求? 我已经更新了我上面的帖子。 @Jahdere 那怎么办? 【参考方案1】:

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

我发现这个参数config.header_names必须输入为Authorization(记住输入Enter后输入:D)。

虽然 Kong 文档 (https://docs.konghq.com/hub/kong-inc/jwt/) 说 此值是可选的,默认值为 "Authorization" 但实际上如果您将其留空,我意识到 Kong 无法从标头中提取 JWT。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何在 KONGO 中设置 JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的用户角色在passport-jwt中设置身份验证很热门?

在 Spring Security UsernamePasswordAuthenticationFilter JWT 身份验证中设置自定义登录 url

在 Django 中使用 JWT 令牌进行身份验证

如何在 MVC 5 中设置本地授权身份验证?

如何在 Vue 中设置身份验证状态更改?

如何在 ASP.NET Core 2.0 中设置多个身份验证方案?