wso2 - 在 API Manager 上添加新的默认层
问题描述
我正在使用 API 管理器 2.2.0
默认情况下,WSO2 API Manager 附带一些订阅限制策略,例如 Gold、Silver 和 Bronze。我想添加一个新的,名为 Diamond。
我使用管理网页(例如https://localhost:9443/admin)在所有现有租户上添加了这个新层。
我现在想要的是在创建新租户时默认生成此钻石层。
我编辑了文件,default-tiers.xml
添加了以下代码:
<wsp:Policy>
<throttle:ID throttle:type="ROLE">Diamond</throttle:ID>
<wsp:Policy>
<throttle:Control>
<wsp:Policy>
<throttle:MaximumCount>2000</throttle:MaximumCount>
<throttle:UnitTime>1000</throttle:UnitTime>
<wsp:Policy>
<throttle:Attributes>
<throttle:x-wso2-BillingPlan>FREE</throttle:x-wso2-BillingPlan>
<throttle:x-wso2-StopOnQuotaReach>true</throttle:x-wso2-StopOnQuotaReach>
</throttle:Attributes>
</wsp:Policy>
</wsp:Policy>
</throttle:Control>
</wsp:Policy>
</wsp:Policy>
当我创建新租户并访问管理网页时,该层不存在。如果我浏览该租户的 Carbon 资源,我可以看到该文件tiers.xml
包含上面的代码。
由于当我使用此 Diamond 层订阅 API 时新闻租户没有它,它总是向我返回 403。如果我使用其他的(例如黄金),一切都会按预期工作。
如何将新层添加到默认层列表中?
非常感谢任何帮助。
解决方案
由于租户是孤立的实体,因此没有 OOTB 方法来实现这一点。但是,您可以使用TenantMgtListener
(实现onTenantCreate
)[1] 并调用订阅添加 API[2]。
[1] https://docs.wso2.com/display/Carbon4411/TenantMgtListener [2] https://docs.wso2.com/display/AM260/apidocs/admin/#!/operations#SubscriptionPolicyCollection#throttlingPoliciesSubscriptionPost
psdefault-tiers.xml
也没有tiers.xml
在新的限制实现中使用。
推荐阅读
- javascript - 使用来自先前试验的用户输入作为新试验的刺激
- imagick - Imagick::steganoImage() 无法显示水印
- python - 我使用列表推导错了吗?
- c++ - 使用逗号运算符的 C++ for 具有多个控制语句
- python-3.x - 别人提到你的时候怎么办?(discord.py)
- dask - 调用 to_csv 时出现 Dask DataFrame MemoryError
- reactjs - 如何通过 SetState 使用/制作回调函数
- kotlin - Kotlin - 字符串中的唯一字符
- node.js - 如何验证用户是否已通过身份验证并存在于firebase中,当对rest-api进行读/写操作时,在nodejs中,UI处于颤动状态?
- tensorflow - Keras SGD Optimizer 的“get_updates”方法中当前批次的前向传递计算