Получение контекста авторизации

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление 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).

Использование

Примечания об использовании

  • Настройте, 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>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.