Recepción y respuesta a llamadas HTTPS entrantes a flujos de trabajo en Azure Logic Apps
Se aplica a: Azure Logic Apps (consumo + estándar)
En esta guía paso a paso se muestra cómo crear un flujo de trabajo de aplicación lógica que pueda recibir y controlar una solicitud HTTPS entrante o una llamada desde otro servicio mediante el desencadenador integrado Solicitud. Cuando el flujo de trabajo usa este desencadenador, puede responder a la solicitud HTTPS mediante la acción integrada Respuesta.
Nota:
La acción Respuesta solo funciona cuando se usa el desencadenador de Solicitud.
En la lista siguiente se describen algunas tareas de ejemplo que el flujo de trabajo puede realizar al usar el desencadenador de Solicitud y la acción de Respuesta:
Reciba una solicitud HTTP de datos en una base de datos local, y responda a ella.
Reciba y responda a una solicitud HTTPS enviada desde otro flujo de trabajo de aplicación lógica.
Desencadene una ejecución de flujo de trabajo cuando se produzca un evento de webhook externo.
En su lugar, para ejecutar el flujo de trabajo mediante el envío de una solicitud saliente o una salida, use el desencadenador integrado HTTP o la acción integrada HTTP.
Requisitos previos
Una cuenta y una suscripción de Azure. Si no tiene una suscripción, puede registrarse para obtener una cuenta de Azure gratuita.
Flujo de trabajo de la aplicación lógica donde quiere recibir la solicitud HTTPS entrante. Para iniciar el flujo de trabajo mediante un desencadenador de Solicitud, deberá empezar con un flujo de trabajo en blanco. Para usar la acción Respuesta, el flujo de trabajo debe comenzar con el desencadenador de Solicitud.
Instale o use una herramienta que pueda enviar solicitudes HTTP para probar la solución, por ejemplo:
- Visual Studio Code con una extensión de Visual Studio Marketplace
- Invoke-RestMethod de PowerShell
- Microsoft Edge: herramienta de consola de red
- Bruno
- curl
Precaución
En escenarios en los que tiene datos confidenciales, como credenciales, secretos, tokens de acceso, claves de API y otra información similar, asegúrese de usar una herramienta que proteja los datos con las características de seguridad necesarias, funcione sin conexión o localmente, no sincronice los datos en la nube y no requiera que inicie sesión en una cuenta en línea. De este modo, se reduce el riesgo de exponer datos confidenciales al público.
Adición de un desencadenador de solicitud
Este desencadenador de Solicitud crea un punto de conexión al que se puede llamar manualmente que controla solo solicitudes entrantes a través de HTTPS. Cuando el autor de la llamada envía una solicitud a este punto de conexión, el desencadenador de Solicitud se activa y ejecuta el flujo de trabajo. Para obtener más información sobre cómo llamar a este desencadenador, consulte Llamada, desencadenamiento o anidamiento de flujos de trabajos con puntos de conexión HTTPS en Azure Logic Apps.
En Azure Portal, abra su aplicación lógica de consumo y el flujo de trabajo en blanco en el diseñador.
En el diseñador, siga estos pasos generales para buscar y agregar el desencadenador de Solicitudes integrado denominado Cuando se recibe una solicitud HTTP.
Una vez que aparezca el cuadro de información del desencadenador, proporcione la siguiente información según sea necesario:
Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción URL de HTTP POST {none} Sí La URL del punto de conexión que se genera después de guardar el flujo de trabajo y se usa para enviar una solicitud que desencadene el flujo de trabajo. Esquema JSON del cuerpo de la solicitud schema
No El esquema JSON que describe las propiedades y los valores del cuerpo de la solicitud entrante. El diseñador usa este esquema para generar tokens para las propiedades de la solicitud. De esa manera, el flujo de trabajo puede analizar, consumir y pasar los resultados del desencadenador de Solicitud al flujo de trabajo.
Si no tiene un esquema JSON, puede generarlo a partir de una carga útil de muestra mediante la capacidad Usar carga útil de muestra para generar esquemas.A continuación se muestra un ejemplo de esquema JSON:
A continuación se muestra un ejemplo de esquema JSON completo:
{ "type": "object", "properties": { "account": { "type": "object", "properties": { "name": { "type": "string" }, "ID": { "type": "string" }, "address": { "type": "object", "properties": { "number": { "type": "string" }, "street": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "postalCode": { "type": "string" } } } } } } }
Cuando introduce un esquema JSON, el diseñador muestra un recordatorio para incluir el encabezado Content-Type en la solicitud y establecer el valor del encabezado en aplicación/JSON. Para obtener más información, consulte Control de tipos de contenido.
En el siguiente ejemplo se muestra cómo aparece el encabezado Content-Type en formato JSON:
{ "Content-Type": "application/json" }
Para generar un esquema JSON basado en la carga esperada (datos), puede usar una herramienta como JSONSchema.net o puede seguir estos pasos:
En el desencadenador Solicitud, seleccione Usar una carga de ejemplo para generar el esquema.
Escriba la carga de ejemplo y seleccione Listo.
En el ejemplo siguiente se muestra la carga de ejemplo:
{ "account": { "name": "Contoso", "ID": "12345", "address": { "number": "1234", "street": "Anywhere Street", "city": "AnyTown", "state": "AnyState", "country": "USA", "postalCode": "11111" } } }
Para comprobar que la llamada entrante tiene un cuerpo de solicitud que coincide con el esquema especificado, siga estos pasos:
Para exigir que el mensaje entrante tenga exactamente los mismos campos que el esquema describe, en el esquema, agregue la propiedad
required
y especifique los campos obligatorios. Agregue la propiedadadditionalProperties
y establezca el valor enfalse
.Por ejemplo, el esquema siguiente especifica que el mensaje entrante debe tener el campo
msg
y ningún otro:{ "properties": { "msg": { "type": "string" } }, "type": "object", "required": ["msg"], "additionalProperties": false }
En la barra de título del desencadenador de Solicitud, seleccione el botón de puntos suspensivos (...).
En la configuración del desencadenador, active Validación de esquema y seleccione Listo.
Si el cuerpo de la solicitud de la llamada entrante no coincide con el esquema, el desencadenador devuelve un error HTTP 400 Solicitud no válida.
Para agregar otras propiedades o parámetros al desencadenador, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción Método method
No Método que la solicitud entrante debe usar para llamar a la aplicación lógica Ruta de acceso relativa relativePath
No Ruta de acceso relativa del parámetro que la URL del punto de conexión de la aplicación lógica puede aceptar En el siguiente ejemplo se agrega la propiedad Método:
La propiedad Method aparece en el desencadenador para que pueda seleccionar un método de la lista.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Este paso genera la URL que puede usar para enviar una solicitud que desencadene el flujo de trabajo.
Para copiar la URL generada, seleccione el icono de copia que se encuentra junto a la URL.
Nota:
Si quiere incluir el símbolo de hash o de almohadilla (#) en el URI al hacer una llamada al desencadenador de Solicitud, use mejor esta versión codificada:
%25%23
Ahora, puede seguir compilando el flujo de trabajo mediante la agregación de otra acción como siguiente paso. Por ejemplo, puede responder a la solicitud mediante la agregación de una acción de respuesta, que puede usar para devolver una respuesta personalizada y que se describe más adelante en este tema.
Nota:
El flujo de trabajo solo mantiene abierta una solicitud entrante durante un tiempo limitado. En el supuesto de que el flujo de trabajo también incluya una acción de respuesta, si el flujo de trabajo no devuelve una respuesta al autor de la llamada después de que expire este tiempo, el flujo de trabajo devolverá el estado 504 TIEMPO DE ESPERA DE LA PUERTA DE ENLACE al autor de la llamada. Si el flujo de trabajo no incluye una acción de respuesta, este devolverá inmediatamente el estado 202 ACEPTADO al autor de la llamada.
Para obtener información sobre la seguridad, la autenticación y el cifrado de las llamadas entrantes al flujo de trabajo, como Seguridad de la capa de transporte (TLS), anteriormente conocido como Capa de sockets seguros (SSL), OAuth con Microsoft Entra , Firmas de acceso compartido (SAS), exponiendo el recurso de aplicación lógica con Azure API Management, o restringir las direcciones IP que originan llamadas entrantes, consulte Acceso seguro y datos: Acceso para llamadas entrantes a desencadenadores basados en solicitudes.
Salidas del desencadenador
En la siguiente tabla se enumeran las salidas del desencadenador de Solicitud:
Nombre de la propiedad JSON | Tipo de datos | Descripción |
---|---|---|
headers | Object | Objeto JSON que describe los encabezados de la solicitud |
cuerpo | Object | Objeto JSON que describe el contenido del cuerpo de la solicitud |
Adición de una acción de respuesta
Cuando use el desencadenador de Solicitud para recibir solicitudes entrantes, puede modelar la respuesta y enviar los resultados de la carga al autor de la llamada mediante la acción de respuesta integrada, que solo funciona con el desencadenador de Solicitud. Esta combinación con el desencadenador de Solicitud y la acción de respuesta crea el patrón de solicitud-respuesta. Excepto dentro de los bucles Foreach, los bucles Until y las ramas paralelas, se puede agregar una acción de respuesta en cualquier lugar del flujo de trabajo.
Importante
Si la acción de respuesta incluye los siguientes encabezados, Azure Logic Apps quitará dichos encabezados del mensaje de respuesta generado sin mostrar ninguna advertencia o error. Azure Logic Apps no incluirá estos encabezados, aunque el servicio no le impedirá guardar flujos de trabajo que tengan una acción de respuesta con estos encabezados.
Allow
- Encabezados
Content-*
, exceptoContent-Disposition
,Content-Encoding
yContent-Type
cuando se usan operaciones POST y PUT, pero no se incluyen en operaciones GET Cookie
Expires
Last-Modified
Set-Cookie
Transfer-Encoding
Si tiene una o varias acciones de respuesta en un flujo de trabajo complejo con ramas, asegúrese de que el flujo de trabajo procese al menos una acción de respuesta durante el tiempo de ejecución. De lo contrario, si se omiten todas las acciones de respuesta, el autor de la llamada recibe un error 502: Puerta de enlace incorrecta, incluso si el flujo de trabajo finaliza correctamente.
En un flujo de trabajo sin estado de aplicación lógica estándar, la acción Respuesta debe aparecer en último lugar en el flujo de trabajo. Si la acción aparece en cualquier otro lugar, Azure Logic Apps todavía no ejecutará la acción hasta que todas las demás acciones terminen de ejecutarse.
En el diseñador de flujo de trabajo, siga estos pasos generales para buscar y agregar la acción integrada de Solicitud llamada Respuesta.
Para simplificar, los ejemplos siguientes muestran un desencadenador de Solicitud contraído.
En el cuadro de información de la acción, agregue los valores necesarios para el mensaje de respuesta
Nombre de propiedad Nombre de la propiedad JSON Obligatorio Descripción Código de estado statusCode
Sí Código de estado que se devolverá en la respuesta Encabezados headers
No Objeto JSON que describe uno o más encabezados que se incluirán en la respuesta Cuerpo body
No Cuerpo de la respuesta Al seleccionar dentro de cualquier campo de texto, se abre automáticamente la lista de contenido dinámico. A continuación, puede seleccionar tokens que representen cualquier salida disponible de pasos anteriores del flujo de trabajo. Las propiedades del esquema que especifique también aparecen en esta lista de contenido dinámico. Puede seleccionar estas propiedades para usarlas en el flujo de trabajo.
Por ejemplo, para el cuadro Encabezados, incluya Content-Type como nombre de clave y establezca el valor de clave en aplicación/JSON, tal y como se mencionó anteriormente en este artículo. Para el cuadro Cuerpo, puede seleccionar la salida del cuerpo del desencadenador en la lista de contenido dinámico.
Para ver los encabezados en formato JSON, seleccione Switch to text view (Cambiar a la vista de texto).
Para agregar más propiedades para la acción, como un esquema JSON para el cuerpo de respuesta, abra la lista Agregar nuevo parámetro y seleccione los parámetros que quiera agregar.
Cuando haya terminado, guarde el flujo de trabajo. En la barra de herramientas del diseñador, seleccione Save (Guardar).
Prueba del flujo de trabajo
Para desencadenar el flujo de trabajo, envíe una solicitud HTTP a la dirección URL generada para el desencadenador de Solicitud, incluido el método que espera el desencadenador de Solicitud mediante la herramienta de solicitud HTTP y sus instrucciones.
Para obtener más información sobre la definición JSON subyacente del desencadenador y sobre cómo llamar a este desencadenador, vea estos temas: Tipo de desencadenador de Solicitud y Llamada, desencadenador o anidamiento de flujos de trabajo con puntos de conexión HTTP en Azure Logic Apps.
Seguridad y autenticación
En un flujo de trabajo de una aplicación lógica estándar que comienza con el desencadenador de Solicitud (pero no un desencadenador de webhook), el aprovisionamiento de Azure Functions se puede usar para autenticar las llamadas entrantes enviadas al punto de conexión creado por el desencadenador mediante una identidad administrada. Este aprovisionamiento también se denomina "Easy Auth". Para información, consulte Desencadenamiento de flujos de trabajo en Aplicaciones lógicas estándar con Easy Auth.
Para más información sobre la seguridad, la autorización y el cifrado de llamadas entrantes para el flujo de trabajo, como la Seguridad de la capa de transporte (TLS), conocida anteriormente como Capa de sockets seguros (SSL) o la Autenticación abierta de Microsoft Entra ID (Microsoft Entra ID OAuth), exposición de la aplicación lógica con Azure API Management o restricción de las direcciones IP que originan llamadas entrantes, consulteProteger el acceso y los datos: acceso de las llamadas entrantes a desencadenadores basados en solicitudes.