当前位置: 首页 > news >正文

如何配置 APISIX 网关插件实现 JWT 鉴权与限流同时进行?

在 APISIX 中,直接在同一个 Route 上同时启用 jwt-auth 和限流插件即可实现,重点在于插件执行顺序和限流维度的选择,通常建议先鉴权再限流,以便针对用户身份进行控制。

先说结论:配置本身不冲突,但需注意插件优先级和 Consumer 绑定,否则可能导致限流无效或鉴权被绕过。

  • 适合:需要对已登录用户进行精细化流量控制的场景
  • 先准备:确保已创建对应的 Consumer 并配置好密钥
  • 验收:通过携带或不携带 Token 请求,观察状态码和限流 headers

步骤一:创建 Consumer 配置

jwt-auth 插件强依赖 Consumer 对象存储密钥信息。必须先创建 Consumer,否则即使路由启用了插件也无法通过鉴权。以下命令创建名为 jack 的消费者,并配置 key 和 secret。

curl http://127.0.0.1:9180/apisix/admin/consumers \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
-X PUT \
-d '{"username": "jack","plugins": {"jwt-auth": {"key": "user-key","secret": "my-secret-key"}}
}'

注意:secret 将用于签名 JWT Token,请妥善保管。key 用于标识用户,通常放在 Token 的 header 或 payload 中供插件识别。

步骤二:生成 JWT Token

由于 jwt-auth 需要验证签名,你需要使用上一步配置的 secret 生成 Token。可以使用在线工具(如 jwt.io)或命令行工具。

使用 jwt.io 生成示例:

  1. 打开 jwt.io。
  2. 在 Header 中确保 alg 为 HS256。
  3. 在 Payload 中建议包含 sub 字段(例如 "jack")。
  4. 在 Verify Signature 区域,将 Secret 设置为上一步配置的 my-secret-key
  5. 复制生成的 Encoded 字符串作为 Token。

步骤三:配置路由与插件

创建 Route 并绑定插件。limit-count 的 key_type 设为 consumer 可针对用户限流,设为 remote_addr 则针对 IP 限流。此处演示针对用户限流。

curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
-X PUT \
-d '{"uri": "/hello","plugins": {"jwt-auth": {},"limit-count": {"count": 5,"time_window": 60,"rejected_code": 503,"key_type": "consumer"}},"upstream": {"type": "roundrobin","nodes": {"127.0.0.1:8080": 1}}
}'

步骤四:验证是否生效

使用 curl 发送请求,观察不同场景下的响应状态码。

1. 不带 Token 请求(应返回 401):

curl -i http://127.0.0.1:9080/hello

2. 带合法 Token 请求(应返回 200):

curl -i http://127.0.0.1:9080/hello \
-H "Authorization: Bearer <你的 JWT Token>"

3. 触发限流(应返回 503):

连续发送超过 5 次合法请求,第 6 次应被拦截。

for i in {1..6}; do curl -i http://127.0.0.1:9080/hello -H "Authorization: Bearer <你的 JWT Token>"; done

常见坑与排查

  • 忘记创建 Consumer:jwt-auth 插件启用后,若请求携带 Token 但对应 Consumer 不存在或 key 不匹配,会鉴权失败返回 401。
  • Secret 不匹配:生成 Token 使用的 secret 必须与 Consumer 配置中的 secret 完全一致,包括大小写。
  • 限流维度错误:若 key_type 设为 remote_addr,则无法区分同一 IP 下的不同用户,所有该 IP 请求共享配额。
  • 插件执行阶段:若发现限流未生效,检查插件执行阶段,确保 limit-count 在 jwt-auth 之后或独立运行,通常默认顺序即可。

参考来源

  • Apache APISIX 官方文档 - 插件列表,URL: https://apisix.apache.org/docs/apisix/plugins/
  • Apache APISIX 官方文档 - jwt-auth 插件,URL: https://apisix.apache.org/docs/apisix/plugins/jwt-auth/

原文链接:https://www.zjcp.cc/ask/11344.html

http://www.jsqmd.com/news/834650/

相关文章:

  • 2026年5月水厂悬浮物污泥浓度仪国产十大知名品牌 - 仪表品牌排行榜
  • 成都市场冶控集团螺纹钢|2026年5月(上、中、下旬)出厂价格及政策|盛世钢联订货指导价 - 四川盛世钢联营销中心
  • 2026年5月水质浊度在线监测仪国产公司排行榜 - 仪表品牌排行榜
  • 2026年论文被AI率卡关怎么办?3个实用技巧+高效工具,轻松达标不头疼! - 降AI实验室
  • 2026年运动户外视频剪辑公司排名前五权威测评! - 电商资讯
  • 成都市场达钢集团螺纹钢|2026年5月(上、中、下旬)出厂价格及政策|盛世钢联订货指导价 - 四川盛世钢联营销中心
  • 航空器配载与货运管理系统——三次作业总结
  • 2026年家装仿石漆服务商靠谱推荐:行业深度分析与专业选型指南 - 产业观察网
  • 2026年4月木门品牌推荐,电视背景墙板/铝木门/实木门/洗衣柜/木门/沙发背景墙板/玄关背景墙板,木门源头厂家哪个好 - 品牌推荐师
  • 成都市场成实集团螺纹钢|2026年5月(上、中、下旬)出厂价格及政策|盛世钢联订货指导价 - 四川盛世钢联营销中心
  • SQL Server RAG 笔记3:SQLServer2025 向量数据库
  • 2026年内衣短视频混剪公司专业深度测评:排名前五权威榜单 - 电商资讯
  • 五一爆肝,我写了一个离线版 Apifox 平替——ApiMocktle
  • 2026年家装仿石漆经销商:行业规范下合格经销商选型指南 - 产业观察网
  • 2026年4月有实力的高场强辊式磁选机实力厂家推荐,石英砂磁选机/强磁磁选机,高场强辊式磁选机厂商推荐分析 - 品牌推荐师
  • 2026年家装仿石漆厂家靠谱推荐:靠谱厂商筛选标准与主流厂商深度分析 - 产业观察网
  • 成都市场威钢集团螺纹钢|2026年5月(上、中、下旬)出厂价格及政策|盛世钢联订货指导价 - 四川盛世钢联营销中心
  • 2026年4月速冻机企业口碑推荐,洗筐机/速冻机/烘干机/速冻柜/杀菌机/冻干机/油炸机/翻转风干机,速冻机企业选哪家 - 品牌推荐师
  • 2026年|AI率从80%降到5%!4个手动降AI指南+5款降AI率实用工具,专治知网/维普/Turnitin! - 降AI实验室
  • Sysmac Studio修改网卡
  • 2026年外墙仿石漆厂家靠谱推荐:主流品牌选型参考与核心实力维度解析 - 产业观察网
  • 余工模板_IO显示
  • 2026年5月明渠式污水流量计国产十大厂家排行榜 - 仪表品牌排行榜
  • ABC458
  • 郑州改灯店哪家好?专业车灯服务推荐,郑州车灯服务怎么选?哪家更专业,看完你就明白了 - Reaihenh
  • 上海斜瓦屋面防水保温翻新,施工收费标准明细 - 十大品牌榜单
  • 从专才到通才:机器学习、多模型学习与大语言模型的演进之路
  • 登录验证
  • Spring依赖
  • 余工模板_IO映射