You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django微服务生成的JWT密钥对接Kong网关JWT插件做权限校验

Kong网关对接现有Django JWT实现身份校验的方案说明

1. 能否直接共享Django的JWT密钥给Kong JWT插件

完全可以,只要你的Django认证服务是遵循标准JWT规范签发令牌即可。
需要注意以下适配要求:

  • 确保Kong JWT插件配置的加密算法,和Django签发JWT所用的算法完全一致,HS256/HS512等对称算法、RS256/ES256等非对称算法均支持
  • 若使用非对称加密,只需给Kong提供Django的JWT公钥即可,无需同步私钥,安全性更高
  • 如果Django的JWT签名密钥做了Base64编码,需要在Kong插件配置中开启secret_is_base64参数

2. 是否需要为每一位用户单独创建Kong Consumer

可根据你的业务需求判断,分为两种场景:

  • 无需创建:如果你的需求仅为校验JWT合法性(签名正确、未过期、签发方匹配),不需要用到Kong基于Consumer实现的细粒度能力(用户级限流、用户级路由、ACL权限控制、用户维度流量统计等),完全不需要为每个用户创建Kong Consumer。新版Kong JWT插件支持仅校验令牌合法性,无需关联Consumer实体,适合用户量级大的业务场景,避免冗余数据同步。
  • 需要创建:如果需要用到上述Kong原生的Consumer关联能力,才需要创建对应的Consumer实体,且不需要提前全量同步所有用户,可在用户首次携带有效JWT请求时,通过自定义的Kong前置插件异步同步创建即可。

3. 具体实现步骤

  • 第一步:提取Django JWT的配置参数:确认签发算法、签名密钥(对称加密)/公钥(非对称加密)、签发人iss、受众aud等可选校验字段。
  • 第二步:在需要拦截的Kong服务/路由上启用JWT插件:
    • 无需绑定Consumer的配置:填写上一步拿到的密钥/公钥,配置algorithms为对应加密算法,可按需开启iss/aud等字段的校验规则,无需额外配置Consumer关联参数即可完成基础身份校验,非法请求会默认返回401状态码。
    • 需要绑定Consumer的配置:先创建对应用户的Consumer实体,给每个Consumer关联JWT凭证,凭证的key字段填JWT Payload中的唯一用户标识(比如user_id),secret字段填统一的Django JWT签名密钥即可,无需为每个用户单独生成密钥。
  • 第三步:配置扩展规则:如果需要做网关层权限校验,可配合Kong的ACL插件,基于JWT透传的用户角色字段做接口权限拦截;也可以通过Request Transformer插件将用户ID、角色等JWT Payload字段透传给后端服务,无需后端再重复解析JWT。
  • 第四步:测试验证:分别用未携带JWT、过期JWT、非法签名JWT、合法JWT的请求访问接口,确认拦截逻辑符合预期。

内容的提问来源于stack exchange,提问作者Abadlia Ramy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:45:03