Ottieni codice di autorizzazione

SI APPLICA A: Tutti i livelli di Gestione API

Usare i get-authorization-context criteri per ottenere il contesto di autorizzazione di una connessione specificata (in precedenza denominata 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 dei criteri. Altre informazioni su come impostare o modificare i criteri di Gestione API.

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'oggettoAuthorization. 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:
-Pubblico: https://azure-api.net/authorization-manager
- oid: ID 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:Ritorno 500

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

Le espressioni di criteri sono consentite.
No false

Oggetto Authorization

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 /.default gli ambiti di sola app 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>

Collegare 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: