在Kong网关中使用JWT认证
前言
在Kong网关快速入门指南 一文中介绍了Key认证和HMAC认证方式,本文介绍在Kong网关中使用JWT认证。
JWT介绍
参见:
简单归纳一下JWT(JSON Web Token)的特点:
- 是一种JSON格式(未对Token本身Base64编码前)的Token
- JSON格式,数据更紧凑,网络传输数据量小,编码解码速度快,前后端多种编程语言都会JSON有很好的支持
- 基于Token的认证已经成为认证的主流方式(较早之前的认证是基于Session的),更安全,在Web和App上都可以使用。
- Token采用消息发送方和接收方都知道的shared secret来作HmacSHA签名和验签,安全程度高,即使泄漏Token也无法破解secret。
- Token有有效期,可有效降低被重放攻击(replay attack)的风险
- Token本身可内省(introspection),Resource Server只要有shared secret无需调用Authorization Server的内省(introspection)接口也可以验签。
- 相比HMAC认证,更简单。
JWT认证
添加JWT插件
在Service下添加JWT插件,全部保持默认值。
查看插件详情:
uri param names: `jwt`
key claim name: `iss`
secret is base64: NO #NO表示不对secret作Base64编码
headers names: `authorization`
说明:
- 把后面要生成的JWT credential的
key
作为JWT payload中的iss
字段(issuer缩写,令牌颁发者)。
生成Consumer的JWT credentials
保持全部默认值来生成Consumer的JWT credentials。
示例:
{
"tags": null,
"secret": "pdDcyjZUrOaUY2HDIrrgRnG7ix0hNf7B",
"consumer": {
"id": "c3202163-d7b8-4604-8137-466109590fd2"
},
"algorithm": "HS256",
"rsa_public_key": null,
"id": "e23be144-26b9-4f3a-8938-ceddc34d2e23",
"created_at":