Adición de autenticación para las llamadas a las API personalizadas desde Azure Logic Apps
Para mejorar la seguridad de las llamadas a las API, puede configurar la autenticación de Microsoft Entra a través de Azure Portal para que no tenga que actualizar el código. También puede requerir y aplicar la autenticación a través del código de la API.
Puede agregar autenticación de las siguientes maneras:
No hay cambios en el código: proteja la API con id. de Microsoft Entra a través de Azure Portal, por lo que no tiene que actualizar el código ni volver a implementar la API.
Nota:
De manera predeterminada, la autenticación de Microsoft Entra que seleccione en Azure Portal no proporciona autorización específica. Por ejemplo, esta autenticación bloquea la API a un solo inquilino concreto, no a una aplicación o un usuario específicos.
Actualizar el código de la API: proteja la API aplicando autenticación de certificados, autenticación básica, o autenticación de Microsoft Entra a través del código.
Autenticación de las llamadas a la API sin cambiar el código
Estos son los pasos generales para este método:
Cree dos identidades de aplicación de Microsoft Entra: una para el recurso de aplicación lógica y otra para la aplicación web (o aplicación de API).
Para autenticar las llamadas a la API, use las credenciales (identificador de cliente y secreto) de la entidad de servicio asociada a la identidad de aplicación de Microsoft Entra para la aplicación lógica.
Incluya los id. de aplicación en la definición de la aplicación lógica.
Parte 1: Creación de una identidad de aplicación de Microsoft Entra para la aplicación lógica
El recurso de la aplicación lógica usa esta identidad de aplicación de Microsoft Entra para autenticarse en el identificador de Microsoft Entra. Solo tiene que establecer esta identidad una vez para el directorio. Por ejemplo, puede usar la misma identidad para todas las aplicaciones lógicas, aunque puede crear identidades únicas para cada una. Puede configurar estas identidades en Azure Portal o usar PowerShell.
En el portal Azure, seleccione Microsoft Entra ID.
Confirme que se encuentra en el mismo directorio que la aplicación web o de API.
Sugerencia
Para cambiar de directorio, seleccione el perfil y seleccione otro. O bien, seleccione Información general>Cambiar directorio.
En el menú del directorio, en Administrar, seleccione Registros de aplicaciones>Nuevo registro.
En la lista Todos los registros se muestran todos los registros de aplicaciones del directorio. Para ver solo los registros de su aplicación, seleccione Aplicaciones propias.
Proporcione un nombre orientado al usuario para la identidad de la aplicación lógica. Seleccione los tipos de cuenta admitidos. En URI de redirección, seleccione Web, proporcione una dirección URL única donde se debe devolver la respuesta de autenticación y seleccione Registrar.
La lista Aplicaciones propias ahora incluye la identidad de la aplicación creada. Si esta identidad no aparece, en la barra de herramientas, seleccione Actualizar.
En la lista de registros de aplicaciones, seleccione la nueva identidad de aplicación.
En el menú de navegación de identidad de la aplicación, seleccione Información general.
En el panel Información general, en Información esencial, copie y guarde el valor de Id. de la aplicación para usarlo como "Id. de cliente" de la aplicación lógica en la parte 3.
En el menú de navegación de identidad de la aplicación, seleccione certificados y secretos.
En la pestaña Secretos de cliente, seleccione Nuevo secreto de cliente.
En Descripción, proporcione un nombre para el secreto. En Expira, seleccione una duración para el secreto. Cuando finalice, seleccione Agregar.
El secreto que cree actuará como "secreto" o contraseña de la identidad de aplicación para la aplicación lógica.
En el panel Certificados y secretos, en la sección Secretos de cliente, aparece ahora su secreto junto con un valor secreto y un ID secreto.
Copie el valor del secreto para su uso posterior. Cuando configure la aplicación lógica en la parte 3, especifique este valor como "secreto" o contraseña.
Parte 2: Creación de una identidad de aplicación de Microsoft Entra para la aplicación web o la aplicación de API
Si ya se ha implementado la aplicación web o de API, puede activar la autenticación y crear la identidad de aplicación en Azure Portal. En caso contrario, puede activar la autenticación cuando implemente con una plantilla de Azure Resource Manager.
Creación de la identidad de aplicación para una aplicación web implementada o una aplicación de API en Azure Portal
En Azure Portal, busque y seleccione la aplicación web o de API.
En Configuración, seleccione Autenticación>Agregar proveedor de identidades.
Una vez que se abra el panel Agregar un proveedor de identidades, en la pestaña Aspectos básicos, en la lista proveedor de identidades, seleccione Microsoft para usar identidades de Microsoft Entra y a continuación, seleccione Agregar.
Ahora, cree una identidad de aplicación para la aplicación web o de API de la manera siguiente:
En Tipo de registro de aplicación, seleccione Crear nuevo registro de aplicación.
En Nombre, proporcione un nombre para la identidad de la aplicación.
En Tipos de cuenta admitidos, seleccione los tipos de cuenta adecuados para su escenario.
En Restringir acceso, seleccione Requerir autenticación.
En Solicitudes no autenticadas, seleccione la opción en función de su escenario.
Cuando finalice, seleccione Agregar.
La identidad de aplicación que acaba de crear para la aplicación web o la aplicación de API ahora aparece en la sección Proveedor de identidades:
Sugerencia
Si la identidad de aplicación no aparece, en la barra de herramientas, seleccione Actualizar.
Ahora debe buscar el id. aplicación (cliente) y el id. de inquilino para la identidad de aplicación que acaba de crear para la aplicación web o de API. Ha usado estos identificadores en la parte 3. Por tanto, continúe con estos pasos para Azure Portal.
Búsqueda de los identificadores de cliente y de inquilino de la identidad de aplicación para su aplicación web o de API en Azure Portal
En el menú de navegación de la aplicación web, seleccione Autenticación.
En la sección Proveedor de identidades, busque la identidad de aplicación que creó anteriormente. Seleccione el nombre de la identidad de aplicación.
Una vez que se abra el panel Información general de la identidad de aplicación, busque los valores de Id. de aplicación (cliente) e Id. de directorio (inquilino). Copie y guarde los valores para usarlos en la parte 3.
También puede usar este GUID de id. de inquilino en la plantilla de implementación de la aplicación web o de API, si es necesario. Este GUID es para su inquilino específico ("Identificador de inquilino") y debería aparecer en esta dirección URL:
https://sts.windows.net/{GUID}
Configuración de la autenticación al implementar con una plantilla de Azure Resource Manager
Si usa una plantilla de Azure Resource Manager (plantilla de ARM), todavía tiene que crear una identidad de aplicación de Microsoft Entra para la aplicación web o la aplicación de API que difiere de la identidad de la aplicación para la aplicación lógica. Para crear la identidad de aplicación y, a continuación, buscar el id. de cliente y el id. de inquilino, siga los pasos anteriores de la parte 2 para Azure Portal. Usará el id. de cliente y el id. de inquilino en la plantilla de implementación de la aplicación y también en la parte 3.
Importante
Al crear la identidad de aplicación de Microsoft Entra para la aplicación web o la aplicación de API, debe usar Azure Portal, no PowerShell. El cmdlet de PowerShell no configura los permisos necesarios para iniciar la sesión de los usuarios en un sitio web.
Una vez que obtenga los identificadores de cliente y de inquilino, inclúyalos como un subrecurso de la aplicación web o de API en la plantilla de implementación:
"resources": [
{
"apiVersion": "2015-08-01",
"name": "web",
"type": "config",
"dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
"properties": {
"siteAuthEnabled": true,
"siteAuthSettings": {
"clientId": "<client-ID>",
"issuer": "https://sts.windows.net/<tenant-ID>/"
}
}
}
]
Para implementar automáticamente una aplicación web en blanco y una aplicación lógica junto con la autenticación de Microsoft Entra, ver la plantilla completa aquí, o seleccione el siguiente botón Implementar en Azure:
Parte 3: Relleno de la sección de autorización en la aplicación lógica
La plantilla anterior ya tiene esta sección de autorización configurada, pero si va a crear la definición de la aplicación lógica directamente, debe incluir la sección de autorización completa.
Abra la definición de aplicación lógica en la vista de código.
Vaya a la definición de acción HTTP, busque la sección Autorización e incluya las siguientes propiedades:
{
"tenant": "<tenant-ID>",
"audience": "<client-ID-from-Part-2-web-app-or-API app>",
"clientId": "<client-ID-from-Part-1-logic-app>",
"secret": "<secret-from-Part-1-logic-app>",
"type": "ActiveDirectoryOAuth"
}
Propiedad | Obligatorio | Descripción |
---|---|---|
tenant |
Sí | El GUID del inquilino de Microsoft Entra |
audience |
Sí | El GUID para el recurso de destino al que desea acceder, que es el identificador de cliente de la identidad de aplicación para su aplicación web o de API |
clientId |
Sí | El GUID para el cliente que solicita acceso, que es el identificador de cliente de la identidad de aplicación para la aplicación lógica |
secret |
Sí | El secreto o contraseña de la identidad de aplicación para el cliente que solicita el token de acceso |
type |
Sí | El tipo de autenticación. En autenticación ActiveDirectoryOAuth, el valor es ActiveDirectoryOAuth . |
Por ejemplo:
{
"actions": {
"HTTP": {
"inputs": {
"method": "POST",
"uri": "https://your-api-azurewebsites.net/api/your-method",
"authentication": {
"tenant": "tenant-ID",
"audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
"clientId": "client-ID-from-azure-ad-app-for-logic-app",
"secret": "key-from-azure-ad-app-for-logic-app",
"type": "ActiveDirectoryOAuth"
}
}
}
}
}
Protección de las llamadas API mediante código
Autenticación de certificado
Para validar las solicitudes entrantes desde el flujo de trabajo de la aplicación lógica hacia la aplicación web o de API, puede usar certificados de cliente. Para configurar su código, aprenda a configurar la autenticación mutua de TLS.
Importante
En entornos de producción, proteja siempre información confidencial y secretos, como credenciales, certificados, huellas digitales, claves de acceso y cadenas de conexión. Asegúrese de almacenar de forma segura dicha información mediante Microsoft Entra ID y Azure Key Vault. Evite codificar de forma rígida esta información, compartirla con otros usuarios o guardarla en texto sin formato en cualquier lugar al que otros puedan acceder. Cambie los secretos lo antes posible si cree que esta información podría estar en peligro. Para obtener más información, consulte Acerca de Azure Key Vault.
En la sección Autorización, incluya las siguientes propiedades:
{
"type": "ClientCertificate",
"password": "<password>",
"pfx": "<long-pfx-key>"
}
Propiedad | Obligatorio | Descripción |
---|---|---|
type |
Sí | El tipo de autenticación. Para los certificados de cliente TLS/SSL, el valor debe ser ClientCertificate . |
password |
No | La contraseña para acceder al certificado de cliente (archivo PFX) |
pfx |
Sí | Contenido con codificación base64 del certificado del cliente (archivo PFX) |
Autenticación básica
Para validar solicitudes entrantes desde la aplicación lógica hacia la aplicación web o de API, puede usar la autenticación básica, por ejemplo, un nombre de usuario y una contraseña. Aunque la autenticación básica es un patrón común y puede usar esta autenticación en cualquier lenguaje que se use para compilar la aplicación web o la aplicación de API, en escenarios de producción, use el mejor nivel de autenticación disponible.
Importante
Para obtener una seguridad óptima, use Microsoft Entra ID con identidades administradas para la autenticación siempre que sea posible. Este método proporciona seguridad superior sin tener que proporcionar credenciales. Azure administra esta identidad y ayuda a mantener la información de autenticación segura para que no tenga que administrar esta información confidencial usted mismo. Para establecer una identidad administrada para Azure Logic Apps, consulte Autenticación del acceso y las conexiones a los recursos de Azure con identidades administradas en Azure Logic Apps.
Si tiene que usar otro tipo de autenticación, use la siguiente opción de seguridad de nivel más alto disponible. Por ejemplo, supongamos que tiene que crear una conexión mediante una cadena de conexión en su lugar. Una cadena de conexión incluye la información de autorización necesaria para que la aplicación acceda a un recurso, servicio o sistema específico. La clave de acceso de la cadena de conexión es similar a una contraseña raíz.
En entornos de producción, proteja siempre información confidencial y secretos, como credenciales, certificados, huellas digitales, claves de acceso y cadenas de conexión. Asegúrese de almacenar de forma segura dicha información mediante Microsoft Entra ID y Azure Key Vault. Evite codificar de forma rígida esta información, compartirla con otros usuarios o guardarla en texto sin formato en cualquier lugar al que otros puedan acceder. Cambie los secretos lo antes posible si cree que esta información podría estar en peligro. Para obtener más información, consulte Acerca de Azure Key Vault.
En la sección Autorización, incluya las siguientes propiedades:
{
"type": "Basic",
"username": "<username>",
"password": "<password>"
}
Propiedad | Obligatorio | Descripción |
---|---|---|
type |
Sí | El tipo de autenticación que desea utilizar. Para la autenticación básica, el valor debe ser Basic . |
username |
Sí | El nombre de usuario que quiere usar en la autenticación |
password |
Sí | La contraseña que quiere usar en la autenticación |
Autenticación de Microsoft Entra a través del código
De forma predeterminada, la autenticación de Microsoft Entra que activa en Azure Portal no proporciona autorización específica. Por ejemplo, esta autenticación bloquea la API a un solo inquilino concreto, no a una aplicación o un usuario específicos.
Para restringir el acceso de la API a la aplicación lógica por medio de código, extraiga el encabezado que tenga JSON Web Token (JWT). Compruebe la identidad del llamador y rechace las solicitudes que no coinciden.