是否有可能创建一个策略,即使需要opim订阅密钥,该策略也会有条件地公开api管理端点?

时间:2020-07-14 17:17:46

标签: azure azure-api-management

我要寻找的示例如下,但是allow-access元素不存在。我可以替换为什么,以便不检查订阅密钥。即在这种情况下,只要所有调用者发出GET请求,它都将允许其访问控制器。

<policies>
<inbound>
    <base />
    <choose>
        <when condition="@(context.Request.Method.Equals("GET"))">
            <allow-access />
        </when>
    </choose>
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

一种解决方法是关闭产品上的Requires subscription设置,然后自己检查入站策略中的订阅密钥。这是一个示例。

  1. 转到Starter产品的设置
  2. 取消选中需要订阅并保存。
  3. 打开产品的策略,然后将以下策略添加到入站。 <check-header>策略的值是Starter产品的订阅密钥。
<choose>
    <when condition="@(!context.Request.Method.Equals("GET"))">
        <check-header name="Ocp-Apim-Subscription-Key" failed-check-httpcode="401" failed-check-error-message="Not authorized" ignore-case="false">
            <value>920b4e307f4f41ff9bd4a3bd6a5450ee</value>
        </check-header>
    </when>
</choose>