Autorisatiecontext ophalen

VAN TOEPASSING OP: Alle API Management-lagen

Gebruik het get-authorization-context beleid om de autorisatiecontext van een opgegeven verbinding (voorheen een autorisatie genoemd) op te halen naar een referentieprovider die is geconfigureerd in het API Management-exemplaar.

Met het beleid worden autorisatie- en vernieuwingstokens opgehaald en opgeslagen van de geconfigureerde referentieprovider met behulp van de verbinding.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsinstructie

<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" />

Kenmerken

Kenmerk Beschrijving Vereist Standaardinstelling
provider-id De resource-id van de referentieprovider. Beleidsexpressies zijn toegestaan. Ja N.v.t.
autorisatie-id De verbindingsresource-id. Beleidsexpressies zijn toegestaan. Ja N.v.t.
context-variabele-naam De naam van de contextvariabele om het Authorization object te ontvangen. Beleidsexpressies zijn toegestaan. Ja N.v.t.
identiteitstype Het type identiteit dat moet worden gecontroleerd op basis van het toegangsbeleid van de verbinding.
- managed: door het systeem toegewezen beheerde identiteit van het API Management-exemplaar.
- jwt: JWT bearer-token dat is opgegeven in het identity kenmerk.

Beleidsexpressies zijn toegestaan.
Nee managed
identity Een Bearer-token van Microsoft Entra JWT om te controleren op basis van de verbindingsmachtigingen. Genegeerd voor identity-type andere dan jwt.

Verwachte claims:
-Publiek: https://azure-api.net/authorization-manager
- oid: Machtigingsobject-id
- tid: Tenant-id van machtiging

Beleidsexpressies zijn toegestaan.
Nee N.v.t.
ignore-error Booleaans. Als het verkrijgen van de autorisatiecontext resulteert in een fout (bijvoorbeeld de verbindingsresource is niet gevonden of een foutstatus heeft):
- true: aan de contextvariabele wordt een waarde van null toegewezen.
- false:Terug 500

Als u de waarde instelt op falseen de beleidsconfiguratie een on-error sectie bevat, is de fout beschikbaar in de context.LastError eigenschap.

Beleidsexpressies zijn toegestaan.
Nee false

Autorisatieobject

De autorisatiecontextvariabele ontvangt een object van het type Authorization.

class Authorization
{
    public string AccessToken { get; }
    public IReadOnlyDictionary<string, object> Claims { get; }
}
Eigenschapsnaam Beschrijving
AccessToken Bearer-toegangstoken om een HTTP-back-endaanvraag te autoriseren.
Claims Claims die worden geretourneerd door de tokenantwoord-API van de autorisatieserver (zie RFC6749#section-5.1).

Gebruik

Gebruiksnotities

  • Configureren identity-type=jwt wanneer het toegangsbeleid voor de verbinding wordt toegewezen aan een service-principal. Alleen /.default app-bereiken worden ondersteund voor de JWT.

Voorbeelden

Token terughalen

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

Token terughalen met dynamisch ingestelde kenmerken

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

Het token koppelen aan de back-end-aanroep

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

Token ophalen uit binnenkomende aanvraag en token retourneren

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

Zie voor meer informatie over het werken met beleid: