Plugin的作用范围可以是在路由上也可以是customer上,还可以全局。
步骤
1. 在custom里面点击credentials,在右边选择添加JWT。
2. 填一个key和secret。
3. 用JWT编辑器生成一个token。payload加一个iss:"custom_key",校验的密钥customsecretkey。这个是根据自己在第二步填的key就是jwt payload的iis;secret对应放到
VERIFY SIGNATURE中。
{"id": "0a6d266b-ddbf-49bd-8cbf-2d390ddf5236","key": "custom_key","algorithm": "HS256","tags": null,"rsa_public_key": null,"secret": "customsecretkey","consumer": {"id": "ac9070f8-653a-4345-bd3e-be2032b88a40"},"created_at": 1708417385
}
在线生成jwt
JSON Web Tokens - jwt.iozz
测试
在没有bearer auth认证时,开启了jwt插件后会返回
{"message": "Unauthorized"
}
添加token到jwt校验头才能够正常访问。
这里是放在custom里面的,这样每个jwt就会对应一个用户。
配置过期
设置claims to verify = exp,否则过期的token都可以请求,nbf可以不用设置
exp: 定义jwt的过期时间
nbf: 定义jwt的生效时间
一个错误
HEADER改为
{
"alg": "HS256",
"exp": 1708421029,
"nbf": 1708421029,
"typ": "JWT"
}
exp nbf 为数字但还是提示must by number,放错了要在payload里。
Header
{
"alg": "HS256",
"typ": "JWT"
}
payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022,
"iis": "custo",
"exp": 1708422017
}
由于时间过了就返回
{
"exp": "token expired"
}