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

Kong网关配置:如何根据SSL_CLIENT_CERT请求头条件化应用OIDC插件

Kong条件化启用OIDC插件的解决方案

完全可以实现你想要的场景!Kong从2.x版本开始支持条件式插件执行,通过在插件配置中添加if字段,基于请求属性判断是否启用该插件。针对你的需求,只需要给OIDC插件添加一个判断条件即可。

下面是修改后的完整声明式配置:

_format_version: "2.1"
_transform: true
services:
  - name: core
    host: core-service
    port: 8080
    protocol: http
routes:
  - name: core_route
    strip_path: false
    paths:
      - /api*
plugins:
  - name: request-transformer
    config:
      rename:
        headers:
          - SSL_CLIENT_CERT:CERTIFICATE
  - name: oidc
    if: "!headers['SSL_CLIENT_CERT']"  # 关键条件:仅当该请求头不存在时执行OIDC插件
    config:
      # 你的OIDC配置参数保持不变
      client_id: your-client-id
      client_secret: your-client-secret
      discovery: https://your-oidc-provider/.well-known/openid-configuration
      # ... 其他OIDC配置

关键配置说明:

  • if: "!headers['SSL_CLIENT_CERT']":这个表达式的作用是仅当请求中不存在SSL_CLIENT_CERT请求头时,才触发OIDC插件的执行。其中:
    • headers['SSL_CLIENT_CERT']用于检查请求中是否包含指定的请求头;
    • !符号表示逻辑否定,也就是当该头不存在时条件成立。
  • request-transformer插件不需要添加条件,因为无论请求是否携带SSL_CLIENT_CERT头,你都需要将其重命名为CERTIFICATE并转发到上游,所以保持全局执行即可。

测试验证方法:

  1. 不带SSL_CLIENT_CERT头的请求:Kong会触发OIDC插件进行认证,认证通过后再转发请求到上游。
  2. 携带SSL_CLIENT_CERT头的请求:Kong会跳过OIDC插件,直接执行request-transformer并重命名头,然后转发请求到上游应用。

这种方式完全符合你的需求,而且是Kong原生支持的功能,不需要额外开发自定义插件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:17:34