WSO API管理器2.2.0单个IP节流(自定义策略)

时间:2018-06-26 10:06:29

标签: wso2 wso2-am

我正在尝试创建自定义限制策略以限制每个IP的请求。

规则: 每个Ip在1分钟内只能发出5个请求。

我发现油门键只能是resourceKey,userId,apiContext,apiVersion,appTenant,apiTenant或appId。

由于我的api是公共的(不需要身份验证),所以没有UserId,因此我编写了自定义扩展名,这是针对密钥模板限制的基本解决方法,并将Request的IP移至UserId。

但是节流根本不起作用,这是我的Siddhi查询:

FROM RequestStream
SELECT 
userId, 
(apiContext == '/test/v1.0.0' and apiVersion == 'v1.0.0') AS isEligible ,
str:concat(userId,':','/test/v1.0.0:v1.0.0') as throttleKey
INSERT INTO EligibilityStream;

FROM EligibilityStream[isEligible==true]#throttler:timeBatch(1 min)
select throttleKey, (count(userId) >= 5) as isThrottled, expiryTimeStamp
group by throttleKey 
INSERT ALL EVENTS into ResultStream;

任何人都可以帮助解决此任务吗?

0 个答案:

没有答案