我的应用程序接口管理实例中有几个产品,我们称它们为Product 1和Product 2。
这两个产品都添加了一个名为Inventory的接口。
对于Product 1,我将Subscription required设置为true。
对于Product 2,我将Subscription required设置为false。

到目前为止,这工作得很好。
现在,我也在我的Inventory应用编程接口上将Subscription required标志设置为true。我想强制人们在调用此接口时指定有效的订阅密钥。

但我注意到的是,API级别的这个标志并没有被强制执行(正确吗?)。我仍然可以在没有订阅密钥的情况下调用Inventory应用程序接口。
我的猜测是,Product 2策略否决了在API级别设置的Subscription required设置。这是正确的吗?
我的实际问题是,如何强制执行特定的API,该API始终需要有效的订阅密钥,同时仍然拥有一个“开放”产品?
发布于 2021-06-04 09:13:08
只要API附加到开放产品上,您就可以随时调用它,而无需订阅,这是经过设计的。如果要强制发送订阅密钥,则必须将其从打开产品中删除,或者将其标记为需要订阅。
由于以下原因,添加策略实际上是低效和肮脏的
您需要跟踪所有订阅密钥值(已删除、已添加、已删除( regenerated...etc).,
发布于 2021-06-03 16:06:46
我在我的侧面测试了它,也和你的功能一样。当我使用两个产品(一个启用Requires subscription,另一个禁用Requires subscription)时,它们都有一个api。即使我开启了Subscription required,接口也不会检查订阅密钥。
作为解决方法,您可以在您的<outbound>接口中添加一个策略,如下所示。添加的策略用于手动检查订阅密钥。

https://stackoverflow.com/questions/67816473
复制相似问题