帮你快速理解、总结文档立即下载

配置自定义鉴权

最近更新时间:2026-07-23 17:07:34

我的收藏

功能介绍

云原生网关提供自定义鉴权的能力,方便实现在网关入口进行统一鉴权。当客户端请求携带的凭证信息(Token)为自定义的格式时,网关可根据配置将请求转发到中心化的鉴权服务来完成鉴权操作,并根据鉴权结果转发/拒绝请求,以保护 API 接口的通信安全。
云原生网关自定义鉴权流程如下:

云原生网关自定义鉴权提供如下能力:
支持配置在网关服务或路由上,以针对特定路由或特定服务下所有路由进行自定义鉴权。
支持配置鉴权服务不可用策略,包括直接放通和直接拒绝。
支持配置路由白名单,简化使用。即服务下某些白名单路由将不进行鉴权,其余路由进行鉴权。
支持配置鉴权结果返回策略,包括通过 HTTP 状态码标识和通过响应头标识。
鉴权请求支持携带 Header 和 body。
鉴权响应支持保留 Header 和 body(通过响应头传递)。
支持未携带 Token 请求时跳转到重定向地址进行 token 获取。

插件配置说明

字段名称
字段含义
说明
description
插件描述
-
auth service id
鉴权服务 ID
进入云原生网关控制台,单击目标实例 ID 进入实例详情页,单击左侧服务路由,单击服务,在服务列表中可直接复制服务 ID
auth service path
鉴权 API 路径
-
token key name
存放 Token 的请求头名称
-
route id whitelist
路由白名单,路由 ID 列表不进行鉴权。
-
timeout
超时时间:鉴权服务超时时间,默认 10 秒。
-
auth server unavailable policy
鉴权服务不可用策略,当鉴权服务不可用时,网关处理客户端请求的策略。支持直接放通(allow)和直接拒绝(deny)两种。
直接放通(allow):当鉴权服务不可用时,网关直接放通客户端请求到后端服务。
直接拒绝(deny):当鉴权服务不可用时,网关拒绝客户端请求,返回403状态码,返回 Header 标识鉴权服务不可用。
redirect path
请求未携带 Token 时的重定向路径
网关返回 302 进行重定向,重定向 URL 拼接规则为:{请求scheme}://{请求Host}/{redirect_path}
allow request body
鉴权请求中是否允许携带 Body
-
allow request headers
鉴权请求允许携带的 Header 列表
-
auth result identifier
鉴权结果返回策略,支持通过 HTTP 状态码标识(HTTP_status_code)或通过响应头(response_header)返回两种
HTTP 状态码标识(HTTP_status_code):鉴权服务返回 200 时,鉴权成功;其余均认为鉴权失败。
通过响应头返回(response_header):鉴权服务器到网关返回 HTTP 200 ,通过自定义响应头标识鉴权结果,当指定响应对应值为 true 时,鉴权成功,响应头对应值为 false 或空时,鉴权失败。
auth result response header
鉴权结果自定义响应头
-
auth body header
鉴权响应 Body 所属响应头
支持将鉴权服务返回 Body 存放在自定义响应头中传回客户端。
allow response headers
鉴权响应中允许携带的 Header 列表
-

使用场景

前提步骤

1. 创建需要访问的后端服务 nginx 和路由。
2. 新建鉴权服务 auth_service,根据鉴权服务信息,填写服务类型、地址列表、请求协议。

3. 单击服务 ID,单击服务信息页签查看服务信息



4. 安装自定义鉴权插件
进入插件管理,选择系统插件 > tse-custom-auth,单击安装最新版本即可安装。


场景一:鉴权结果通过 HTTP 状态码标识

场景说明:当您的鉴权服务器使用 HTTP 状态码标识鉴权结果时,可配置 auth result identifier 为 HTTP status code,网关将根据鉴权服务器返回的状态码判定鉴权结果,当状态码为 200 时认为鉴权成功,网关将转发请求到后端服务;其余情况则认为鉴权失败,拒绝请求。
操作步骤:
1. 登录 TSF 控制台
2. 在左侧导航栏选择云原生网关 ,单击目标实例进入实例详情。
3. 在基础信息页面,单击 Konga 控制台标签查看管理控制台登录方式。

4. 单击左侧 Service 页面,单击 nginx 服务进入详情。



5. 单击 Plugins > +ADD Plugin 添加自定义鉴权插件



6. 填写插件配置,单击 ADD PLUGIN,设置鉴权结果返回策略为 HTTP 状态码。



7. 确认插件已绑定后端服务。



8. 未携带 Token 访问后端服务,访问被拒绝,返回 401。



9. 携带正确的 Token 访问后端服务,成功访问后端服务。



10. 携带错误的 Token 访问后端服务,访问被拒绝,返回 401。




场景二:鉴权结果通过响应头返回失败信息

场景说明:当您的客户端始终接受 200 状态码,需要通过响应头来标识鉴权结果时,可配置 auth result identifier 为 response header,并定义一个存放鉴权结果的 Header 头。网关将尝试获取该响应头的值判定鉴权结果,当 Header 值为 true 时认为鉴权成功,网关将转发请求到后端服务;其余情况则认为鉴权失败,拒绝请求。
操作步骤:
1. 登录 TSF 控制台
2. 在左侧导航栏选择云原生网关 ,单击目标实例进入实例详情。
3. 在基础信息页面,单击 Konga 控制台标签查看管理控制台登录方式。
4. 单击链接进入 Konga 控制台登录页面,输入用户名密码进入 Konga 控制台。



5. 单击 nginx 服务进入详情,单击 Plugins > +ADD Plugin 添加自定义鉴权插件。

6. 填写插件配置,单击 ADD PLUGIN,设置鉴权结果返回策略为响应头,并定义鉴权结果所在的响应头 Header 为 AuthRes。



7. 确认插件已绑定后端服务。



8. 鉴权服务返回响应头 AuthRes=true 时,鉴权通过。



9. 鉴权服务未返回响应头 AuthRes 时,鉴权失败。




场景三:鉴权服务不可用场景

场景说明:当鉴权服务不可用(没有回包)时,网关会根据您的配置对请求进行全部放通/全部拒绝。
操作步骤
1. 登录 TSF 控制台
2. 在左侧导航栏选择云原生网关 ,单击目标实例进入实例详情。
3. 在基础信息页面,单击 Konga 控制台标签查看管理控制台登录方式。
4. 单击链接进入 Konga 控制台登录页面,输入用户名密码进入 Konga 控制台。



5. 单击 nginx 服务进入详情,单击 Plugins > +ADD Plugin 添加自定义鉴权插件。



6. 填写插件配置,单击 ADD PLUGIN,设置鉴权服务不可用策略为直接拒绝,配置超时时间为 5000(即 5 秒)。



7. 模拟鉴权服务故障,携带 Token 请求服务,请求在达到超时时间后拒绝,返回的 Header 中标注失败原因。





8. 修改插件配置,设置鉴权服务不可用策略为直接放通。



9. 模拟鉴权服务故障,携带 Token 请求服务,请求在达到超时时间后认为鉴权服务无响应,直接放通请求。




Ingress 配置方式

1. 定义 KongPlugin 资源,可参考如下示例:
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: my-test-auth
config:
timeout: 10000
allow_request_body: true
token_key_name: Authorization
auth_result_identifier: response_header
auth_result_response_header: AuthResponse
auth_service_path: /
auth_body_header: AuthBody
redirect_path: null
allow_response_headers:
- myRespHeader1
- myRespHeader2
- myRespHeader3
allow_request_headers:
- myReqHeader
auth_service_id: 73efd5bb-7468-43bc-9ca6-03f118169ca2
route_id_whitelist: null
description: null
auth_server_unavailable_policy: allow
plugin: tse-custom-auth
2. 将插件绑定在 service 或 route 上。
kubectl apply -f tseauth.yaml
kubectl annotate service nginx konghq.com/plugins=my-test-auth