Compartir a través de


Llamada a una API desde otra API

¿Cómo puede garantizar una Confianza cero, como desarrollador, cuando tiene una API que necesita llamar a otra API? En este artículo, aprenderá a desarrollar de forma segura la aplicación cuando se trabaja en nombre de un usuario.

Cuando un usuario controla la interfaz de una aplicación, la aplicación puede usar un permiso delegado para que la API sepa en nombre de qué usuario se está ejecutando. Inspecciona las notificaciones de firmante (sub) o id. de objeto (oid) e identificador de inquilino (tid) en el token de acceso que proporciona la aplicación al llamar a la API. La API no confía en la aplicación que no es de confianza, la cual es simplemente una llamada procedente de algún lugar de la red. En su lugar, valida el token para asegurarse de que la API solo funciona en nombre del usuario de la aplicación que ha verificado Microsoft Entra ID.

Cuando una API (se hace referencia a ella como API original) llama a otra, es fundamental que la API a la que llamamos (se hace referencia a ella como API de bajada) sigue el proceso de validación descrito anteriormente. La API de bajada no puede confiar en una fuente de red que no sea de confianza. Debe obtener la identidad del usuario de un token de acceso validado correctamente.

Si la API de bajada no sigue el proceso de validación adecuado, debe confiar en la API original para proporcionar la identidad del usuario de otra manera. La API de bajada podría usar incorrectamente un permiso de aplicación para realizar esta operación. Por tanto, la API original se convertirá en la única autoridad para decidir qué usuarios pueden obtener determinados resultados en la API de bajada. La API original podría permitir de forma intencionada (o involuntaria) a un usuario realizar una tarea que no podría realizar de otro modo. Por ejemplo, un usuario podría cambiar los detalles de otro usuario o leer y actualizar documentos a los que no tiene permiso para acceder. La validación incorrecta puede provocar problemas de seguridad graves.

Para mejorar la seguridad, la API original adquiere un token de acceso de permiso delegado para proporcionarlo a la API de bajada cuando la API original realiza la llamada. Veamos cómo funciona esto.

La aplicación cliente adquiere el token de acceso para llamar a la API original

En el diagrama siguiente se muestra la aplicación cliente y la API original.

En el diagrama se muestra la aplicación cliente con tokens de identificador y acceso y la API original que requiere autorización.

La aplicación cliente adquirió un token de acceso de permiso delegado (indicado por la forma del pentágono con la etiqueta "A") a la API original. El token de acceso de permiso delegado permite que la aplicación se ejecute en nombre del usuario para llamar a la API original que requiere autorización.

La aplicación cliente proporciona el token de acceso a la API original

La siguiente animación muestra la aplicación cliente que proporciona el token de acceso a la API original. La API original valida e inspecciona completamente el token de acceso para determinar la identidad del usuario de la aplicación cliente.

Diagrama animado que muestra la aplicación cliente que proporciona un token de acceso a la API original que requiere autorización.

La API original valida y aplica el token

La siguiente animación muestra que, después de que la aplicación cliente proporciona el token de acceso a la API original, la API original valida y aplica el token. Si todo es bueno, la API continúa y ofrece la solicitud de la aplicación cliente.

Diagrama animado que muestra la aplicación cliente con el token de identificador a la izquierda, lo que proporciona el token de acceso a la API original a la derecha.

La API original no puede usar el token de acceso para llamar a la API de bajada

La siguiente animación muestra que la API original ahora quiere llamar a una API de bajada. Pero la API original no puede usar el token de acceso para llamar a la API de bajada.

Diagrama animado que muestra la aplicación cliente que proporciona el token de acceso a la API original. La autorización requerida impide que la API original dé el token a la API de bajada.

La API original vuelve a Microsoft Entra ID

En la siguiente animación, la API original debe volver a Microsoft Entra ID. Necesita un token de acceso para llamar a la API de bajada en nombre del usuario.

Diagrama animado que muestra la aplicación cliente que proporciona el token de acceso a la API original que necesita validación de Microsoft Entra ID para llamar a la API de bajada.

La siguiente animación muestra la API original proporcionando el token que recibió de la aplicación cliente y las credenciales de cliente de la API original.

Diagrama animado que muestra la aplicación cliente que proporciona el token de acceso a la API original que recibe la validación de Microsoft Entra ID para llamar a la API de bajada.

Microsoft Entra ID comprueba si hay cosas como el consentimiento o el cumplimiento del acceso condicional. Es posible que tenga que volver al cliente que realiza la llamada y proporcionar un motivo para no poder obtener el token. Normalmente, se usa un proceso de desafío de notificaciones para volver a la aplicación que realiza la llamada y proporcionar información sobre el consentimiento que no se ha recibido (por ejemplo, debido a las directivas de acceso condicional).

Microsoft Entra ID realiza comprobaciones

En la siguiente animación, Microsoft Entra ID realiza sus comprobaciones. Si todo está bien, Microsoft Entra ID emite un token de acceso a la API original para llamar a la API de bajada en nombre del usuario.

Diagrama animado que muestra la API original que proporciona el token de acceso a la API de bajada después de validar con Microsoft Entra ID.

La API original tiene contexto del usuario mediante un flujo con derechos delegados

En la siguiente animación se muestra el proceso flujo con derechos delegados (OBO) que permite que una API siga teniendo el contexto del usuario a medida que llama a la API de bajada.

Diagrama animado que muestra la API original que proporciona el token de acceso a la API de bajada.

La API original llama a la API de bajada

En la siguiente animación, llamamos a la API de bajada. El token que recibe la API de bajada tiene la notificación de audiencia adecuada (aud) que indica la API de bajada.

En el diagrama animado se muestra la validación del token de acceso de la API de nivel inferior desde la API original.

El token incluye los ámbitos para el consentimiento concedido y la identidad de usuario de la aplicación original. La API de bajada puede implementar correctamente los permisos efectivos para asegurarse de que el usuario identificado tiene permiso para realizar la tarea solicitada. Quiere usar el flujo en nombre de para adquirir tokens para una API para llamar a otra API para asegurarse de que el contexto del usuario pasa a todas las API de bajada.

Mejor opción: la API original realiza el flujo con derechos delegados

Esta última animación muestra que la mejor opción es que la API original realice el flujo con derechos delegados. Si la API de bajada recibe el token correcto, puede responder correctamente.

Diagrama animado que muestra la API de bajada que recibe el token de acceso de la API original.

Cuando una API actúa en nombre de un usuario y necesita llamar a otra API, la API original debe usar un flujo con derechos delegados para adquirir un token de acceso de permiso delegado y así poder llamar a la API de bajada en nombre del usuario. Las API nunca deben usar permisos de aplicación para llamar a otras API de bajada cuando la API actúa en nombre de un usuario.

Pasos siguientes