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

Principuttryck 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

Important

Länkad åtkomst kontrolleras inte när en inloggningsleverantör eller anslutning refereras genom att använda provider-id eller authorization-id. En användare som har behörighet att skriva en policy kan referera till vilken tillgänglig inloggningsleverantör eller anslutning som helst, även om användaren inte har läsbehörighet till dessa resurser. Om den identitet som policyn väljer uppfyller anslutningens åtkomstpolicy kan användaren få API-hanteringen att hämta anslutningens bäraråtkomsttoken och anspråk, som policyn kan vidarebefordra till en backend eller exponera i ett svar. Att referera till resurserna kringgår inte anslutningens åtkomstpolicy eller ger tillgång till att se deras konfiguration eller hämta uppdateringstoken.

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).

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>

Mer information om hur du arbetar med principer finns i: