Ottieni codice di autorizzazione

SI APPLICA A: Tutti i livelli di Gestione API

Usare il criterio get-authorization-context per ottenere il contesto di autorizzazione di una connessione specificata (denominata in precedenza autorizzazione) a un provider di credenziali configurato nell'istanza di Gestione API.

Il criterio recupera e archivia i token di autorizzazione e aggiornamento dal provider di credenziali configurato usando la connessione.

Nota

Impostare gli elementi e gli elementi figlio del criterio nell'ordine specificato nell'istruzione del criterio. Altre informazioni su come impostare o modificare i criteri di API Management.

Istruzione del criterio

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

Attributi

Attributo Descrizione Richiesto Valore predefinito
provider-id Identificatore di risorsa del provider di credenziali. Le espressioni di criteri sono consentite. N/D
authorization-id Identificatore della risorsa di connessione. Le espressioni di criteri sono consentite. N/D
context-variable-name Nome della variabile di contesto per ricevere l'Authorizationoggetto. Le espressioni di criteri sono consentite. N/D
identity-type Tipo di identità da verificare rispetto ai criteri di accesso della connessione.
- managed: identità gestita assegnata dal sistema dell'istanza di Gestione API.
- jwt: token di connessione JWT specificato nell'attributo identity.

Le espressioni di criteri sono consentite.
No managed
autenticazione Token di connessione JWT di Microsoft Entra per verificare le autorizzazioni di connessione. Ignorato per identity-type diverso da jwt.

Attestazioni previste:
- destinatari: https://azure-api.net/authorization-manager
- oid: oggetto autorizzazione
- tid: ID tenant di autorizzazione

Le espressioni di criteri sono consentite.
No N/D
ignore-error Booleano. Se l'acquisizione del contesto di autorizzazione genera un errore (ad esempio, la risorsa di connessione non viene trovata o si trova in uno stato di errore):
- true: alla variabile di contesto viene assegnato un valore null.
- false: valore restituito 500

Se si imposta il valore su false e la configurazione dei criteri include una sezione on-error, l'errore è disponibile nella proprietà context.LastError.

Le espressioni di criteri sono consentite.
No false

Oggetto Autorizzazione

La variabile di contesto di Autorizzazione riceve un oggetto di tipo Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Nome proprietà Descrizione
AccessToken Token di accesso di connessione per autorizzare una richiesta HTTP back-end.
Richieste di rimborso Attestazioni restituite dall'API di risposta del token del server di autorizzazione (vedere RFC6749#section-5.1).

Utilizzo

Note sull'utilizzo

  • Configurare identity-type=jwt quando i criteri di accesso per la connessione vengono assegnati a un'entità servizio. Solo gli ambiti di sola app /.default sono supportati per il token JWT.

Esempi

Recuperare il token

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

Recuperare il token con attributi impostati in modo dinamico

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

Allegare il token alla chiamata 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>

Ottenere il token dalla richiesta in ingresso e restituire il token

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

Per ulteriori informazioni sull'utilizzo dei criteri, vedere: