Политика ключа подписки Azure APIM не работает

Я пытаюсь разобраться в Azure APIM, в первую очередь я использую его для привязки функций Azure к доменному имени, все конечные точки общедоступны и все используют OAuth для аутентификации.

Однако у меня возникла проблема с ключами подписки. Мой главный вопрос: нужны ли они? мой API работает, если я захожу в настройки и выбираю ключ подписки, необходимый для ложного значения, но я не могу заставить его работать, добавляя политику для входящей политики, чтобы добавить ее

<inbound>
    <base />
    <set-header name = "Ocp-Apim-Subscription-Key" exists-action = "override">
        <value>{{subscription-key}}</value>
    </set-header>
</inbound>

так они мне нужны? (я бы хотел, чтобы политика работала независимо от того, просто потому что), любые предложения будут оценены

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
142
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы отключили в настройках опцию «Требовать ключ подписки», то вам не нужно передавать Ocp-Apim-Subscription-Key при вызове любого запроса.

Формат {{subscription-key}} используется, когда вы хотите получить значение ключа подписки параметра именованного значения.

В APIM имя заголовка Ocp-Apim-Subscription-Key используется для главного ключа подписки, который показан ниже.

  • После отключения опции «Требуется ключ подписки» в настройках Ocp-Apim-Subscription-Key по-прежнему передается в заголовке запроса по умолчанию при тестировании операций API на портале. Вы можете проверить это, используя приведенную ниже политику, и проверить трассировку.
<policies>
    <inbound>
        <base />
        <check-header name = "Ocp-Apim-Subscription-Key" failed-check-httpcode = "200" failed-check-error-message = "Ignore subscription key" />
    </inbound>
</policies>
  • Но вам не нужно явно передавать ключ Ocp-Apim-Subscription-Key в заголовке запроса, если вы тестируете его за пределами портала, как в почтальоне, когда для требуемого ключа подписки установлено значение false. Если этот параметр включен, вам необходимо указать ключ в заголовке запроса.

  • Вы можете использовать приведенную ниже политику для передачи значения ключа Ocp-Apim-Subscription-Key, если для требуемого ключа подписки установлено значение false.
<policies>
    <inbound>
        <base />
        <set-header name = "hasSubscriptionKey" exists-action = "override">
            <value>@(context.Request.Headers.GetValueOrDefault("Ocp-Apim-Subscription-Key", ""))</value>
        </set-header>
    </inbound>
</policies>

След-

Или вы также можете использовать приведенную ниже политику.

<policies>
    <inbound>
        <base />
        <set-header name = "Ocp-Apim-Subscription-Key" exists-action = "override">
            <value>@(context.Subscription.Key)</value>
        </set-header>
    </inbound>
</policies>

Если для требуемого ключа подписки установлено значение true, вам необходимо явно передать ключ Ocp-Apim-Subscription-Key при вызове URL-адреса запроса. Необходимо обеспечить дополнительный уровень безопасности, чтобы пользователь с ключом мог получить доступ только к API.

извините, это не отвечает на мой вопрос, мой вопрос заключался в том, если для API требуется идентификатор подписки, для которого установлено значение true, как я могу передать его с помощью политики, чтобы мне не приходилось добавлять его вручную (возможно ли это вообще), и Есть ли смысл делать это для публичного API?

EnenDaveyBoy 23.05.2024 14:18

@EnenDaveyBoy В твоем вопросе говорится об этом if i go into the settings and select subscription key required to false, but i can't get it to work my adding a policy on the inbound policy to add it? Итак, вы хотите установить для него значение true и ключ подписки с использованием политики, чтобы вам не нужно было явно передавать Ocp-Apim-Subscription-Key при вызове?

Ikhtesam Afrin 23.05.2024 14:21

это еще не все, вся часть гласит: «Однако у меня проблема с ключом подписки, мой главный вопрос: нужны ли они? Мой API работает, если я захожу в настройки и выбираю ключ подписки, необходимый для ложного, но я могу Не могу заставить это работать, добавляя политику для входящей политики, чтобы добавить ее"

EnenDaveyBoy 23.05.2024 14:27

@EnenDaveyBoy Да, это необходимо, если вы хотите защитить его от внешнего доступа.

Ikhtesam Afrin 23.05.2024 15:10

@EnenDaveyBoy Если он включен, вам нужно передать его явно

Ikhtesam Afrin 23.05.2024 15:11

спасибо, приятно знать, что лучше всего отключить его, спасибо, что уделили время

EnenDaveyBoy 23.05.2024 15:16

Другие вопросы по теме