Autentisera med hanterad identitet

GÄLLER FÖR: Alla API Management-nivåer

Använd principen för att autentisera authentication-managed-identity med en serverdelstjänst med hjälp av den hanterade identiteten. Den här principen använder i princip den hanterade identiteten för att hämta en åtkomsttoken från Microsoft Entra ID för åtkomst till den angivna resursen. När token har hämtats anger principen värdet för token i Authorization huvudet med hjälp av schemat Bearer . API Management cachelagrar token tills den upphör att gälla.

Både systemtilldelad identitet och någon av de flera användartilldelade identiteterna kan användas för att begära en token. Om client-id inte anges antas systemtilldelad identitet. Om variabeln client-id tillhandahålls, begärs token för den användartilldelade identiteten från Microsoft Entra ID.

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.

Försiktighet

Säkerhetsövervägande: Användare med behörighet att redigera API Management-principer kan använda den här principen för att autentisera som tjänstens hanterade identitet. De kan dock inte få direkt åtkomst till resurser utan att först tilldela en hanterad identitet till API Management-instansen. När en hanterad identitet har tilldelats kan användare som kan ändra principer kunna exfiltera autentiseringstoken, sprida den till en serverdel eller logga den för senare användning. Detaljerad säkerhetsvägledning och riskreduceringsstrategier finns i Säkerhetsöverväganden för hanterade identiteter i översikten över hanterad identitet.

Principuttryck

<authentication-managed-identity resource="resource" client-id="clientid of user-assigned identity" output-token-variable-name="token-variable" ignore-error="true|false"/>  

Attribut

Attribut beskrivning Obligatoriskt Standardvärde
resurs Sträng. Program-ID för målwebb-API:et (skyddad resurs) i Microsoft Entra ID. Principuttryck tillåts. Ja Ej tillämpligt
klient-ID Sträng. Klient-ID för den användartilldelade identiteten i Microsoft Entra ID. Principuttryck tillåts inte. Nej Saknas. Systemtilldelad identitet används om attributet inte finns.
output-token-variable-name Sträng. Namnet på kontextvariabeln som ska ta emot tokenvärdet som ett objekt av typen string. Principuttryck tillåts inte. Nej Ej tillämpligt
ignore-error Boolesk. Om värdet är trueinställt på fortsätter princippipelinen att köras även om en åtkomsttoken inte hämtas. Nej false

Förbrukning

Exempel

Använda hanterad identitet för att autentisera med en serverdelstjänst

<authentication-managed-identity resource="https://graph.microsoft.com"/> 
<authentication-managed-identity resource="https://cognitiveservices.azure.com"/> <!--Azure OpenAI-->
<authentication-managed-identity resource="https://management.azure.com/"/> <!--Azure Resource Manager-->
<authentication-managed-identity resource="https://vault.azure.net"/> <!--Azure Key Vault-->
<authentication-managed-identity resource="https://servicebus.azure.net/"/> <!--Azure Service Bus-->
<authentication-managed-identity resource="https://eventhubs.azure.net/"/> <!--Azure Event Hub-->
<authentication-managed-identity resource="https://storage.azure.com/"/> <!--Azure Blob Storage-->
<authentication-managed-identity resource="https://database.windows.net/"/> <!--Azure SQL-->
<authentication-managed-identity resource="https://signalr.azure.com"/> <!--Azure SignalR-->
<authentication-managed-identity resource="AD_application_id"/> <!--Application (client) ID of your own Azure AD Application-->

Använda hanterad identitet och ange sidhuvud manuellt

<authentication-managed-identity resource="AD_application_id"
   output-token-variable-name="msi-access-token" ignore-error="false" /> <!--Application (client) ID of your own Azure AD Application-->
<set-header name="Authorization" exists-action="override">
   <value>@("Bearer " + (string)context.Variables["msi-access-token"])</value>
</set-header>

Använda hanterad identitet i principen för att skicka begäran

<send-request mode="new" timeout="20" ignore-error="false">
    <set-url>https://example.com/</set-url>
    <set-method>GET</set-method>
    <authentication-managed-identity resource="ResourceID"/>
</send-request>

Mer information om hur du arbetar med principer finns i: