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. | Sì | N/D |
authorization-id | Identificatore della risorsa di connessione. Le espressioni di criteri sono consentite. | Sì | N/D |
context-variable-name | Nome della variabile di contesto per ricevere l'Authorization oggetto. Le espressioni di criteri sono consentite. |
Sì | 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 autorizzazioneLe 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
- Sezioni del criterio: inbound
- Ambiti del criterio: globale, prodotto, API, operazione
- Gateway: classico, v2, a consumo
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>
Criteri correlati
Contenuto correlato
Per ulteriori informazioni sull'utilizzo dei criteri, vedere:
- Esercitazione: trasformare e proteggere l'API
- Informazioni di riferimento sui criteri per un elenco completo delle istruzioni dei criteri e delle relative impostazioni
- Espressioni di criteri
- Impostare o modificare criteri
- Riutilizzare le configurazioni dei criteri
- Repository dei frammenti di criteri
- Creare criteri usando Microsoft Copilot in Azure