Obter contexto de autorização

APLICA-SE A: Todas as camadas de gerenciamento de API

Use a get-authorization-context política para obter o contexto de autorização de uma conexão especificada (anteriormente chamada de autorização) para um provedor de credenciais configurado na instância de Gerenciamento de API.

A política busca e armazena tokens de autorização e atualização do provedor de credenciais configurado usando a conexão.

Nota

Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.

Declaração de política

<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" />

Atributos

Atributo Description Necessário Predefinição
ID do provedor O identificador de recurso do provedor de credenciais. São permitidas expressões de política. Sim N/A
ID de autorização O identificador de recurso de conexão. São permitidas expressões de política. Sim N/A
nome-variável-contexto O nome da variável de contexto para receber o Authorization objeto. São permitidas expressões de política. Sim N/A
tipo de identidade Tipo de identidade a ser verificada em relação à política de acesso da conexão.
- managed: identidade gerenciada atribuída pelo sistema da instância de Gerenciamento de API.
- jwt: Token portador JWT identity especificado no atributo.

São permitidas expressões de política.
Não managed
de identidade Um token de portador JWT do Microsoft Entra para verificar as permissões de conexão. Ignorado para identity-type outros que não jwt.

Reivindicações esperadas:
- Público: https://azure-api.net/authorization-manager
- oid: ID do objeto de permissão
- tid: ID do locatário de permissão

São permitidas expressões de política.
No N/A
ignorar-erro Booleano. Se a aquisição do contexto de autorização resultar em um erro (por exemplo, o recurso de conexão não for encontrado ou estiver em um estado de erro):
- true: à variável de contexto é atribuído um valor nulo.
- false: regresso 500

Se você definir o valor como false, e a configuração da política incluir uma on-error seção, o erro estará disponível na context.LastError propriedade.

São permitidas expressões de política.
Não false

Objeto de autorização

A variável de contexto Authorization recebe um objeto do tipo Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Nome de Propriedade Description
AccessToken Token de acesso ao portador para autorizar uma solicitação HTTP de back-end.
Pedidos Declarações retornadas da API de resposta de token do servidor de autorização (consulte RFC6749#section-5.1).

Utilização

Notas de utilização

  • Configure identity-type=jwt quando a política de acesso para a conexão é atribuída a uma entidade de serviço. Somente /.default escopos somente de aplicativo são suportados para o JWT.

Exemplos

Obter token de volta

<!-- 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>

Obtenha o token de volta com atributos definidos dinamicamente

<!-- 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>

Anexar o token à chamada de back-end

<!-- 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>

Obter token de solicitação de entrada e token de retorno

<!-- 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>

Para obter mais informações sobre como trabalhar com políticas, consulte: