Autenticación con una identidad administrada
SE APLICA A: todos los niveles de API Management
Use la directiva authentication-managed-identity
para realizar la autenticación con un servicio de back-end mediante la identidad administrada. En esencia, esta directiva usa la identidad administrada para obtener un token de acceso de Microsoft Entra ID para acceder al recurso especificado. Después de obtener el token correctamente, la Directiva establecerá el valor del token en el Authorization
encabezado mediante el esquema Bearer
. API Management almacena en caché el token hasta que expire.
Para solicitar el token, se puede usar tanto la identidad asignada por el sistema como cualquiera de las distintas identidades asignadas por el usuario. Si no se proporciona client-id
, se presupone la identidad asignada por el sistema. Si se proporciona la variable client-id
, se solicita el token para esa identidad asignada por el usuario de Microsoft Entra ID.
Nota:
Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
Instrucción de la directiva
<authentication-managed-identity resource="resource" client-id="clientid of user-assigned identity" output-token-variable-name="token-variable" ignore-error="true|false"/>
Atributos
Atributo | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
resource | String. Identificador de aplicación de la API web de destino (recurso protegido) en Microsoft Entra ID. Se permiten expresiones de directiva. | Sí | N/D |
client-id | String. Id. de cliente de la identidad asignada por el usuario en Microsoft Entra ID. No se permiten expresiones de directiva. | No | N/D La identidad asignada por el sistema se usa si el atributo no está presente. |
output-token-variable-name | String. Nombre de la variable de contexto que recibirá el valor del token como un objeto de tipo string . No se permiten expresiones de directiva. |
No | N/D |
ignore-error | booleano. Si se establece en true , la canalización de directivas seguirá ejecutándose incluso si no se obtiene un token de acceso. |
No | false |
Uso
- Secciones de la directiva: inbound (entrada)
- Ámbitos de la directiva: global, producto, API y operación
- Puertas de enlace: clásico, v2, consumo y autohospedado
Ejemplos
Uso de una identidad administrada para autenticación con un servicio back-end
<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-->
Uso de una identidad administrada y establecimiento manual de un encabezado
<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>
Uso de una identidad administrada en una directiva send-request
<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>
Directivas relacionadas
Contenido relacionado
Para más información sobre el trabajo con directivas, vea:
- Tutorial: Transformación y protección de una API
- Referencia de directivas para una lista completa de instrucciones de directivas y su configuración
- Expresiones de directiva
- Establecimiento o edición de directivas
- Reutilización de configuraciones de directivas
- Repositorio de fragmentos de código de directiva
- Kit de herramientas de directivas de Azure API Management
- Creación de directivas mediante Microsoft Copilot en Azure