JWT

功能描述

通过在网关上配置JWT的校验规则,由网关对JWT Token进行校验,校验通过则转发请求,否则拦截请求。

配置示例

1、新增全局鉴权插件,若该全局插件已存在,可跳过该步骤

2、新建鉴权,Driver选项选择jwt,界面会自动渲染

3、编辑鉴权信息,可添加多个jwt信息

字段描述说明

字段描述
是否隐藏证书网关转发时是否将Authorization字段删除
Base64加密使用HS256,HS384,HS512加密时,密钥是否使用了base64算法进行加密
Secret Access Key对请求体、请求信息加密的密钥
用户标签JWT信息被命中时,会将相关标签带入请求的过程中,如:在access日志中打印相关内容
检索字段用于校验payload中对应字段是否存在
特殊字段:
- exp: token过期时间,时间戳格式,若当前时间大于该值,则鉴权失败
- nbf: token开始时间,时间戳格式,若当前时间小于该值,则鉴权失败
证书签发者唯一ID,对应payload的iss字段
密钥对应VERIFY SIGNATURE的secret,当算法为HS256、HS384、HS512时必填
RSA公钥rsa公钥 使用RS256,RS384,RS512,ES256,ES384,ES512时必填
签名算法jwt签名的算法,支持"HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"

需要快速生成token可到jwt.ioopen in new window中生成

4、绑定上游服务/路由,此处示例以绑定上游服务为例,凡匹配到该上游服务的请求都需要进行鉴权

5、路由绑定服务,教程跳转

6、请求接口,并带上以下头部信息

Header描述值可能性
Authorization-Type声明待校验的鉴权类型Jwt
Authorizationtoken值

在示例中,我们填写证书签发者密钥分别是apintodqjkhewr,且token字段未经过Base64加密,使用HS256算法进行加密

综合配置信息,我们使用jwt.ioopen in new window快速生成一个token,如下图:

生成token:

成功访问示例:

curl -H "Authorization-Type: jwt" -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNzIjoiYXBpbnRvIn0.8JgmztZ4fyt7earq_gOD0vNYbwnoRrpw-AibdE0CDJE" http://127.0.0.1:8099/apinto/demo

成功返回结果:

失败访问示例:

curl -H "Authorization-Type: jwt" -H "Authorization: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNzIjoiYXBpbnRvIn0.8JgmztZ4fyt7earq_gOD0vNYbwnoRrpw-AibdE0CDJE" http://127.0.0.1:8099/apinto/demo

失败返回示例: