Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
Principen validate-azure-ad-token framtvingar förekomsten och giltigheten för en JSON-webbtoken (JWT) som tillhandahölls av Microsoft Entra-tjänsten (kallades tidigare Azure Active Directory) för en angiven uppsättning huvudnamn i katalogen. JWT kan extraheras från ett angivet HTTP-huvud, en frågeparameter eller ett värde som tillhandahålls med hjälp av ett principuttryck eller en kontextvariabel.
Kommentar
Använd den allmänna validate-jwt principen för att verifiera en JWT som tillhandahölls av en annan identitetsprovider än Microsoft Entra.
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
<validate-azure-ad-token
    tenant-id="tenant ID or URL (for example, "https://contoso.onmicrosoft.com") of the Microsoft Entra ID tenant"
    header-name="name of HTTP header containing the token (alternatively, use query-parameter-name or token-value attribute to specify token)"
    query-parameter-name="name of query parameter used to pass the token (alternative, use header-name or token-value attribute to specify token)"
    token-value="expression returning the token as a string (alternatively, use header-name or query-parameter attribute to specify token)"
    authentication-endpoint="Microsoft Entra environment endpoint"
    failed-validation-httpcode="HTTP status code to return on failure"
    failed-validation-error-message="error message to return on failure"
    output-token-variable-name="name of a variable to receive a JWT object representing successfully validated token">
    <backend-application-ids>
        <application-id>Backend application ID from Microsoft Entra</application-id>
        <!-- If there are multiple backend application IDs, then add additional application-id elements -->
    </backend-application-ids>
    <client-application-ids>
        <application-id>Client application ID from Microsoft Entra</application-id>
        <!-- If there are multiple client application IDs, then add additional application-id elements -->
    </client-application-ids>
    <audiences>
        <audience>audience string</audience>
        <!-- if there are multiple possible audiences, then add additional audience elements -->
    </audiences>
    <required-claims>
        <claim name="name of the claim as it appears in the token" match="all | any" separator="separator character in a multi-valued claim">
            <value>claim value as it is expected to appear in the token</value>
            <!-- if there is more than one allowed value, then add additional value elements -->
        </claim>
    </required-claims>
    <decryption-keys>
        <key certificate-id="mycertificate"/>
        <!-- if there are multiple keys, then add additional key elements -->
    </decryption-keys>
</validate-azure-ad-token>
Attribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde | 
|---|---|---|---|
| klientorganisation-id | Klientorganisations-ID eller URL för Microsoft Entra ID-klientorganisationen, eller någon av följande välkända klienter: - organizationsellerhttps://login.microsoftonline.com/organizations– för att tillåta token från konton i valfri organisationskatalog (alla Microsoft Entra-kataloger)- commonellerhttps://login.microsoftonline.com/common– för att tillåta token från konton i valfri organisationskatalog (valfri Microsoft Entra-katalog) och från personliga Microsoft-konton (till exempel Skype, XBox)Principuttryck tillåts. | Ja | Ej tillämpligt | 
| rubriknamn | Namnet på HTTP-huvudet som innehåller token. Principuttryck tillåts. | En av header-name,query-parameter-nameellertoken-valuemåste anges. | Authorization | 
| query-parameter-name | Namnet på frågeparametern som innehåller token. Principuttryck tillåts. | En av header-name,query-parameter-nameellertoken-valuemåste anges. | Ej tillämpligt | 
| token-value | Uttryck som returnerar en sträng som innehåller token. Du får inte returnera Bearersom en del av tokenvärdet. Principuttryck tillåts. | En av header-name,query-parameter-nameellertoken-valuemåste anges. | Ej tillämpligt | 
| authentication-endpoint | Microsoft Entra-slutpunkt används för att hämta token i miljöer som nationella moln.  Prefix är https://valfritt. Exempel:https://login.microsoftonline.usför Microsoft Entra-ID för AMERIKANSKA myndigheter. | Nej | https://login-microsoftonline.com | 
| failed-validation-httpcode | HTTP-statuskod som ska returneras om JWT inte klarar valideringen. Principuttryck tillåts. | Nej | 401 | 
| failed-validation-error-message | Felmeddelande om att returnera i HTTP-svarstexten om JWT inte klarar valideringen. Det här meddelandet måste ha undantagna specialtecken. Principuttryck tillåts. | Nej | Standardfelmeddelandet beror på valideringsproblem, till exempel "JWT finns inte". | 
| output-token-variable-name | Sträng. Namn på kontextvariabel som ska ta emot tokenvärde som ett objekt av typen Jwtvid lyckad tokenverifiering. Principuttryck tillåts inte. | Nej | Ej tillämpligt | 
Element
| Komponent | beskrivning | Obligatoriskt | 
|---|---|---|
| backend-application-ids | Innehåller en lista över godkända program-ID:t för serverdelen. Detta krävs endast i avancerade fall för konfiguration av alternativ och kan vanligtvis tas bort. Principuttryck tillåts inte. | Nej | 
| client-application-ids | Innehåller en lista över godkända klientprogram-ID:t. Om det finns flera application-idelement provas varje värde tills alla är uttömda (i vilket fall verifieringen misslyckas) eller tills ett lyckas. Om ett klientprogram-ID inte tillhandahålls bör ett eller fleraaudienceanspråk anges. Principuttryck tillåts inte. | Nej | 
| Publik | Innehåller en lista över godtagbara målgruppsanspråk som kan finnas på token. Om det finns flera audiencevärden provas varje värde tills alla är uttömda (i vilket fall verifieringen misslyckas) eller tills ett lyckas. Principuttryck tillåts. | Nej | 
| obligatoriska anspråk | Innehåller en lista över claimelement för anspråksvärden som förväntas finnas på token för att den ska anses vara giltig.matchNär attributet är inställt påallmåste varje anspråksvärde i principen finnas i token för att verifieringen ska lyckas.matchNär attributet är inställt påanymåste minst ett anspråk finnas i token för att verifieringen ska lyckas. Principuttryck tillåts. | Nej | 
| dekrypteringsnycklar | En lista över keyunderelement som används för att dekryptera en token signerad med en asymmetrisk nyckel. Om det finns flera nycklar provas varje nyckel tills antingen alla nycklar är uttömda (i vilket fall verifieringen misslyckas) eller så lyckas en nyckel.Ange den offentliga nyckeln med ett certificate-idattribut med värdet inställt på identifieraren för ett certifikat som laddats upp till API Management. | Nej | 
anspråksattribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde | 
|---|---|---|---|
| namn | Namnet på anspråket som det förväntas visas i token. Principuttryck tillåts. | Ja | Ej tillämpligt | 
| tändsticka | Attributet matchför elementetclaimanger om varje anspråksvärde i principen måste finnas i token för att verifieringen ska lyckas. Möjliga värden är:- all– varje anspråksvärde i principen måste finnas i token för att verifieringen ska lyckas.- any– Minst ett anspråksvärde måste finnas i token för att verifieringen ska lyckas.Principuttryck tillåts. | Nej | alla | 
| separator | Sträng. Anger en avgränsare (till exempel ",") som ska användas för att extrahera en uppsättning värden från ett anspråk med flera värden. Principuttryck tillåts. | Nej | Ej tillämpligt | 
nyckelattribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde | 
|---|---|---|---|
| certifikat-ID | Identifierare för en certifikatentitet som laddats upp till API Management, som används för att ange den offentliga nyckeln för att verifiera en token signerad med en asymmetrisk nyckel. | Ja | Ej tillämpligt | 
Förbrukning
- Principavsnitt: inkommande
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
- Du kan använda principer för åtkomstbegränsning i olika omfång för olika syften. Du kan till exempel skydda hela API:et med Microsoft Entra-autentisering genom att tillämpa validate-azure-ad-tokenprincipen på API-nivå, eller så kan du tillämpa den på API-åtgärdsnivå och användaclaimsden för mer detaljerad kontroll.
- Microsoft Entra-ID för kunder (förhandsversion) stöds inte.
Exempel
Enkel tokenverifiering
Följande princip är principens validate-azure-ad-token minimala form. Den förväntar sig att JWT anges i standardrubriken Authorization med hjälp av Bearer schemat. I det här exemplet tillhandahålls Microsoft Entra-klient-ID och klientprogram-ID med namngivna värden.
<validate-azure-ad-token tenant-id="{{aad-tenant-id}}">
    <client-application-ids>
        <application-id>{{aad-client-application-id}}</application-id>
    </client-application-ids>
</validate-azure-ad-token>
Tokenverifiering med dekrypteringsnyckel
Det här exemplet visar hur du använder validate-azure-ad-token principen för att verifiera en token som dekrypteras med hjälp av en dekrypteringsnyckel. Klient-ID och klientprogram-ID för Microsoft Entra tillhandahålls med namngivna värden. Nyckeln anges med hjälp av ID:t för ett uppladdat certifikat (i PFX-format) som innehåller den offentliga nyckeln.
<validate-azure-ad-token tenant-id="{{aad-tenant-id}}">
    <client-application-ids>
        <application-id>{{aad-client-application-id}}</application-id>
    </client-application-ids>
    <decryption-keys>
        <key certificate-id="mycertificate"/>
    </decryption-keys>
</validate-azure-ad-token>
Verifiera att målgruppen och anspråket är korrekta
Följande princip kontrollerar att målgruppen är värdnamnet för API Management-instansen och att anspråket ctry är US. Microsofts klientorganisations-ID är den välkända organizations klientorganisationen, som tillåter token från konton i alla organisationskataloger. Värdnamnet tillhandahålls med ett principuttryck och klientprogram-ID:t tillhandahålls med hjälp av ett namngivet värde. Den avkodade JWT:en anges i variabeln jwt efter valideringen.
Mer information om valfria anspråk finns i Ange valfria anspråk till din app.
<validate-azure-ad-token tenant-id="organizations" output-token-variable-name="jwt">
    <client-application-ids>
        <application-id>{{aad-client-application-id}}</application-id>
    </client-application-ids>
    <audiences>
        <audience>@(context.Request.OriginalUrl.Host)</audience>
    </audiences>
    <required-claims>
        <claim name="ctry" match="any">
            <value>US</value>
        </claim>
    </required-claims>
</validate-azure-ad-token>
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
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer