iPaaS文档库 iPaaS文档库
00 概述
01 产品安装指南
02 快速入门指南
03 Studio使用指南
04 iPaaS使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 产品集成指南
09 FAQ
10 iPaaS上线指南
运维指南
  • 策略类型
  • 策略添加应用对象的限制
  • 策略的优先级
  • 所属系统
  • 自定义策略操作手册
  • 1. 概述
  • 1.1 关键概念
  • 1.2 插件与策略的关系
  • 2. 整体流程一览
  • 3. 前置条件
  • 4. 第一步:开发并部署网关自定义插件
  • 4.1 开发插件
  • 4.2 部署插件
  • 5. 第二步:在管理端注册插件
  • 5.1 进入网关插件管理
  • 5.2 新增插件
  • 5.3 插件的其他管理操作
  • 6. 第三步:配置插件元数据
  • 6.1 进入插件元数据管理
  • 6.2 新增插件元数据
  • 6.3 控件类型为"选择框"时
  • 6.4 元数据的其他管理操作
  • 7. 第四步:创建 API 策略
  • 7.1 进入 API 策略管理
  • 7.2 新建策略
  • 7.3 策略配置数据说明
  • 7.4 策略的编辑与删除
  • 8. 第五步:绑定策略应用对象
  • 8.1 应用对象粒度
  • 8.2 策略添加应用对象的限制
  • 8.3 绑定方式
  • 8.4 策略的优先级
  • 9. 第六步:发布与验证
  • 9.1 确保路由已发布
  • 9.2 验证策略已生效
  • 10. 策略的生效与热更新机制
  • 11. 常见问题与排错
  • Q1:API 策略管理页面看不到我的自定义插件
  • Q2:策略配置表单字段不正确或缺失
  • Q3:策略已创建并绑定,但网关过滤器读不到策略参数(返回 null)
  • Q4:策略配置 JSON 的 key 与网关 POJO 字段对不上
  • Q5:插件 jar 已放进 lib/ 但过滤器完全不生效
  • Q6:Windows 下替换插件 jar 报"文件被占用"
  • Q7:删除策略后接口报错或策略仍残留
  • 12. 完整链路校验清单

API策略页面内置了25种API策略,可实现路由,API接口,订阅关系粒度的API拦截管控。

发布到APIGateway Server上的API可配置全部策略。

发布到ESB Server上的API可配置Basic认证、数字签名、Token认证、请求频次、请求超时、请求体限流、数据脱敏、黑白名单、日志存储9种策略。

具体策略使用详情请参考 API策略说明 。

# 策略类型

管理人员登录系统,进入管理门户,点击菜单“安全管理”>"API策略“,进入API策略页面,默认展示策略类型页签。 策略类型包含:认证策略、流量控制、数据处理、访问控制、日志策略类型。API策略的应用对象为API,路由,订阅关系。

  1. 应用对象为API粒度的策略管控

  2. 应用对象为路由的策略管控(注意:发布到GATEWAYServer上的接口可配置路由策略)

  3. 应用对象为订阅关系的策略管控

# 策略添加应用对象的限制

1认证策略:一个API只能被认证策略下的某一种认证策略类型的一个策略关联,例如:test接口被Basic认证策略的策略A关联,则test接口无法被Basic认证策略的策略B关联,也无法被Token认证策略的策略1关联。路由、订阅关系和API的限制一致。
2其他策略:一个API只能被一种策略类型的一个策略关联,例如:test接口被流量控制策略的策略A关联,则test接口无法被流量控制策略的策略B关联,但是test接口还可以被请求体限流策略的策略1关联。路由、订阅关系和API策略的限制一致。

# 策略的优先级

策略的控制优先级是“订阅关系>API>路由”。
以Basic认证策略为例,新建三个Basic认证策略(策略A、策略B、策略C),现在有一个已发布接口(test接口),test接口被consumer1和consumer2两个系统订阅,为策略A的订阅关系应用对象添加test接口-consumer1订阅关系,在策略B的API应用对象添加test接口,在策略C的路由应用对象添加test接口的所属路由。在调用test接口时,如果消费方是consumer1则策略A生效,其他消费方调用test接口时则策略B生效,如果策略B的API应用对象删除了test接口,其他消费方调用接口时则策略C生效。

# 所属系统

管理人员登录系统,进入管理门户,点击菜单“安全管理”>"API策略“,进入API策略页面,选择策略类型右侧的所属系统页签,可查看各个系统下所有策略。

  1. 在“所属系统”页签,选择需要查看的系统,右侧将展示该系统下所有策略。

  2. 右侧展示的API策略列表,点击操作栏下的“编辑”按钮,编辑策略完成后,点击“保存”按钮。

  3. 右侧展示的API策略列表,点击操作栏下的“删除”按钮,点击“确定”按钮后,即可删除策略。

# 自定义策略操作手册

适用版本:iPaaS Portal 9.1.0 / API Gateway 9.1.0 适用对象:需要在管理端自定义网关插件、并为该插件创建和绑定 API 策略的管理人员与开发者。


# 1. 概述

网关基于 Spring Cloud Gateway 构建,所有请求拦截逻辑都由 过滤器(Filter) 完成。自定义策略的能力链路如下:

开发者在网关侧开发自定义插件(GatewayFilterFactory)
        ↓  打包部署到网关 lib/
管理员在 iPaaS Portal 注册"插件"记录(插件编码 = 过滤器名)
        ↓  插件编码必须与代码中的策略类型名一致
管理员为插件配置"插件元数据"(定义策略配置表单的字段)
        ↓  元数据字段 = 网关过滤器拦截规则的配置项
管理员基于该插件创建"API 策略"(填写策略配置表单的值)
        ↓  策略配置 = 过滤器运行时读取的参数
管理员将策略绑定到 路由 / API / 订阅关系
        ↓  网关下发策略到过滤器缓存
请求到达 → 过滤器读取策略参数 → 执行拦截逻辑

# 1.1 关键概念

概念 说明
插件 对应网关的 GatewayFilterFactory。网关 FilterFactory 的类名命名规则必须是 插件编码 + GatewayFilterFactory(例如插件编码为 CustomPolicy,则类名为 CustomPolicyGatewayFilterFactory)。
插件元数据 描述策略配置表单的每一个字段。元数据的字段就是网关 Filter 拦截规则的配置项,也对应策略配置 JSON 中的 key。
API 策略 基于某个插件创建的策略实例。策略的配置项由插件的元数据决定,策略的具体取值由管理员填写。
策略类型名 贯穿整条链路的唯一标识。它必须三处保持完全一致:策略缓存类 @Component("X") 的值、getPolicyType() 返回值、过滤器中查询策略时传入的字符串。管理端注册插件时,插件编码必须等于这个策略类型名。

# 1.2 插件与策略的关系

  • 插件的"类别" 对应 策略类型分组(认证策略、流量控制、数据处理、访问控制、日志策略)。API 策略管理页面左侧的策略类型树就是由"分组插件(typeCode=2)"和其下"具体插件(typeCode=0)"两级构成的。
  • 插件的状态:只有状态为"开启"的插件,才会在 API 策略管理页面显示并可用;状态为"关闭"的插件在 API 策略管理页面不显示。
  • 是否启用元数据:开启后才能在操作列使用"插件元数据"管理;元数据决定了策略配置表单长什么样。

# 2. 整体流程一览

步骤 操作位置 角色 产出
① 开发网关自定义插件 网关工程 开发者 插件 jar
② 部署插件 jar 到网关 网关 lib/ 目录 运维 网关加载插件
③ 在 iPaaS Portal 注册插件 安全管理 > 网关插件 管理员 插件记录
④ 配置插件元数据 网关插件 > 插件元数据 管理员 策略配置表单字段
⑤ 创建 API 策略 安全管理 > API 策略 管理员 策略实例(含配置值)
⑥ 绑定策略应用对象 路由 / API / 订阅关系 管理员 策略关联关系
⑦ 发布与验证 路由发布 + 发请求 管理员 策略生效

# 3. 前置条件

  1. 已有可访问的 iPaaS Portal 管理端,且具备"安全管理 > 网关插件"和"安全管理 > API 策略"的菜单权限。
  2. 网关(API Gateway)已安装并能正常启动,lib/ 目录可写入。
  3. 自定义插件的代码已开发完成并通过编译(开发方法见《自定义插件开发指南》)。

⚠️ 最关键的前置约定:插件编码、策略类型名、FilterFactory 类名前缀三者必须一致。例如插件编码填 CustomPolicy,则网关代码中类名必须是 CustomPolicyGatewayFilterFactory,@Component("CustomPolicy") 的值和 getPolicyType() 返回值也必须是 CustomPolicy。三者不一致是策略无法生效的最常见原因。


# 4. 第一步:开发并部署网关自定义插件

# 4.1 开发插件

完整的开发流程请参考5.19 网关自定义插件开发指南。一个完整的自定义插件包含三部分:

组成 作用 是否必需
过滤器工厂 XxxGatewayFilterFactory 真正的过滤逻辑入口 必需
策略配置 POJO XxxPolicyConfig 描述策略参数的 Java 对象,对应管理端配置的 JSON 需要动态配置参数时必需
策略缓存类 XxxPolicyConfigCache 把管理端下发的策略数据缓存到内存供过滤器读取 需要动态配置参数时必需

开发要点:

  1. 包名必须以 com.primeton.gateway 开头,否则网关不会扫描注册 @Component。
  2. FilterFactory 类名 = 插件编码 + GatewayFilterFactory。
  3. 策略类型名三处一致:@Component("X") 的值、getPolicyType() 返回值、过滤器查询字符串。
  4. 产物必须是 thin jar,不要打 fat jar,运行期依赖由网关提供。

# 4.2 部署插件

# 把打包好的插件 jar 放进网关 lib 目录
cp my-gateway-plugin-1.0.0.jar  API_GATEWAY/lib/

# 重启网关生效(运行中放 jar 不会被加载)
cd API_GATEWAY/bin
./shutdown.sh        # Windows 用 shutdown.bat
./startup.sh         # Windows 用 startup.bat

验证:在网关 logs/ 下搜索插件类名,确认 Bean 已被注册。


# 5. 第二步:在管理端注册插件

# 5.1 进入网关插件管理

管理员登录系统,进入管理门户,点击菜单 "安全管理" > "网关插件",进入网关插件页面。

# 5.2 新增插件

点击"新增"按钮,进入新增插件页面,按以下参数说明填写:

参数 说明 填写要求
插件编码 插件唯一不重复标识,网关加载路由通过插件编码定位到插件过滤器。 必须与网关代码中 FilterFactory 类名去掉 GatewayFilterFactory 后缀的部分完全一致,也必须等于策略类型名。例如 CustomPolicy。
插件名称 插件名称(中文描述) 自定义,用于页面展示
类别 插件类型,分为:认证策略、流量控制、数据处理、访问控制、日志策略 决定该插件在 API 策略页面归属哪个策略分组
排序 在插件管理页面中的显示顺序 数字,越小越靠前
状态 开启 / 关闭 开启后在 API 策略管理页面可见可用;关闭则不可见
是否启用元数据 开启 / 关闭 开启后才能在操作列使用"插件元数据"管理
说明 插件的功能介绍和使用方式 自定义文本

填写完成后点击"确定"保存。

📌 插件编码填写示例:假如网关代码里过滤器工厂类名是 CustomPolicyGatewayFilterFactory,策略缓存类注解是 @Component("CustomPolicy"),那么这里的"插件编码"必须填 CustomPolicy。

# 5.3 插件的其他管理操作

  • 编辑:在操作列点击"编辑"可修改插件信息。
  • 删除:只有用户新增的插件才可以删除,系统内置插件无法删除。删除插件会同时删除其下所有元数据。
  • 批量开启 / 批量关闭:勾选多个插件后批量切换状态。关闭的插件在 API 策略管理页面不显示。
  • 查询:支持按插件编码、插件名、状态、类别进行分页查询。

# 6. 第三步:配置插件元数据

插件元数据定义了"基于该插件创建策略时,策略配置表单长什么样"。每一个元数据字段 = 策略配置表单的一个配置项 = 网关过滤器拦截规则的一个参数 = 策略配置 JSON 中的一个 key。

# 6.1 进入插件元数据管理

在"网关插件"管理界面,选择已开启元数据的插件记录,在操作列点击 "插件元数据" 按钮,进入该插件的元数据管理界面。

# 6.2 新增插件元数据

点击"新增"按钮,按以下参数说明填写:

参数 说明 填写要求
插件编码 下拉选择元数据所属的插件 选择当前插件
字段 字段名称,前端请求实际使用的 key 每个插件内不能有重复的字段;必须与网关代码中策略配置 POJO(如 CustomPolicyConfig)的字段名一致,也必须与策略配置 JSON 的 key 一致
数据类型 允许输入的数据类型 数字 / 字符串
控件类型 输入框的类型 输入框 / 密码框 / 选择框
排序 在策略配置页面,字段的显示顺序 数字,越小越靠前
是否必填 策略配置页面该字段是否必填 是 / 否
默认值 字段默认值 可空;新建策略时自动带入
输入提示 字段旁鼠标悬浮提示信息 可空
校验规则 字段支持正则表达式规则校验 可空;填写合法正则
描述 该字段在配置页面显示的内容 即字段的中文名

📌 字段填写示例:网关 CustomPolicyConfig 有 customParam1、customParam2 两个字段,那么这里就要新增两条元数据,"字段"分别填 customParam1、customParam2,"描述"填对应中文说明。这样创建策略时表单就会显示这两个输入框。

# 6.3 控件类型为"选择框"时

当控件类型选择"选择框"时,下拉框的选项通过元数据的扩展配置(extObj)提供,内容格式示例:

[{"label":"是","value":"true"},{"label":"否","value":"false"}]

# 6.4 元数据的其他管理操作

  • 批量删除:勾选多条元数据记录后批量删除。
  • 查询:支持按插件编码、插件名称、字段名称分页查询。
  • 编辑:在操作列点击"编辑"可修改单条元数据。

# 7. 第四步:创建 API 策略

插件和元数据配置完成后,就可以在 API 策略管理页面创建对应的 API 策略。策略的配置项由插件的元数据控制——元数据定义了哪些字段、字段类型、是否必填等,管理员在创建策略时填写这些字段的具体取值。

# 7.1 进入 API 策略管理

管理员登录系统,进入管理门户,点击菜单 "安全管理" > "API 策略",进入 API 策略页面,默认展示策略类型页签。

策略类型包含:认证策略、流量控制、数据处理、访问控制、日志策略。API 策略的应用对象为 API、路由、订阅关系。

自定义插件只要状态为"开启",就会出现在对应类别下的策略类型树中。如果没看到你的插件,请回到"网关插件"页面确认:① 状态已开启;② 类别选择正确。

# 7.2 新建策略

  1. 在策略类型树中,找到你的自定义插件所属的策略类型节点。

  2. 点击"新建策略"(或对应入口),打开策略配置表单。

  3. 表单字段由该插件的元数据动态生成,按字段说明填写策略配置值。

    • 必填字段必须填写(元数据中"是否必填"为"是"的字段)。
    • 字段会按元数据的"排序"值顺序展示。
    • 输入提示、默认值、校验规则都来自元数据配置。
    • 选择框类型的字段,下拉选项来自元数据的扩展配置。
  4. 填写策略名称(同一系统下策略名称不能重复)。

  5. 选择所属系统。

  6. 点击"保存"。

# 7.3 策略配置数据说明

保存策略时,表单填写的值会被序列化为一段 JSON 存储到策略的 policyConfig 字段中。例如:

{ "customParam1": "hello", "customParam2": "world" }

这段 JSON 的 key 就是插件元数据的"字段",也对应网关代码中策略配置 POJO 的属性名。网关收到策略后,会回调插件的 XxxPolicyConfigCache#addPolicyConfig,把 JSON 反序列化为 POJO 存入缓存,供过滤器运行时读取。

💡 因此,元数据的字段名、策略 JSON 的 key、网关 POJO 的属性名,三者必须一致,否则网关反序列化时取不到值。

# 7.4 策略的编辑与删除

  • 编辑:在策略列表操作列点击"编辑",修改配置后保存。修改后会自动同步刷新网关侧的策略缓存。
  • 删除:在策略列表操作列点击"删除"。删除策略前会自动解绑其所有应用对象关联,并同步通知网关清除对应策略缓存,同时触发受影响路由的重新发布。

# 8. 第五步:绑定策略应用对象

策略创建后,需要绑定到具体的路由 / API / 订阅关系才会生效。

# 8.1 应用对象粒度

API 策略支持三种粒度的应用对象:

粒度 effectLevel 说明
路由 1 对某条路由下所有接口生效(仅发布到 Gateway Server 的接口可配置路由策略)
API 2 对某个具体接口生效
订阅关系 3 对"某个消费方 + 某个接口"的组合生效

# 8.2 策略添加应用对象的限制

  1. 认证策略:一个 API 只能被认证策略下的某一种认证策略类型的一个策略关联。例如 test 接口被 Basic 认证策略的策略 A 关联,则无法再被 Basic 认证策略的策略 B 关联,也无法被 Token 认证策略的策略 1 关联。路由、订阅关系和 API 的限制一致。
  2. 其他策略:一个 API 只能被一种策略类型的一个策略关联。例如 test 接口被流量控制策略的策略 A 关联,则无法再被流量控制策略的策略 B 关联,但还可以被请求体限流策略的策略 1 关联。路由、订阅关系和 API 的限制一致。

# 8.3 绑定方式

在策略详情页或应用对象管理页,将策略关联到目标路由 / API / 订阅关系。保存关联后:

  • 系统会自动同步策略关系到网关侧。
  • 系统会自动触发受影响路由的重新发布,使策略在网关生效。
  • 重复关联同一对象会被拦截并提示"不能重复选择该策略"。

# 8.4 策略的优先级

策略的控制优先级是 "订阅关系 > API > 路由"。

以 Basic 认证策略为例,新建三个 Basic 认证策略(策略 A、策略 B、策略 C),有一个已发布接口(test 接口),test 接口被 consumer1 和 consumer2 两个系统订阅:

  • 策略 A 的订阅关系应用对象添加 test 接口 - consumer1 订阅关系
  • 策略 B 的 API 应用对象添加 test 接口
  • 策略 C 的路由应用对象添加 test 接口的所属路由

调用 test 接口时:

  • 如果消费方是 consumer1 → 策略 A 生效
  • 其他消费方调用 test 接口 → 策略 B 生效
  • 如果策略 B 的 API 应用对象删除了 test 接口 → 其他消费方调用时 策略 C 生效

# 9. 第六步:发布与验证

# 9.1 确保路由已发布

策略绑定到路由/API/订阅关系后,需确保对应路由已发布到网关。新建或修改策略关联时系统会自动触发受影响路由的重新发布。

# 9.2 验证策略已生效

方式一:查看网关日志。

发起一次请求,在网关 logs/ 下查看过滤器是否打印了执行日志(如示例中的 custom filter execute),以及策略参数是否被正确读取。

方式二:发请求实测。

向绑定了策略的接口发起请求,观察:

  • 过滤器是否被执行(日志确认)。
  • 策略参数值是否正确(日志中打印的参数值应与策略配置一致)。
  • 拦截效果是否符合预期(如拒绝、放行、改写等)。

方式三:策略缓存匹配优先级。

网关侧策略缓存的匹配优先级为:ClientId+OperationCode > OperationCode > RouteId。即订阅关系级别策略 > API 级别策略 > 路由级别策略 > 系统级别策略,与管理端的优先级规则一致。


# 10. 策略的生效与热更新机制

操作 网关侧行为
新建策略 策略数据写入 iPaaS Portal 数据库;绑定应用对象后才下发到网关
修改策略 自动同步刷新网关侧策略缓存
删除策略 自动解绑所有应用对象关联,同步通知网关清除策略缓存,并重发布受影响路由
新增策略关联 系统级/API级/订阅关系级会触发受影响路由重发布
删除策略关联 同步清除网关侧对应策略缓存,并重发布受影响路由

# 11. 常见问题与排错

# Q1:API 策略管理页面看不到我的自定义插件

排查:

  • 回到"网关插件"页面,确认插件状态为"开启"。关闭状态的插件在 API 策略页面不显示。
  • 确认插件的类别选择正确,策略类型树按类别分组展示。
  • 自定义插件不支持ESB Server,如果接口发布到 ESB Server(而非 Gateway Server),则该插件不会出现在该接口的策略配置中。

# Q2:策略配置表单字段不正确或缺失

排查:

  • 确认插件**"是否启用元数据"为开启**状态。
  • 进入"插件元数据"管理,确认对应字段已新增且"字段"名正确。
  • 元数据的"字段"名必须与网关代码中策略配置 POJO 的属性名完全一致(区分大小写)。

# Q3:策略已创建并绑定,但网关过滤器读不到策略参数(返回 null)

排查:

  • 确认插件编码、策略类型名、FilterFactory 类名前缀三者完全一致。
    • 插件编码 = CustomPolicy
    • 网关类名 = CustomPolicyGatewayFilterFactory
    • @Component("CustomPolicy") 的值 = CustomPolicy
    • getPolicyType() 返回值 = CustomPolicy
    • 过滤器中 PolicyConfigCacheUtil.getPolicyConfig(exchange, "CustomPolicy", ...) 的字符串 = CustomPolicy
  • 确认策略已绑定到当前请求命中的路由/API/订阅关系。
  • 确认网关已重启加载了插件 jar(运行中放 jar 不生效)。
  • 确认策略缓存类的包名以 com.primeton.gateway 开头(否则不被扫描注册)。

# Q4:策略配置 JSON 的 key 与网关 POJO 字段对不上

原因: 元数据的"字段"名与网关策略配置 POJO 的属性名不一致,导致网关反序列化时取不到值。

解决: 修改元数据的"字段"名,使其与 POJO 属性名完全一致;或修改 POJO 属性名使其与元数据一致。两者改完后,已创建的策略需要重新编辑保存以重新生成 JSON。

# Q5:插件 jar 已放进 lib/ 但过滤器完全不生效

排查:

  • 确认已重启网关(lib/ 目录在 JVM 启动那一刻固定,运行中新增 jar 不会被加载)。
  • 确认所有类的包名以 com.primeton.gateway 开头(网关只扫描该包及其子包)。
  • 确认插件 jar 是 thin jar(不含 BOOT-INF/、不含 spring/reactor 等第三方包),fat jar 会导致类加载失败。
  • 确认路由的 filters 已加上过滤器名(去掉 GatewayFilterFactory 后缀的部分)。

# Q6:Windows 下替换插件 jar 报"文件被占用"

原因: JVM 运行期间持有 jar 文件句柄。

解决: 先停止网关,再替换 jar,再启动。

# Q7:删除策略后接口报错或策略仍残留

排查: 删除策略时系统会自动解绑关联并通知网关清除缓存、重发布受影响路由。如果网关侧未及时刷新,可手动重发布对应路由。


# 12. 完整链路校验清单

在完成自定义策略的全流程配置后,请逐条确认:

检查项 期望
网关插件 jar 已放入 lib/ 并重启网关 是
插件所有类的包名 以 com.primeton.gateway 开头
插件 jar 为 thin jar 是(不含 BOOT-INF、不含第三方包)
FilterFactory 类名 插件编码 + GatewayFilterFactory
@Component("X") 的值 / getPolicyType() 返回值 / 过滤器查询字符串 三者完全一致,且等于插件编码
iPaaS Portal 中插件记录的插件编码 与上述策略类型名一致
插件状态 开启
插件"是否启用元数据" 开启
元数据的"字段"名 与网关 POJO 属性名、策略 JSON key 一致
策略已创建并填写配置值 是
策略已绑定到路由/API/订阅关系 是
路由已发布到网关 是
发请求验证过滤器执行且参数正确 是

至此,你已经掌握了从开发网关自定义插件、注册插件元数据、创建 API 策略、到绑定应用对象并验证生效的完整操作流程。

← 4.1.3.4 网关插件 4.1.3.6 告警策略 →