【问题标题】:Kong conditionally apply plugin for the service and routeKong有条件地为服务和路由申请插件
【发布时间】:2023-01-22 10:31:24
【问题描述】:

我正在尝试将 Kong 网关配置为在满足条件时有条件地应用插件。

这里的用例是只有在没有SSL_CLIENT_CERT 标头时才应使用 OIDC 插件,否则不要使用 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
    config: ...

这将为所有进入服务的请求应用request-transformeroidc将使用 OIDC 协议进行身份验证。但是,如果 SSL_CLIENT_CERT 存在,我不想去 OIDC。

我正在寻找类似的方法和示例配置,但没有成功。

如何在 Kong 中配置这个?是否可以?

【问题讨论】:

  • 将 Request transformer 应用于路由并将 OIDC 应用于服务工作吗?
  • 你能举个例子来理解你的意思吗?

标签: api openid-connect gateway kong kong-plugin


【解决方案1】:

您应该能够为同一路径运行多个路由,但具有不同的标头匹配。

下面的第一个将匹配客户端证书请求,您可能需要确保 ~* 之后的部分是正则表达式匹配所有条件:

services:
- name: myapi
  url: http://api.example.com
  routes:
  
  - name: clientcert
    paths:
    - /api
    headers:
      SSL_CLIENT_CERT: ["~*(.*?)"]
    plugins:
    - name: request-transformer
      config: ...

  - name: oidc
    paths:
    - /api
    plugins:
    - name: oidc
      config: ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多