Я пытаюсь разобраться в Azure APIM, в первую очередь я использую его для привязки функций Azure к доменному имени, все конечные точки общедоступны и все используют OAuth для аутентификации.
Однако у меня возникла проблема с ключами подписки. Мой главный вопрос: нужны ли они? мой API работает, если я захожу в настройки и выбираю ключ подписки, необходимый для ложного значения, но я не могу заставить его работать, добавляя политику для входящей политики, чтобы добавить ее
<inbound>
<base />
<set-header name = "Ocp-Apim-Subscription-Key" exists-action = "override">
<value>{{subscription-key}}</value>
</set-header>
</inbound>
так они мне нужны? (я бы хотел, чтобы политика работала независимо от того, просто потому что), любые предложения будут оценены


Если вы отключили в настройках опцию «Требовать ключ подписки», то вам не нужно передавать 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.
@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 при вызове?
это еще не все, вся часть гласит: «Однако у меня проблема с ключом подписки, мой главный вопрос: нужны ли они? Мой API работает, если я захожу в настройки и выбираю ключ подписки, необходимый для ложного, но я могу Не могу заставить это работать, добавляя политику для входящей политики, чтобы добавить ее"
@EnenDaveyBoy Да, это необходимо, если вы хотите защитить его от внешнего доступа.
@EnenDaveyBoy Если он включен, вам нужно передать его явно
спасибо, приятно знать, что лучше всего отключить его, спасибо, что уделили время
извините, это не отвечает на мой вопрос, мой вопрос заключался в том, если для API требуется идентификатор подписки, для которого установлено значение true, как я могу передать его с помощью политики, чтобы мне не приходилось добавлять его вручную (возможно ли это вообще), и Есть ли смысл делать это для публичного API?