Dela via


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

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

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: