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ãoExpressõ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 false e 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
- Seções de política: de entrada
- Escopos de política: global, produto, API, operação
- Gateways: clássico, v2, consumo
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>
Políticas relacionadas
Conteúdo relacionado
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transformar e proteger sua API
- Referência de Política para uma lista completa das instruções de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Repositório de snippets de política
- Kit de ferramentas de políticas do Gerenciamento de API do Azure
- Criar políticas usando o Microsoft Copilot no Azure