Получение контекста авторизации
ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API
get-authorization-context
Используйте политику для получения контекста авторизации указанного подключения (ранее называемого авторизацией) к поставщику учетных данных, настроенного в экземпляре Управление API.
Политика извлекает и сохраняет маркеры авторизации и обновления от настроенного поставщика учетных данных с помощью подключения.
Примечание.
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.
Правило политики
<get-authorization-context
provider-id="credential provider id"
authorization-id="connection id"
context-variable-name="variable name"
identity-type="managed | jwt"
identity="JWT bearer token"
ignore-error="true | false" />
Атрибуты
Атрибут | Description | Обязательное поле | По умолчанию. |
---|---|---|---|
provider-id | Идентификатор ресурса поставщика учетных данных. Допустимы выражения политики. | Да | Н/П |
authorization-id | Идентификатор ресурса подключения. Допустимы выражения политики. | Да | Н/П |
context-variable-name | Имя переменной контекста для получения объекта Authorization . Допустимы выражения политики. |
Да | Н/П |
identity-type | Тип удостоверения для проверки политики доступа подключения. - managed : назначаемое системой управляемое удостоверение экземпляра Управление API. - jwt : маркер носителя JWT, указанный в атрибуте identity .Допустимы выражения политики. |
No | managed |
identity | Маркер носителя Microsoft Entra JWT для проверки разрешений подключения. Игнорируется для значений параметра identity-type , отличных от jwt . Ожидаемые утверждения: - audience: https://azure-api.net/authorization-manager - oid : идентификатор объекта разрешения - tid : идентификатор арендатора разрешенийДопустимы выражения политики. |
No | Н/П |
ignore-error | Логическое значение. Если при получении контекста авторизации возникает ошибка (например, ресурс подключения не найден или находится в состоянии ошибки): - true : для контекста переменной назначается значение null. - false : возвращается значение 500 .Если задано значение false , а конфигурация политики содержит on-error раздел, ошибка доступна в свойстве context.LastError .Допустимы выражения политики. |
No | false |
Объект авторизации
Переменная контекста авторизации получает объект типа Authorization
.
class Authorization
{
public string AccessToken { get; }
public IReadOnlyDictionary<string, object> Claims { get; }
}
Имя свойства | Description |
---|---|
AccessToken | Маркер доступа носителя для авторизации внутреннего HTTP-запроса. |
Претензии | Утверждения, возвращенные API ответа маркера сервера авторизации (см . RFC6749#section-5.1). |
Использование
- Разделы политики: inbound.
- Области политики: global, product, API, operation.
- Шлюзы: классическая, версия 2, потребление
Примечания об использовании
- Настройте,
identity-type=jwt
когда политика доступа для подключения назначена субъекту-службе. Для JWT поддерживаются только области, доступные только/.default
для приложений.
Примеры
Получение маркера обратно
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
Получение маркера обратно с динамически заданными атрибутами
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationProviderId"))"
authorization-id="@(context.Request.Url.Query.GetValueOrDefault("authorizationId"))" context-variable-name="auth-context"
ignore-error="false"
identity-type="managed" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
Присоединение маркера к внутреннему вызову
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>
Получение маркера из входящего запроса и возвращаемого маркера
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="github-01"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="jwt"
identity="@(context.Request.Headers["Authorization"][0].Replace("Bearer ", ""))"
ignore-error="false" />
<!-- Return the token -->
<return-response>
<set-status code="200" />
<set-body template="none">@(((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</set-body>
</return-response>
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Создание политик с помощью Microsoft Copilot в Azure