在 Azure API 管理中,当不需要订阅时,如何解决 API 的产品级别策略?
In Azure API Management How are product level policies resolved for APIs when subscriptions are not required?
我在 Azure API 管理中有以下设置:
两个产品:Internal
和 Starter
。
一个api:Finance
,即包含在上述两个产品中。 Finance
api 还清除了 Subscription required
复选框 ,因此不需要订阅。
Internal
产品具有执行 JWT 验证的策略。 Starter
产品没有。
在 API 的测试选项卡中,我可以通过 Apply Product Scope
下拉菜单选择产品范围。据推测,这决定了应用哪些产品政策。
调用 API 时,如果我没有提供有效令牌,JWT 验证就会启动并拒绝我的请求。但是,由于我没有用于识别产品的订阅密钥,它可能是 Internal
或 Starter
产品 - 系统如何确定它应该应用包含 jwt- 的 Internal
策略验证规则而不是 Starter
政策哪个不是?
答案是 Starter 产品虽然可以在 API 屏幕中测试,但在产品级别被标记为 "Requires Subscription",这会覆盖 API 级别设置。因此,它不符合条件。
尝试更改此设置失败并出现错误 Product cannot be made open since it has APIs that are already part of an open product.
,这很有意义并消除了任何歧义。
当请求进来时,首先识别API和操作。然后 APIM 尝试识别订阅。如果提供了产品订阅密钥,它将用于识别产品并执行其策略。如果提供了 API 订阅密钥,则会检查它是否与识别的 API 匹配,并且根本不会执行任何产品政策。
如果请求中没有订阅密钥,APIM 检查是否存在将“需要订阅”设置为 false 的产品,以及此类产品是否包含已识别的 API。如果存在此类匹配项,将使用产品并执行其政策。如果没有找到这样的匹配项,APIM 将检查 API 是否已将 Subscription required 设置为 false,如果是,则调用将在没有产品的情况下继续进行。
“测试”选项卡使用一个特殊的键 - 主键,除此之外,此键允许您强制使用某个产品进行呼叫,即使 API 未包含在其中。这主要用于测试目的,主密钥不应该真正用于生产。
我在 Azure API 管理中有以下设置:
两个产品:Internal
和 Starter
。
一个api:Finance
,即包含在上述两个产品中。 Finance
api 还清除了 Subscription required
复选框 ,因此不需要订阅。
Internal
产品具有执行 JWT 验证的策略。 Starter
产品没有。
在 API 的测试选项卡中,我可以通过 Apply Product Scope
下拉菜单选择产品范围。据推测,这决定了应用哪些产品政策。
调用 API 时,如果我没有提供有效令牌,JWT 验证就会启动并拒绝我的请求。但是,由于我没有用于识别产品的订阅密钥,它可能是 Internal
或 Starter
产品 - 系统如何确定它应该应用包含 jwt- 的 Internal
策略验证规则而不是 Starter
政策哪个不是?
答案是 Starter 产品虽然可以在 API 屏幕中测试,但在产品级别被标记为 "Requires Subscription",这会覆盖 API 级别设置。因此,它不符合条件。
尝试更改此设置失败并出现错误 Product cannot be made open since it has APIs that are already part of an open product.
,这很有意义并消除了任何歧义。
当请求进来时,首先识别API和操作。然后 APIM 尝试识别订阅。如果提供了产品订阅密钥,它将用于识别产品并执行其策略。如果提供了 API 订阅密钥,则会检查它是否与识别的 API 匹配,并且根本不会执行任何产品政策。
如果请求中没有订阅密钥,APIM 检查是否存在将“需要订阅”设置为 false 的产品,以及此类产品是否包含已识别的 API。如果存在此类匹配项,将使用产品并执行其政策。如果没有找到这样的匹配项,APIM 将检查 API 是否已将 Subscription required 设置为 false,如果是,则调用将在没有产品的情况下继续进行。
“测试”选项卡使用一个特殊的键 - 主键,除此之外,此键允许您强制使用某个产品进行呼叫,即使 API 未包含在其中。这主要用于测试目的,主密钥不应该真正用于生产。