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: -audiƫntie: https://azure-api.net/authorization-manager - oid : Machtigingsobject-id - tid : Tenant-id van machtigingBeleidsexpressies 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 :terugkeren 500 Als u de waarde instelt op false en 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
- Beleidssecties: inkomend
- Beleidsbereiken: globaal, product, API, bewerking
- Gateways: klassiek, v2, verbruik
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>
Gerelateerd beleid
Gerelateerde inhoud
Zie voor meer informatie over het werken met beleid:
- Zelfstudie: Uw API transformeren en beveiligen
- Beleidsreferentie voor een volledige lijst met beleidsinstructies en hun instellingen
- Beleidsexpressies
- Beleid instellen of bewerken
- Beleidsconfiguraties opnieuw gebruiken
- Beleidsfragmentenopslagplaats
- Beleid ontwerpen met Behulp van Microsoft Copilot in Azure