Contrato de autenticación de Driver App
La autenticación de Driver App combina ramas de credenciales configuradas, autenticación del servidor, control del rol Driver y persistencia de sesión local. Trata esas decisiones por separado: una respuesta correcta a las credenciales no constituye automáticamente una sesión Driver válida, y restaurar el estado local de sesión no equivale a autorización reciente del servidor.
El servicio de autenticación y proveedor configurados determinan si una solicitud de inicio de sesión tiene éxito. La app aún debe aplicar el rol Driver y autorizar cada solicitud posterior a la API.
Disponibilidad
La pantalla Login habilita la presentación de contraseña para correo electrónico y teléfono celular, y pasa el rol Driver como rol permitido en el inicio de sesión estándar. La configuración del proyecto también puede exponer OTP, código de dispositivo, proveedores específicos, CAPTCHA u otras ramas alternativas. Las ramas alternativas no repiten todas el mismo control de rol Driver y no deben considerarse equivalentes sin una validación específica.
La navegación sin sesión registra Home, Login y Forgot. No registra el alta de Driver ni asigna rutas a enlaces profundos entrantes.
Requisitos previos
- Compilación configurada de Driver App y flujo de cuenta Driver compatible.
- Configuración de autenticación actual para la rama prevista.
- Aplicación explícita del rol Driver en todas las ramas que puedan crear estado local de sesión.
- Gestión segura de credenciales, valores OTP, resultados de proveedores, tokens, identidad de notificaciones y datos de cuenta guardados localmente.
- Autorización independiente del servidor en cada solicitud posterior a la autenticación.
Límites de responsabilidad
| Límite | Responsabilidad | Límite |
|---|---|---|
| Interfaz Login | Mostrar controles configurados de credenciales/OTP/proveedor y estados locales de validación/carga/error. | La visibilidad no demuestra la disponibilidad del proveedor o servidor. |
| Controlador de autenticación | Construir el formato seleccionado de credenciales, llamar al endpoint correspondiente e interpretar la respuesta. | Las ramas pueden diferir en controles de rol y limpieza. |
| Control del rol Driver | Admitir solo el rol Driver en la ruta estándar de sesión local. | Las ramas alternativas pueden aplicar controles distintos. |
| Limpieza tras rechazo de rol | Solicitar cierre de sesión del servidor para una sesión devuelta de otra función antes de mostrar un error de permiso. | El cierre/limpieza puede fallar o resolverse parcialmente. |
| Proveedor de sesión | Guardar/quitar token local, usuario y estado opcional del dispositivo; exponer autenticación/carga. | El almacenamiento local no valida ni revoca en el servidor. |
| Navegación Root | Elegir la rama con/sin sesión según el estado local de sesión/disponibilidad. | Navegar no autoriza una tarea. |
| API | Autenticar credenciales y autorizar cada lectura/mutación posterior. | Comprueba el comportamiento de la API en el entorno de la app. |
| OTP/CAPTCHA/proveedor | Controlar generación, verificación, desafíos y resultados externos. | Completar con el proveedor no demuestra el rol Driver. |
Entradas y resultados
| Entrada/rama | Resultado del cliente | Comprobación requerida | Límite de fallo/parcial |
|---|---|---|---|
| Correo/celular + contraseña | Respuesta de autenticación estándar | Rol Driver antes del inicio de sesión local | Error, función incorrecta, fallo de limpieza o falta de sesión |
| OTP | Resultado de credencial de un solo uso generada/verificada | Repetir la política del rol Driver y de sesión | Algunas rutas de verificación pueden fijar la sesión local sin el control de rol estándar |
| Código de dispositivo | Credencial de código de dispositivo y persistencia local opcional | Rol Driver, propiedad del dispositivo y revocación | La interfaz expone capacidades distintas a las del controlador |
| Inicio de sesión específico del proveedor | Resultado del proveedor/servidor | Rol Driver e identidad del proveedor | No se han demostrado disponibilidad ni paridad del control de rol |
| CAPTCHA | Valor del desafío añadido antes de la solicitud seleccionada | Validez del desafío y resultado del proveedor | Una configuración ausente/incompleta puede bloquear o alterar otra rama |
| Identidad de notificación | Token/datos opcionales de la aplicación incluidos durante la autenticación | Propiedad y privacidad de notificación | Iniciar sesión correctamente no demuestra registro/entrega push |
| Restauración de sesión local | Token/usuario/dispositivo guardados devueltos a proveedores | Volver a autorizar cada solicitud de API | Un estado obsoleto/deshabilitado/de función incorrecta puede persistir hasta controles posteriores |
| Flujo Forgot | El formulario local puede mostrar un estado de enlace enviado antes de que se resuelva la solicitud | Observar por separado el éxito/error final | La transición de interfaz no demuestra entrega ni finalización del restablecimiento |
Seguridad y privacidad
- Nunca registres ni expongas credenciales, OTP, valores CAPTCHA, tokens, ID de proveedores, identidad de notificaciones, registros de cuentas ni códigos de dispositivo.
- Aplica el control de rol Driver antes de que cada rama escriba el estado local de sesión.
- Trata por separado el cierre tras rechazo de rol, limpieza del proveedor, revocación de token y limpieza local.
- No compartas tokens ni uses el estado guardado como confirmación de autorización actual.
- Borra el estado de la cuenta anterior y de solicitudes tardías antes de admitir otra cuenta.
Límites y estados de fallo
| Estado | Significado | Respuesta de mantenimiento |
|---|---|---|
| Rama configurada oculta | La interfaz/configuración no la admite. | No expongas una capacidad que solo existe en el controlador. |
| Error de autenticación | El contrato del servidor/proveedor elegido devolvió o produjo un fallo. | Mantén la sesión cerrada y muestra un error saneado. |
| Función incorrecta | La rama estándar rechazó la cuenta devuelta. | Exige la limpieza completa del servidor/cliente; no navegues con sesión. |
| La rama alternativa parece correcta | OTP/proveedor devolvió una cuenta/sesión. | Verifica la paridad del rol Driver antes de iniciar sesión localmente. |
| Sesión local restaurada | Hay datos guardados disponibles. | Vuelve a autorizar cada lectura/acción; no la llames sesión reciente. |
| Usuario local deshabilitado/ausente | La comprobación de coherencia de sesión puede solicitar el cierre de sesión local. | El estado y limpieza del servidor son independientes. |
| Estado de enlace de restablecimiento enviado | La interfaz local de recuperación avanzó. | Espera la solicitud/resultado real; no afirmes que llegó el correo. |
Diagnóstico
| Síntoma | Inspeccionar | Diagnóstico seguro |
|---|---|---|
| Falta la opción de inicio de sesión prevista | Configuración actual y exposición en la interfaz | No invoques una rama que solo tenga el controlador. |
| Parece aceptarse una cuenta que no es Driver | Aplicación del rol por rama y escritura de sesión local | Detén el trabajo autenticado y sigue el procedimiento seguro de limpieza/escalación. |
| Aparece un error de función incorrecta, pero el estado no está claro | Resultados por separado del cierre de sesión del servidor, sesión local y navegación | No reutilices tokens devueltos ni fuerces la navegación. |
| La App se abre con sesión a partir de datos guardados | Hidratación de sesión y autorización en cada solicitud | Considera provisional el estado guardado hasta que las solicitudes actuales autoricen. |
| La recuperación dice que se envió un enlace demasiado pronto | Transición local frente a resolución de la solicitud | Espera el éxito/error final; no repitas ni afirmes que se entregó. |
Vuelve a revisar este contrato cuando cambien una rama de inicio de sesión, control de rol, CAPTCHA/proveedor, identidad de notificación, almacenamiento de sesión, limpieza tras rechazo de rol, estado de recuperación o selección de autenticación Root.
Guías relacionadas: Abrir Driver App e iniciar sesión · Iniciar sesión como conductor · Opciones de inicio de sesión · Restablecer una contraseña · Inicio autenticado