Adición de autenticación para las llamadas a las API personalizadas desde Azure Logic Apps

Para mejorar la seguridad de las llamadas a sus API, puede configurar la autenticación de Azure Active Directory (Azure AD) en Azure Portal para no tener 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:

Autenticación de las llamadas a la API sin cambiar el código

Estos son los pasos generales para este método:

  1. Cree dos identidades de aplicación de Azure Active Directory (Azure AD): una para el recurso de aplicación lógica y otra para la aplicación web (o aplicación de API).

  2. Para autenticar llamadas a la API, use las credenciales (identificador y secreto de cliente) de la entidad de servicio asociada con la identidad de aplicación de Azure AD para su aplicación lógica.

  3. 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 Azure AD para la aplicación lógica

El recurso de aplicación lógica usa esta identidad de aplicación de Azure AD para autenticarse en Azure AD. 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.

  1. En Azure Portal, seleccione Azure Active Directory.

  2. 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.

  3. 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.

    Captura de pantalla que muestra Azure Portal con la instancia de Azure Active Directory, el panel

  4. 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.

    Captura de pantalla que muestra el panel

    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.

    Captura de pantalla que muestra la identidad de aplicación para la aplicación lógica.

  5. En la lista de registros de aplicaciones, seleccione la nueva identidad de aplicación.

  6. En el menú de navegación de identidad de la aplicación, seleccione Información general.

  7. 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.

    Captura de pantalla que muestra el id. de aplicación (cliente) subrayado.

  8. En el menú de navegación de identidad de la aplicación, seleccione Certificados y secretos.

  9. En la pestaña Secretos de cliente, seleccione Nuevo secreto de cliente.

  10. 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.

    Captura de pantalla que muestra la creación del secreto para la identidad de aplicación.

    En el panel Certificados y secretos, en Secretos de cliente, el secreto aparece ahora junto con un valor de secreto y un id. de secreto.

    Captura de pantalla que muestra el valor del secreto y el id. de secreto con el botón Copiar para el valor de secreto seleccionado.

  11. 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 Azure AD para la aplicación web o 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

  1. En Azure Portal, busque y seleccione la aplicación web o de API.

  2. En Configuración, seleccione Autenticación>Agregar proveedor de identidades.

  3. Una vez que se abra el panel Agregar proveedor de identidades, en la pestaña Aspectos básicos, en la lista Proveedor de identidades, seleccione Microsoft para usar identidades de Azure Active Directory (Azure AD) y, a continuación, seleccione Agregar.

  4. Ahora, cree una identidad de aplicación para la aplicación web o de API de la manera siguiente:

    1. En Tipo de registro de aplicación, seleccione Crear nuevo registro de aplicación.

    2. En Nombre, proporcione un nombre para la identidad de la aplicación.

    3. En Tipos de cuenta admitidos, seleccione los tipos de cuenta adecuados para su escenario.

    4. En Restringir acceso, seleccione Requerir autenticación.

    5. En Solicitudes no autenticadas, seleccione la opción en función de su escenario.

    6. 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:

    Captura de pantalla que muestra la identidad de aplicación que acaba de crear para la aplicación web o la aplicación de API.

    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

  1. En el menú de navegación de la aplicación web, seleccione Autenticación.

  2. 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.

    Captura de pantalla que muestra la identidad de aplicación que acaba de crear con el panel

  3. 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.

    Captura de pantalla que muestra el panel

    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 Azure AD para la aplicación web o la aplicación de API que difiera de la identidad de aplicación de 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

Cuando cree la identidad de aplicación de Azure AD para su aplicación web o 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 juntas con la autenticación de Azure Active Directory, vea la plantilla completa aquí o seleccione el siguiente botón Implementar en Azure:

Implementación 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.

  1. Abra la definición de aplicación lógica en la vista de código.

  2. 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 El GUID para el inquilino de Azure AD
audience 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 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 El secreto o contraseña de la identidad de aplicación para el cliente que solicita el token de acceso
type 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.

En la sección Autorización, incluya las siguientes propiedades:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Propiedad Obligatorio Descripción
type 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 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. La autenticación básica es un patrón habitual, y puede usarla en cualquier lenguaje utilizado para compilar la aplicación web o de API.

En la sección Autorización, incluya las siguientes propiedades:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Propiedad Obligatorio Descripción
type El tipo de autenticación que desea utilizar. Para la autenticación básica, el valor debe ser Basic.
username El nombre de usuario que quiere usar en la autenticación
password La contraseña que quiere usar en la autenticación

Autenticación de Azure Active Directory mediante código

De forma predeterminada, la autenticación de Azure AD que se activa en Azure Portal no lleva a cabo una 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.

Pasos siguientes