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

如何在WSO2 API Manager 3.2.0中按用户对REST API单资源限流

在WSO2 API Manager 3.2.0实现单资源级按订阅用户限流

1. 创建自定义速率限制策略

登录WSO2 AM管理控制台,进入Rate Limiting Policies -> Policies:

  • 点击Add Policy,选择Custom Policy
  • 填写策略名称(比如PerUserPerResourceLimit),描述按需补充
  • 在Policy Definition中用Synapse语法编写限流规则,核心是结合令牌关联的用户标识与资源路径作为限流维度:
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
            wsu:Id="PerUserPerResourceLimit">
    <wsp:ExactlyOne>
        <wsp:All>
            <ratelimit:RateLimit xmlns:ratelimit="http://www.wso2.org/products/wso2commons/ratelimit"
                                 type="fixed">
                <ratelimit:ID>PerUserPerResource</ratelimit:ID>
                <ratelimit:TimeUnit>minute</ratelimit:TimeUnit>
                <ratelimit:Limit>10</ratelimit:Limit> <!-- 可修改为实际需求的限制次数 -->
                <ratelimit:KeyTemplate>$ctx:api.ut.userName:$ctx:api.uri.template</ratelimit:KeyTemplate>
                <!-- 组合用户名+资源模板作为限流键,也可替换为$ctx:oauth2.subject用令牌sub字段 -->
            </ratelimit:RateLimit>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
  • 保存策略

2. 绑定策略到目标API资源

进入发布者控制台打开目标API:

  • 切换到Resources标签,找到需要限流的具体资源(比如/users/{id})
  • 点击资源的Edit按钮,进入编辑页
  • 在Rate Limiting区域选择刚创建的PerUserPerResourceLimit策略
  • 保存配置后重新发布API(已发布的API需重新发布使配置生效)

3. 验证限流效果

  • 使用订阅用户的令牌连续调用目标资源,超过设定的限制次数后
  • 网关会返回429 Too Many Requests响应,说明限流规则生效

关键细节说明

  • 限流键逻辑:$ctx:api.ut.userName对应订阅用户的用户名,$ctx:api.uri.template对应资源的模板路径,二者组合实现“单用户-单资源”的独立限流维度
  • 时间单位支持second/minute/hour/day,可根据业务需求调整
  • 需确保API的应用级/全局级限流策略不会覆盖该资源级策略(资源级限流优先级更高)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:22:53