在 Azure API 管理中,当不需要订阅时,如何解决 API 的产品级策略?

Jam*_*rld 4 azure-api-management

我在 Azure API 管理中有以下设置:

两种产品:InternalStarter

一个 api: Finance,即包含在上述两个产品中。该FinanceAPI也有Subscription required复选框清除,因此不需要订阅。

Internal产品具有执行 JWT 验证的策略。该Starter产品没有。

在 API 的测试选项卡中,我可以通过Apply Product Scope下拉菜单选择产品范围。据推测,这决定了应用哪些产品策略。

在调用 API 时,如果我没有提供有效的令牌,JWT 验证就会启动并拒绝我的请求。但是,由于我没有用于标识产品的订阅密钥,它可能是 theInternalStarterproduct - 系统如何确定它应该应用Internal包含 jwt-validation 规则的Starter策略而不是不应用的策略?

Vit*_*tin 5

当请求进来时,首先识别 API 和操作。然后 APIM 尝试识别订阅。如果提供了产品订阅密钥,它将用于识别产品并执行其策略。如果提供了 API 订阅密钥,则会检查它是否与标识的 API 匹配,并且根本不会执行任何产品策略。

如果请求中不存在订阅密钥,APIM 会检查是否存在将 Subscription required 设置为 false 的产品,以及此类产品是否包含已识别的 API。如果有这样的匹配,产品将被使用并执行它的策略。如果没有找到这样的匹配,APIM 将检查 API 是否已将 Subscription required 设置为 false,如果是,则调用将在没有产品的情况下继续进行。

测试选项卡使用一个特殊的密钥 - 主密钥,除其他外,该密钥允许您强制使用某个产品进行调用,即使 API 未包含在其中。这主要用于测试目的,并且主密钥不应该真正用于生产。