es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Disparador blob de la función de Azure invocando una API REST.

Hola, tengo este escenario:

El usuario carga un archivo en una cuenta de almacenamiento de blobs -> La función de Azure lo recoge -> Llama a una API REST para realizar algunas acciones con la fecha dentro del excel.

La función de Azure tiene una identidad asignada por el sistema y tanto la API REST como la función residen dentro del mismo grupo de recursos. La API REST está construida usando los servicios de aplicación de Azure.
No estoy seguro de cómo autenticar la aplicación de función para llamar a la API REST, ¿hay algún ejemplo de cómo debería proceder con la autenticación entre la aplicación de función y la API REST utilizando Azure AD o la identidad gestionada por el sistema?

¿Hay alguna otra forma de lograr este escenario que no veo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para autenticar la Function app y llamar a la API REST, puedes usar la característica de identidad administrada en Azure. Primero, debes habilitar la identidad administrada para la Function app. Luego, puedes otorgar a la identidad administrada acceso a la API REST mediante un registro de aplicación Azure AD. Después, puedes utilizar el token de acceso obtenido del flujo de autenticación de Azure AD para llamar a la API REST con los permisos necesarios.

    Aquí tienes los pasos generales que puedes seguir:

    1. Habilitar la identidad administrada asignada por el sistema para la Function app:
      • Navega a la Function app en el portal de Azure
      • Haz clic en “Características de plataforma” -> “Identidad”
      • Establece el “Estado” en “Activado” y haz clic en “Guardar”
    2. Registrar una aplicación Azure AD para la API REST:
      • Navega al portal de Azure AD
      • Haz clic en “Registros de aplicación” -> “Nuevo registro”
      • Dale un nombre a la aplicación y selecciona “Cuentas solo de este directorio organizativo” como “Tipos de cuenta admitidos”
      • En “URI de redireccionamiento”, selecciona “Web” e ingresa una URI de redirección ficticia
      • Haz clic en “Registrar”
    3. Otorgar acceso de la identidad administrada de la Function app a la aplicación Azure AD:
      • En la página general de la aplicación Azure AD, haz clic en “Permisos de API”
      • Haz clic en “Agregar un permiso” -> “API que utiliza mi organización”
      • Busca y selecciona la API que utiliza tu API REST
      • Selecciona los permisos necesarios y haz clic en “Agregar permisos”
    4. Obtén el token de acceso en la Function app:
      • Agrega el paquete NuGet “Microsoft.Identity.Web” al proyecto de la Function app
      • En el código de la Function app, utiliza la biblioteca “Microsoft.Identity.Web” para obtener el token de acceso para la aplicación Azure AD utilizando la identidad administrada de la Function app.
        Código de ejemplo:

        string[] scopes = new[] { "api://{clientId}/{scope}" };
        var tokenAcquisition = new TokenAcquisition();
        string accessToken = await tokenAcquisition.GetAccessTokenForUserAsync(scopes);
        

        Reemplaza {clientId} con el ID de cliente de la aplicación Azure AD y {scope} con el alcance necesario para la API REST.

    5. Llama a la API REST:

      • En el código de la Function app, utiliza el token de acceso obtenido anteriormente para llamar a la API REST con los permisos necesarios.

    Nota: La API REST debe estar configurada para aceptar la autenticación de Azure AD.

    Puede haber otras formas de lograr este escenario, como usar un token de firma de acceso compartido (SAS) en lugar de la autenticación de Azure AD. Sin embargo, el uso de la identidad administrada y la autenticación de Azure AD proporciona una solución más segura y manejable.

Comments are closed.