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 soportados por App Builder (ver Métodos de autenticación de usuarios para una descripción general de todos ellos). Con la Autenticación de Aplicaciones, construyes una página de inicio de sesión personalizada utilizando las herramientas de App Builder, y App Builder maneja 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 originalmente solicitó.
A diferencia de la autenticación local y SSO, este método no proporciona capacidades de gestión de usuarios integradas, y por lo tanto requiere una configuración considerablemente mayor. El desarrollador es responsable de construir cada aspecto del flujo de autenticación, desde la validación de credenciales hasta la provisión de usuarios y la asignación de grupos. Para detalles sobre lo que esto implica, consulta la sección Flujo de autenticación. Se proporciona una guía detallada 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 de MFA personalizado, como verificar un número de teléfono con un código de acceso de un solo uso (OTP).
-
Quieres permitir que los usuarios inicien sesión de manera semi-anónima.
Flujo de autenticación
La Autenticación de Aplicaciones pone al desarrollador en pleno control 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 regreso después de una autenticación exitosa, pero toda la lógica intermedia debe ser diseñada y construida por el desarrollador. Por lo tanto, entender este flujo con precisión es esencial: determina qué componentes necesitas construir y cómo encajan entre sí.
El desarrollador es responsable de implementar lo siguiente:
-
Validar las credenciales del usuario contra una fuente de datos.
-
Implementar MFA o factores de autenticación secundarios, 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 cuentas.
-
Hacer cumplir las políticas de contraseña.
Cuando un usuario intenta iniciar sesión, se lleva a cabo la siguiente secuencia de eventos:
-
Solicitud inicial: Un usuario no autenticado intenta acceder a un "enlace profundo" a una página dentro de su aplicación que requiere un inicio de sesión. El enlace puede incluso contener parámetros de URL.
Ejemplo de URLhttps://<tu-dominio>/app/MyApp/MyProtectedPage?orderId=123 -
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".
-
Redirect to login page: App Builder redirige al usuario a la página de inicio de sesión personalizada definida en la propiedad LoginPath de su proveedor de seguridad de Autenticación de Aplicación.
Importante
Para que esto suceda automáticamente, debe hacer lo siguiente:
-
Establecer este proveedor de seguridad como el proveedor de Autenticación Predeterminada para su aplicación. (Esto anula cualquier predeterminado a nivel de sistema que pueda estar configurado en IDE > Proveedores de Seguridad > Configuración > Autenticación Predeterminada.)
-
Habilitar la opción Redirigir en Desafío.
-
-
El usuario inicia sesión: El usuario ingresa sus credenciales en su página de inicio de sesión personalizada y envía el formulario.
-
Se ejecuta la regla de autenticación: Su regla de autenticación personalizada se ejecuta, verifica las credenciales y registra al usuario en App Builder.
-
Redirección a la página original: Después de un inicio de sesión exitoso, App Builder redirige automáticamente al usuario de regreso a la página a la que intentó acceder originalmente, incluyendo todos los parámetros de URL originales.
Resumen de configuración
Para configurar la Autenticación de Aplicación, necesita configurar varios componentes en su entorno y dentro de su aplicación.
Configuración del entorno
Lo siguiente debe configurarse en cada entorno (por ejemplo, Dev, QA y Producción):
-
Aplicación de página de inicio de sesión: Una aplicación independiente de App Builder que sirve como su formulario de inicio de sesión.
-
Proveedor de seguridad de autenticación de la 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
Debe configurar estos elementos en su 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 soporte: Tablas para gestionar 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 describen la configuración completa de la Autenticación de Aplicaciones. 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 y hashes de contraseñas. Todos los clientes autenticados se asignan a una única cuenta de usuario genérica de App Builder. Su 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 independiente de App Builder cuyo único propósito es recopilar y enviar las credenciales del usuario. Debe ser una aplicación separada de su aplicación principal para que los usuarios no autenticados puedan acceder a ella antes de iniciar sesión.
Para crear la aplicación, siga los pasos en Crear una nueva aplicación. Una vez que la aplicación exista, configure 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 del desafío fallará.
-
La página debe contener un panel que funcione a partir de una tabla utilizada para capturar las credenciales ingresadas en el formulario. La tabla Session es la opción recomendada, ya que almacena los valores del formulario para la sesión actual sin persistirlos. Alternativamente, se puede usar una tabla personalizada (por ejemplo, una tabla
LoginAttemptconfigurada en modo Add, de modo que cada intento de inicio de sesión inserte un nuevo registro). Su regla de autenticación lee las credenciales de la tabla que elija. -
La página necesita uno o más campos editables para capturar las credenciales del usuario (como Email, 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 Iniciar Sesión que active su regla de autenticación. Este botón no debe enlazar a ninguna página; su único propósito es ejecutar la regla.
-
(Opcional) Enlaces para flujos de Olvidé mi Contraseña o Registrarse, si su aplicación los requiere.
Por ejemplo, la aplicación de inicio de sesión podría llamarse Inicio de Sesión del Cliente y contener una única página llamada Iniciar Sesión, que tendría dos campos de credenciales basados en la tabla Session: un campo de Email y un campo de Contraseña con validación de contraseña configurada. Un botón de Iniciar Sesión activaría la regla de autenticación.
2. Crear el proveedor de seguridad de autenticación de la aplicación
Para crear el proveedor de seguridad de autenticación de la aplicación, siga estos pasos:
-
Seleccione IDE > Proveedores de Seguridad.
-
En el panel de Autenticación de Usuario, haga clic en + Autenticación de Usuario.
-
En la página de Proveedor, configure lo siguiente:
-
Nombre: Un nombre para su proveedor (por ejemplo,
CustomerPortalAuth). -
Tipo: Seleccione Autenticación de Aplicación.
-
Habilitado: Deje esto deshabilitado hasta que toda la configuración esté completa.
-
Mostrar en el Formulario de Inicio de Sesión: Marque esta casilla.
-
Página Predeterminada: Seleccione la página de destino predeterminada que un usuario debería ver después de iniciar sesión, si no intentó acceder originalmente a una página de enlace profundo específica. La página debe estar marcada como Pública en su configuración de Edge Case.
-
-
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 Edge Case.
-
Haz clic en Guardar.
-
En Propiedades, haz clic en + Propiedad.
-
En el popup de 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 un
/.Ejemplo/app/Customer%20Login/Sign%20In
-
-
Guarda las propiedades y cierra el popup.
3. Configurar una cuenta de usuario genérica
App Builder proporciona dos enfoques principales para manejar cuentas de usuario con Autenticación de Aplicaciones:
-
Mapeo 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 asignan los usuarios externos autenticados. Esto es particularmente útil para escenarios como el 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 de bajo privilegio.
-
Provisionamiento 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 centra en el primer enfoque: mapeo a una cuenta de usuario genérica. Para hacer esto, sigue estos pasos:
-
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. -
Asigna al usuario a los Grupos que otorgan los roles necesarios para tu aplicación.
-
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 utilizará 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 utilizará esto para encontrar la cuenta de usuario correcta, a menos que también proporciones un valor para Identificador.
-
Identificador (opcional pero recomendado): Ingrese un ID único y permanente 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 proporciona esto, App Builder siempre lo utiliza 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 con éxito se asignan a esta cuenta.
4. Crear la regla de autenticación
Necesita una regla de negocio para manejar la lógica de autenticación real. Para configurarla, siga estos pasos:
-
Cree una regla de negocio CRUD XP que realice una acción de Inserción.
-
Establezca la Fuente de Datos Objetivo en
Vinyly el Objetivo en el objeto de datos públicoAuthenticate. -
En el SQL de la regla, una las credenciales de usuario externas con la tabla utilizada por el formulario de la 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 utilice la tabla User incorporada de App Builder para validar contraseñas. La tabla User no expone el campo de contraseña por razones de seguridad, lo que hace imposible la validación de contraseñas contra ella sin un complemento personalizado. Utilice una fuente de datos externa para almacenar y validar las credenciales de usuario en su lugar.
-
Asigne las siguientes cuatro columnas requeridas al objetivo
Authenticate:-
AuthenticateID: Un nuevo GUID. Use
newUUID(). -
ProviderId: El ID de su proveedor de seguridad de autenticación de aplicación.
-
AppUserId: Un identificador para el usuario final que está iniciando sesión (como su correo electrónico o nombre de usuario). Esto se utiliza para auditoría a través de la función
who('appuserid'). -
Name: El nombre de la Identidad del usuario genérico al que se asignará (por ejemplo,
portal.user@example.com). Esto puede estar codificado de forma fija o determinarse dinámicamente según las credenciales del usuario.
-
Por ejemplo, en el escenario del portal del cliente, el SQL de la regla une la tabla Session con la tabla externa Customers en el campo Email. Las asignaciones de columnas son: AuthenticateID utiliza newUUID(), ProviderId es el ID del proveedor CustomerPortalAuth, AppUserId está mapeado al campo Email de la tabla Session, y Name se establece en el valor fijo portal.user@example.com. Tenga en cuenta que el SQL exacto para la unión, incluyendo cómo se maneja la validación de contraseñas, dependerá de la estructura de su fuente de datos externa.
5. Habilitar redirección automática en el desafío
Para asegurarse de que los usuarios sean enviados automáticamente a su página de inicio de sesión personalizada cuando accedan a una página protegida, debe habilitar estas dos configuraciones:
-
Configurar el proveedor de autenticación predeterminado:
(El proveedor de autenticación predeterminado se puede establecer a nivel del sistema o a nivel de la aplicación. La configuración a nivel de la aplicación anula la opción a nivel del sistema.)
Para configurar el predeterminado a nivel de la aplicación, siga estos pasos:
-
Seleccione IDE > Proveedores de Seguridad.
-
En Autenticación de Usuario, seleccione Más > Administrar Aplicaciones.
-
Haga clic en el ícono Editar para su aplicación.
-
Establezca Autenticación Predeterminada en el proveedor de Autenticación de Aplicación que creó.
-
Haga clic en Proceder y cierre el popup.
-
-
Configurar redirección en el desafío:
-
En la página de Proveedores de Seguridad, haga clic en el ícono Abrir registro para su proveedor de Autenticación de Aplicación.
-
En Proveedor, haga clic en Editar.
-
Marque la opción Redirigir en el Desafío.
-
Haga clic en Guardar.
-
Por ejemplo, en el escenario del portal del cliente, establezca Autenticación Predeterminada en CustomerPortalAuth para la aplicación Customer Portal.
6. Habilitar y probar
Una vez que se completen todos los pasos anteriores, regrese a su proveedor de seguridad de autenticación de aplicación en el IDE y habilítelo. Ahora puede probar todo el flujo de inicio de sesión.
Aprovisionamiento de usuarios y grupos
La autenticación de la aplicación maneja solo 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 están asignados) no ha sido asignada a un grupo con los permisos de aplicación necesarios.
Para otorgar acceso a un grupo a una aplicación, consulta Aprovisionamiento de grupos. Debes usar Gestionar privilegios 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 programáticamente (por ejemplo, registrando nuevos usuarios en el momento de inicio de sesión), consulta Aprovisionamiento de usuarios y grupos.
Temas avanzados
Enlace a una aplicación autenticada con parámetros de URL
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 vista filtrada dentro de tu aplicación. Debido a que App Builder preserva 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://<tu-dominio>/app/MyApp/Orders?Orders.OrderId=5011 Cuando el usuario no autenticado hace clic en este enlace, es llevado a tu página de inicio de sesión y, después de iniciar sesión, es redirigido a la página de Orders con el pedido 5011 cargado automáticamente.
Activar manualmente un desafío
Mientras que App Builder desafía automáticamente a los usuarios no autenticados cuando acceden a una página protegida, también puedes activar manualmente este proceso desde la lógica de tu aplicación. Esto es útil para escenarios como la expiración de la sesión de un usuario, o para proporcionar un botón de 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 en un botón.
Cómo crear un disparador de inicio de sesión manual
-
Crear una Regla de Negocio: Crea una nueva Regla de Negocio CRUD XP y dale un nombre descriptivo, como
Manual Login Challenge. -
Configurar el Objetivo de la Regla:
-
Establece la Fuente de Datos Objetivo en
Vinyl. -
Establece el Objetivo en el objeto de datos público
Challenge. -
Establece la Acción en
Insertar.
-
-
Mapear el ID del Proveedor: En el diseño de la regla, solo necesitas mapear una columna. Mapea el ID de tu proveedor de seguridad de Autenticación de Aplicaciones a la columna ProviderId en el objetivo
Challenge. Puedes encontrar este ID en la página de Proveedores de Seguridad en el IDE. -
Disparar la Regla: Adjunta esta nueva regla de negocio a un evento. Por ejemplo, podrías agregar un botón de Inicio de Sesión en el encabezado de tu aplicación y configurar su evento
on-clickpara ejecutar la reglaManual Login Challenge.
Cuando esta regla se ejecute, App Builder redirige inmediatamente al usuario a la página de inicio de sesión definida en el LoginPath de tu proveedor de seguridad, preservando la página actual del usuario para que pueda ser devuelto a ella después de un inicio de sesión exitoso.