文件格式
官方文档
├── kong-plugin-mepjwt-0.1.0-1.all.rock # luarocks安装依赖 luarocks pack生成的文件
├── kong-plugin-mepjwt-0.1.0-1.rockspec # luarocks的安装依赖
└── mepjwt
├── handler.lua # 主要处理业务逻辑的文件
├── jwt_parser.lua # 依赖文件 jwt解析脚本
├── schema.lua # 给handle提供配置的文件
├── utils_mysql.lua # 依赖文件 数据库处理脚本
└── utils_redis.lua # 依赖文件 redis处理脚本
rockspec文件
# kong-plugin-mepjwt-0.1.0-1.rockspec
local plugin_name = "mepjwt" # 插件名称
local package_name = "kong-plugin-" .. plugin_name
local package_version = "0.1.0"
local rockspec_revision = "1"
local github_account_name = "Kong"
local github_repo_name = "kong-plugin"
local git_checkout = package_version == "dev" and "master" or package_version
package = package_name
version = package_version .. "-" .. rockspec_revision
supported_platforms = { "linux", "macosx" }
description = {
summary = "Kong is a scalable and customizable API Management Layer built on top of Nginx.",
homepage = "https://"..github_account_name..".github.io/"..github_repo_name,
license = "Apache 2.0",
}
dependencies = {
}
# 主要是这里的 定义插件的路径和主要的两个文件路径 =号后面根据实际填写
build = {
type = "builtin",
modules = {
-- TODO: add any additional code files added to the plugin
["kong.plugins."..plugin_name..".handler"] = "/etc/kong/plugins/"..plugin_name.."/handler.lua",
["kong.plugins."..plugin_name..".schema"] = "/etc/kong/plugins/"..plugin_name.."/schema.lua",
}
}
安装插件
1、在本地安装(基于当前目录中的.rockspec)
luarocks make
response
kong-plugin-mepjwt 0.1.0-1 is now installed in /usr/local (license: Apache 2.0)
2、打包已安装的文件
luarocks pack kong-plugin-mepjwt
response
Packed: /etc/kong/plugins/kong-plugin-mepjwt-0.1.0-1.all.rock
同时会生成kong-plugin-mepjwt-0.1.0-1.all.rock
文件
3、安装插件
luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock
response
kong-plugin-mepjwt 0.1.0-1 is now installed in /usr/local (license: Apache 2.0)
查看
luarocks list|grep jwt
response
kong-plugin-jwt-signer
kong-plugin-mepjwt # 已安装
DB-less模式插件加载
在kong.conf
文件中添加插件
plugins = mepjwt # 这里只使用了自定义的插件详细是用参考官网
log_level = debug
yaml
文件配置
services:
- name: service # 服务名称
url: xxxxx # 这里填写backend服务地址
tags:
- service
plugins:
- name: jwt
config: # 这里需要同步配置一份
mysql:
host: xxx
port: xxx
database: xxx
user: xxx
password: xxx
redis:
host: xxxx
port: xxxx
password: xxxx
charset: xxxx
user_db: xxx
routes:
- name: ngrok-mep-server # 路由名称
paths:
- /mep-service # 路由后缀名称
consumers:
- username: jwt-auth-user
plugins:
- name: jwt
config: # schema中的配置
mysql:
host: xxx
port: xxx
database: xxx
user: xxx
password: xxx
redis:
host: xxxx
port: xxxx
password: xxxx
charset: xxxx
user_db: xxx
重启加载
kong restart --v
在加载过程中难免会有错误,需要自己打日志排查
debug
luarocks remove kong-plugin-mepjwt && luarocks make && luarocks pack kong-plugin-mepjwt && luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock
kong restart --v
校验
我的插件主要是解开token王header里面塞了三个参数,在调试过程中已经完成
kong-plugin-mepjwt && luarocks install kong-plugin-mepjwt-0.1.0-1.all.rock
kong restart --v
# 校验
我的插件主要是解开token王header里面塞了三个参数,在调试过程中已经完成
[外链图片转存中...(img-CQqj9H2r-1689328795146)]