Политики не применяются для некоторых API в Azure API Management - PullRequest
0 голосов
/ 08 января 2020

Мы настроили API-шлюз в Azure (План потребления). Здесь у нас есть несколько различных API, уже работающих. Недавно мы работали над новым API и добавили его в шлюз.

Все выглядело хорошо, пока мы не начали замечать некоторые странные действия с новым API. Некоторые политики не работали, и кажется, что трассировка также не работает для конкретного API. Трассировка говорит, что заголовок Ocp-Apim-Trace-Location отсутствует, хотя мы тестируем его через портал. Одна вещь, которую я заметил, заключалась в том, что трассировка работала, если запрос не доходил до нашего бэкэнда.

Политики, которые у нас не работают: set-header, cache-store и cache-lookup. Таким образом, ничего не сохраняется в нашем внешнем перенаправлении, и мы не можем установить какие-либо заголовки ответа.

Это работает для всех других API в шлюзе и также работает для нового API в нашем экземпляре dev / test .

Я попытался создать новый API и импортировал нашу OpenAPI spe c, которая ничего не делала, и я не нашел в Интернете ничего, связанного с нашей проблемой.

Любая помощь приветствуется!

Политика .

<policies>
<inbound>
    <!--base: Begin Api scope-->
    <!--base: Begin Product scope-->
    <!--base: Begin Global scope-->
    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized.  Access token is missing or invalid." output-token-variable-name="jwt">
        <openid-config url="https://<url-to-openid-config>" />
        <audiences>
            <audience>apim</audience>
        </audiences>
    </validate-jwt>
    <!--base: End Global scope-->
    <!--base: End Product scope-->
    <set-query-parameter name="apiKey" exists-action="override">
        <value>{{key}}</value>
    </set-query-parameter>
    <!--base: End Api scope-->
    <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" allow-private-response-caching="true" downstream-caching-type="none">
        <vary-by-header>Accept</vary-by-header>
        <vary-by-header>Accept-Charset</vary-by-header>
    </cache-lookup>
</inbound>
<backend>
    <!--base: Begin Api scope-->
    <!--base: Begin Product scope-->
    <!--base: Begin Global scope-->
    <forward-request timeout="60" />
    <!--base: End Global scope-->
    <!--base: End Product scope-->
    <!--base: End Api scope-->
</backend>
<outbound>
    <cache-store duration="20" />
    <set-header ="headerName" exists-action="override">
         <value>value</value>
    </set-header>
</outbound>
<on-error />

...