Saltar al contenido

Proveedor de seguridad de autenticación de aplicaciones en Jitterbit App Builder

Descripción general

Esta página detalla cómo configurar el proveedor de seguridad de Autenticación de aplicaciones, uno de los métodos de autenticación de usuarios compatibles con App Builder (consulta Métodos de autenticación de usuarios para obtener una descripción general de todos ellos). Con la autenticación de aplicaciones, creas una página de inicio de sesión personalizada utilizando las herramientas de App Builder, y App Builder gestiona el flujo de redirección: cuando un usuario no autenticado intenta acceder a una página protegida, App Builder lo redirige a tu página de inicio de sesión y, después de una autenticación exitosa, lo devuelve a la página que solicitó originalmente.

A diferencia de la autenticación local y SSO, este método no proporciona capacidades integradas de gestión de usuarios y, por lo tanto, requiere considerable más configuración. El desarrollador es responsable de construir cada aspecto del flujo de autenticación, desde la validación de credenciales hasta el aprovisionamiento de usuarios y la asignación de grupos. Para obtener detalles sobre lo que implica, consulta la sección Flujo de autenticación. Se proporciona un tutorial detallado de un escenario hipotético en la sección Guía de configuración paso a paso.

Casos de uso

La autenticación de aplicaciones es el mejor método de autenticación de usuarios cuando:

  • Necesitas validar credenciales contra una fuente de datos de tu elección, en lugar de la tabla de usuarios de App Builder.

  • Tu aplicación requiere integración con una API de autenticación de terceros.

  • Necesitas un flujo MFA personalizado, como verificar un número de teléfono con una contraseña de un solo uso (OTP).

  • Deseas permitir que los usuarios inicien sesión de forma semi-anónima.

Flujo de autenticación

La autenticación de aplicaciones pone al desarrollador en control total del proceso de inicio de sesión. App Builder se encarga de redirigir a los usuarios a tu página de inicio de sesión personalizada y de regresarlos después de una autenticación exitosa, pero toda la lógica intermedia debe ser diseñada e implementada por el desarrollador. Por lo tanto, es esencial comprender este flujo con precisión: determina qué componentes necesitas construir y cómo encajan juntos.

El desarrollador es responsable de implementar lo siguiente:

  • Validar credenciales de usuario contra una fuente de datos.

  • Implementar MFA u otros factores de autenticación secundaria, si es necesario.

  • Crear y aprovisionar cuentas de usuario.

  • Asignar usuarios a grupos y configurar permisos.

  • Construir flujos de restablecimiento de contraseña y recuperación de cuenta.

  • Aplicar políticas de contraseña.

Cuando un usuario intenta iniciar sesión, ocurre la siguiente secuencia de eventos:

  1. Solicitud inicial: Un usuario no autenticado intenta acceder a un "enlace profundo" a una página dentro de tu aplicación que requiere inicio de sesión. El enlace puede incluso contener parámetros de URL.

    URL de ejemplo
    https://<your-domain>/app/MyApp/MyProtectedPage?orderId=123
    
  2. Desafío de autenticación: App Builder determina que el usuario no ha iniciado sesión y que la página requiere autenticación. Inicia un "desafío".

  3. Redirección a la página de inicio de sesión: App Builder redirige al usuario a la página de inicio de sesión personalizada definida en la propiedad LoginPath del proveedor de seguridad de autenticación de aplicaciones.

    Importante

    Para que esto suceda automáticamente, debes hacer lo siguiente:

    • Establecer este proveedor de seguridad como el proveedor de Autenticación predeterminada para tu aplicación. (Esto anula cualquier predeterminado de todo el sistema que pueda estar configurado en IDE > Proveedores de seguridad > Configuración > Autenticación predeterminada.)

    • Habilitar la opción Redirigir en desafío.

  4. El usuario inicia sesión: El usuario ingresa sus credenciales en tu página de inicio de sesión personalizada y envía el formulario.

  5. Se ejecuta la regla de autenticación: Tu regla de autenticación personalizada se ejecuta, verifica las credenciales e inicia la sesión del usuario en App Builder.

  6. Redirección a la página original: Después de un inicio de sesión exitoso, App Builder redirige automáticamente al usuario a la página que originalmente intentó acceder, incluyendo todos los parámetros de URL originales.

Descripción general de la configuración

Para configurar la Autenticación de Aplicación, necesitas configurar varios componentes en tu entorno y dentro de tu aplicación.

Configuración del entorno

Lo siguiente debe configurarse en cada entorno (por ejemplo, Desarrollo, Control de Calidad y Producción):

  • Aplicación de página de inicio de sesión: Una aplicación de App Builder independiente que actúa como tu formulario de inicio de sesión.

  • Proveedor de seguridad de autenticación de aplicación: El proveedor de seguridad que define el comportamiento de inicio de sesión personalizado.

  • Cuentas de usuario genéricas: Una o más cuentas de usuario en App Builder a las que se asignan los usuarios autenticados.

Configuración de la aplicación

Debes configurar estos elementos en tu aplicación principal:

  • Regla de autenticación: Una regla de negocio que contiene la lógica para verificar las credenciales del usuario.

  • (Opcional) Tablas de apoyo: Tablas para administrar sesiones de usuario, contraseñas y datos de usuario específicos de la aplicación.

Guía de configuración paso a paso

Los siguientes pasos te guían a través de la configuración completa de la Autenticación de Aplicación. Para hacer las instrucciones más concretas, cada paso incluye un ejemplo basado en un escenario simple: un portal de clientes que valida las credenciales del usuario contra una fuente de datos externa (llamada Customers) que contiene direcciones de correo electrónico e hashes de contraseña. Todos los clientes autenticados se asignan a una única cuenta de usuario genérica de App Builder. Tu implementación diferirá en los detalles, pero la estructura y la secuencia de pasos serán las mismas.

1. Crear la aplicación de página de inicio de sesión

La página de inicio de sesión es una aplicación de App Builder independiente cuyo único propósito es recopilar y enviar las credenciales del usuario. Debe ser una aplicación separada de tu aplicación principal para que los usuarios no autenticados puedan acceder a ella antes de iniciar sesión.

Para crear la aplicación, sigue los pasos en Crear una aplicación nueva. Una vez que la aplicación exista, configura su página de inicio de sesión con los siguientes requisitos:

  • La página debe ser accesible para el grupo de Usuario Anónimo. Esto es necesario porque los usuarios no autenticados deben poder acceder a la página de inicio de sesión antes de haber iniciado sesión. Sin esto, la redirección de desafío fallará.

  • La página debe contener un panel que se ejecute desde una tabla utilizada para capturar las credenciales ingresadas en el formulario. La tabla de Sesión es la opción recomendada, ya que almacena valores de formulario para la sesión actual sin persistirlos. Alternativamente, puedes usar una tabla personalizada (por ejemplo, una tabla LoginAttempt establecida en modo Agregar, para que cada intento de inicio de sesión inserte un nuevo registro). Tu regla de autenticación lee las credenciales desde la tabla que elijas.

  • La página necesita uno o más campos editables para capturar las credenciales del usuario (como Correo Electrónico, Nombre de Usuario o Número de Teléfono).

  • (Opcional) Un campo de Contraseña con validación de contraseña configurada.

  • Un botón de Inicio de Sesión que dispare tu regla de autenticación. Este botón no debe vincularse a ninguna página; su único propósito es ejecutar la regla.

  • (Opcional) Enlaces para flujos de Contraseña Olvidada o Registrarse, si tu aplicación los requiere.

Por ejemplo, la aplicación de inicio de sesión podría llamarse Inicio de Sesión de Cliente con una única página llamada Iniciar Sesión, que tendría dos campos de credenciales basados en la tabla de Sesión: un campo de Correo Electrónico y un campo de Contraseña con validación de contraseña configurada. Un botón de Iniciar Sesión dispara la regla de autenticación.

2. Crear el proveedor de seguridad de Autenticación de Aplicación

Para crear el proveedor de seguridad de Autenticación de Aplicación, sigue estos pasos:

  1. Selecciona IDE > Proveedores de Seguridad.

  2. Haz clic en + Proveedor de Seguridad.

  3. En la página de Proveedor, configura lo siguiente:

    • Nombre: Un nombre para tu proveedor (por ejemplo, CustomerPortalAuth).

    • Tipo: Selecciona Autenticación de Aplicación.

    • Habilitado: Deja esto deshabilitado hasta que se complete toda la configuración.

  4. Mostrar en formulario de inicio de sesión: Marca esta casilla.

  5. Página predeterminada: Selecciona la página de destino predeterminada que debe ver un usuario después de iniciar sesión, si no intentó acceder originalmente a una página de vínculo profundo específico. La página debe estar marcada como Pública en su configuración de Caso extremo.

  6. Página de cierre de sesión: Selecciona la página a la que se redirige a los usuarios después de cerrar sesión. Si deseas que los usuarios regresen a tu página de inicio de sesión personalizada después de cerrar sesión, selecciona esa página aquí. La página seleccionada debe estar marcada como Pública en su configuración de Caso extremo.

  7. Haz clic en Guardar.

  8. En Propiedades, haz clic en + Propiedad.

  9. En la ventana emergente Propiedades, establece los valores de la siguiente manera:

    • Parámetro: Selecciona LoginPath.

    • Valor: Ingresa la ruta relativa a la raíz de tu aplicación de página de inicio de sesión. La ruta debe estar codificada en URL y comenzar con /.

      Ejemplo
      /app/Customer%20Login/Sign%20In
      
  10. Guarda las propiedades y cierra la ventana emergente.

3. Configura una cuenta de usuario genérica

App Builder proporciona dos enfoques principales para manejar cuentas de usuario con autenticación de aplicaciones:

  1. Asignación a una cuenta de usuario genérica: Esto implica crear una o más cuentas de usuario preexistentes en App Builder a las que se asignen los usuarios externos autenticados. Esto es particularmente útil para escenarios como acceso semi-anónimo (por ejemplo, usando un número de teléfono y OTP) donde todos los usuarios externos podrían compartir una cuenta con pocos privilegios.

  2. Aprovisionamiento dinámico de usuarios: Este enfoque más avanzado implica crear cuentas de usuario individuales en App Builder sobre la marcha durante el proceso de inicio de sesión.

Esta sección se enfoca en el primer enfoque: asignación a una cuenta de usuario genérica. Para hacerlo, sigue estos pasos:

  1. Selecciona IDE > Gestión de usuarios y crea una nueva cuenta de usuario (por ejemplo, PortalUser). Esta es la cuenta que proporciona los permisos dentro de la aplicación.

  2. Asigna el usuario a los Grupos que otorguen los roles necesarios para tu aplicación.

  3. En Identidades, haz clic en + Identidad para crear una identidad para este usuario con la siguiente configuración:

    • Nombre: Ingresa el valor que tu aplicación usará para identificar a la persona, como su nombre de usuario o dirección de correo electrónico. Esto debe ser único para cada usuario. App Builder usará esto para encontrar la cuenta de usuario correcta, a menos que también proporciones un valor para Identificador.

    • Identificador (opcional pero recomendado): Ingresa un ID permanente y único para este usuario. Esta es la forma más confiable para que App Builder reconozca a un usuario, incluso si su dirección de correo electrónico o nombre de usuario cambia. Si proporcionas esto, App Builder siempre lo usa primero para encontrar al usuario.

Por ejemplo, en el escenario del portal del cliente, la cuenta de usuario genérica se llama PortalUser y su Nombre de identidad se establece en portal.user@example.com. Todos los clientes que se autentican correctamente se asignan a esta cuenta.

4. Crea la regla de autenticación

Necesitas una regla de negocio para manejar la lógica de autenticación real. Para configurar una, sigue estos pasos:

  1. Crea una regla de negocio CRUD XP que realice una acción de Inserción.

  2. Establece la Fuente de datos de destino en Vinyl y el Destino en el objeto de datos público Authenticate.

  3. En el SQL de la regla, une tu tabla de credenciales de usuario externo con la tabla utilizada por tu formulario de página de inicio de sesión (por ejemplo, la tabla Session) para recuperar el nombre de usuario y la contraseña ingresados por el usuario.

    Importante

    No uses la tabla Usuario integrada de App Builder para validar contraseñas. La tabla Usuario no expone el campo de contraseña por razones de seguridad, lo que hace imposible la validación de contraseñas sin un complemento personalizado. Utiliza una fuente de datos externa para almacenar y validar las credenciales del usuario en su lugar.

  4. Asigna las siguientes cuatro columnas requeridas al destino Authenticate:

    • AuthenticateID: Un nuevo GUID. Usa newUUID().

    • ProviderId: El ID de tu proveedor de seguridad de autenticación de aplicaciones.

  5. AppUserId: Un identificador para el usuario final que inicia sesión (como su correo electrónico o nombre de usuario). Se utiliza para auditoría mediante la función who('appuserid').

  6. Name: El nombre de la Identity del usuario genérico al que se asignará (por ejemplo, portal.user@example.com). Puede ser un valor fijo o determinarse dinámicamente en función de las credenciales del usuario.

Por ejemplo, en el escenario del portal de cliente, la regla SQL une la tabla Session con la tabla externa Customers en el campo Email. Los mapeos de columnas son: AuthenticateID utiliza newUUID(), ProviderId es el ID del proveedor CustomerPortalAuth, AppUserId se asigna al campo Email de la tabla Session y Name se establece en el valor fijo portal.user@example.com. Ten en cuenta que el SQL exacto para la combinación, incluida la forma en que se maneja la validación de contraseña, dependerá de la estructura de tu fuente de datos externa.

5. Habilitar redirección automática en caso de desafío

Para asegurar que los usuarios se envíen automáticamente a tu página de inicio de sesión personalizada cuando accedan a una página protegida, debes habilitar estas dos configuraciones:

  1. Configura el proveedor de autenticación predeterminado:

    (El proveedor de autenticación predeterminado se puede establecer en todo el sistema o a nivel de aplicación. La configuración a nivel de aplicación anula la opción en todo el sistema.)

    Para configurar el valor predeterminado a nivel de aplicación, sigue estos pasos:

    1. Selecciona IDE > Security Providers.

    2. En el panel Security Providers, selecciona More > Applications.

    3. Haz clic en el icono Edit de tu aplicación.

    4. Establece Default Authentication en el proveedor de autenticación de aplicación que creaste.

    5. Haz clic en Proceed y cierra la ventana emergente.

  2. Configura redirección en caso de desafío:

    1. En la página Security Providers, haz clic en el icono Open record para tu proveedor de autenticación de aplicación.

    2. En Provider, haz clic en Edit.

    3. Marca la opción Redirect On Challenge.

    4. Haz clic en Save.

Por ejemplo, en el escenario del portal de cliente, establece Default Authentication en CustomerPortalAuth para la aplicación Customer Portal.

6. Habilitar y probar

Una vez que hayas completado todos los pasos anteriores, vuelve a tu proveedor de seguridad de autenticación de aplicación en el IDE y habilítalo. Ahora puedes probar todo el flujo de inicio de sesión.

Aprovisionamiento de usuarios y grupos

Application Authentication solo gestiona el paso de autenticación. No crea automáticamente cuentas de usuario ni asigna permisos de grupo. Si tu aplicación requiere que los usuarios tengan derechos de acceso específicos después de iniciar sesión, debes configurar esto por separado.

Un problema común después de una autenticación exitosa es que los usuarios reciben un error de acceso denegado al intentar acceder a la página de inicio de la aplicación. Esto ocurre cuando la cuenta de usuario (o la cuenta genérica a la que se asignan) no se ha asignado a un grupo con los permisos de aplicación necesarios.

Para otorgar acceso de grupo a una aplicación, consulta Aprovisionamiento de grupos. Debes usar Manage Privileges para agregar la aplicación al conjunto de permisos del grupo y luego otorgar los roles apropiados.

Si tu flujo también requiere crear cuentas de usuario mediante programación (por ejemplo, registrar nuevos usuarios al momento del inicio de sesión), consulta Aprovisionamiento de usuarios y grupos.

Temas avanzados

Una de las características más poderosas de este flujo es la capacidad de enviar a un usuario un enlace a un registro específico o una vista filtrada dentro de tu aplicación. Dado que App Builder conserva la URL originalmente solicitada (incluidos todos los parámetros de consulta) a través del proceso de autenticación, puedes construir enlaces profundos sin ningún formato especial. Por ejemplo, puedes enviar a un usuario un enlace a un pedido específico: https://<your-domain>/app/MyApp/Orders?Orders.OrderId=5011 Cuando el usuario no autenticado hace clic en este enlace, se le lleva a tu página de inicio de sesión y, después de iniciar sesión, se le redirige a la página Orders con el pedido 5011 cargado automáticamente.

Desencadenar manualmente un desafío

Aunque App Builder desencadena automáticamente desafíos para usuarios no autenticados cuando acceden a una página protegida, también puedes desencadenar este proceso manualmente desde la lógica de tu aplicación. Esto es útil en escenarios como la expiración de la sesión de un usuario o para proporcionar un botón Iniciar sesión dedicado en el encabezado de tu aplicación.

Para hacer esto, creas una regla de negocio simple que inserta un registro en el objeto de datos público Challenge. Luego puedes adjuntar esta regla a un evento, como un clic de botón.

Cómo crear un desencadenador de inicio de sesión manual

  1. Crear una regla de negocio: Crea una nueva regla de negocio CRUD XP y asígnale un nombre descriptivo, como Manual Login Challenge.

  2. Configurar el objetivo de la regla:

    • Establece la Fuente de datos de destino en Vinyl.

    • Establece el Objetivo en el objeto de datos público Challenge.

    • Establece la Acción en Insert.

  3. Asignar el ID del proveedor: En el diseño de la regla, solo necesitas asignar una columna. Asigna el ID de tu proveedor de seguridad de autenticación de aplicaciones a la columna ProviderId en el destino Challenge. Puedes encontrar este ID en la página Proveedores de seguridad en el IDE.

  4. Desencadenar la regla: Adjunta esta nueva regla de negocio a un evento. Por ejemplo, podrías agregar un botón Iniciar sesión al encabezado de tu aplicación y configurar su evento on-click para ejecutar la regla Manual Login Challenge.

Cuando se ejecuta esta regla, App Builder redirige inmediatamente al usuario a la página de inicio de sesión definida en la LoginPath de tu proveedor de seguridad, preservando la página actual del usuario para que pueda ser redirigido a ella después de un inicio de sesión exitoso.