Hämta auktoriseringskontext
GÄLLER FÖR: Alla API Management-nivåer
get-authorization-context
Använd principen för att hämta auktoriseringskontexten för en angiven anslutning (kallades tidigare auktorisering) till en provider för autentiseringsuppgifter som har konfigurerats i API Management-instansen.
Principen hämtar och lagrar auktoriserings- och uppdateringstoken från den konfigurerade providern för autentiseringsuppgifter med hjälp av anslutningen.
Kommentar
Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.
Principuttryck
<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" />
Attribut
Attribut | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
provider-id | Resursidentifieraren för autentiseringsprovidern. Principuttryck tillåts. | Ja | Ej tillämpligt |
authorization-id | Anslutningsresursidentifieraren. Principuttryck tillåts. | Ja | Ej tillämpligt |
context-variable-name | Namnet på kontextvariabeln som ska ta emot Authorization objektet. Principuttryck tillåts. |
Ja | Ej tillämpligt |
identitetstyp | Typ av identitet som ska kontrolleras mot anslutningens åtkomstprincip. - managed : systemtilldelad hanterad identitet för API Management-instansen. - jwt : JWT-ägartoken som anges i attributet identity .Principuttryck tillåts. |
Nej | managed |
identitet | En Microsoft Entra JWT-ägartoken för att kontrollera anslutningsbehörigheterna. Ignoreras för identity-type andra än jwt . Förväntade anspråk: -publik: https://azure-api.net/authorization-manager - oid : Behörighetsobjekt-ID - tid : Behörighetsklient-IDPrinciputtryck tillåts. |
Nej | Ej tillämpligt |
ignore-error | Boolesk. Om anskaffning av auktoriseringskontexten resulterar i ett fel (till exempel att anslutningsresursen inte hittas eller är i ett feltillstånd): - true : kontextvariabeln tilldelas värdet null. - false :återvända 500 Om du anger värdet till false , och principkonfigurationen innehåller ett on-error avsnitt, är felet tillgängligt i egenskapen context.LastError .Principuttryck tillåts. |
Nej | false |
Auktoriseringsobjekt
Kontextvariabeln Auktorisering tar emot ett objekt av typen Authorization
.
class Authorization
{
public string AccessToken { get; }
public IReadOnlyDictionary<string, object> Claims { get; }
}
Egenskapsnamn | beskrivning |
---|---|
AccessToken | Ägaråtkomsttoken för att auktorisera en HTTP-begäran för serverdelen. |
Anspråk | Anspråk som returneras från auktoriseringsserverns API för tokensvar (se RFC6749#section-5.1). |
Användning
- Principavsnitt: inkommande
- Principomfattningar: global, produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning
Användningsanteckningar
- Konfigurera
identity-type=jwt
när åtkomstprincipen för anslutningen tilldelas till tjänstens huvudnamn. Endast/.default
appomfattningar stöds för JWT.
Exempel
Hämta token tillbaka
<!-- 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>
Hämta token med dynamiskt inställda attribut
<!-- 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>
Koppla token till serverdelsanropet
<!-- 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>
Hämta token från inkommande begäran och returtoken
<!-- 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>
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Skapa principer med Microsoft Copilot i Azure