Compartilhar via


Obter contexto de autorização

APLICA-SE A: todas as camadas do Gerenciamento de API

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

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

Observação

Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Saiba mais sobre como definir e editar as 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 Descrição Obrigatório Padrão
provider-id O identificador de recurso do provedor de credenciais. Expressões de política são permitidas. Sim N/D
authorization-id O identificador de recurso de conexão. Expressões de política são permitidas. Sim N/D
context-variable-name O nome da variável de contexto a receber o objeto Authorization. Expressões de política são permitidas. Sim N/D
identity-type Tipo de identidade a ser verificada em relação à política de acesso da conexão.
- managed: a identidade atribuída pelo sistema na instância de Gerenciamento de API.
- jwt: token de portador JWT especificado no atributo identity.

Expressões de política são permitidas.
Não managed
identidade Um token de portador JWT do Microsoft Entra para verificar as permissões de conexão. Ignorado para identity-type diferente de jwt.

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

Expressões de política são permitidas.
No N/D
ignore-error Booliano. Se a aquisição do contexto de autorização resultar em um erro (por exemplo, o recurso de conexão não é encontrado ou está em um estado de erro), ocorre o seguinte:
- true: a variável de contexto recebe um valor nulo.
- false: retorna 500

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

Expressões de política são permitidas.
No false

Objeto de autorização

A variável do contexto de autorização recebe um objeto do tipo Authorization.

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

Uso

Observações de uso

  • 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 compatíveis com o JWT.

Exemplos

Obter o token novamente

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

Obter o token novamente 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 da solicitação de entrada e o 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: