如何在 KONGO 中设置 JWT 身份验证
Posted
技术标签:
【中文标题】如何在 KONGO 中设置 JWT 身份验证【英文标题】:How to setting JWT Authentication in KONGA 【发布时间】:2020-02-01 12:00:55 【问题描述】:我想为我的服务添加 JWT 身份验证。 我已完成以下步骤,但 JWT 身份验证不起作用
-
创建一个
Consumer
将 JWT 机密插入 Consumer
在Service
和Route
中添加带有Consumer id
的JWT 插件
但是,我从 Postman 收到的消息是未经授权。 如果我使用 Key-Auth 和 Basic 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