Inicio de sesión OAuth
HandyCafe admite inicio de sesión social/OAuth para clientes usando la Autorización de Dispositivo (RFC 8628). Este flujo está diseñado para entornos de kiosco y públicos donde los clientes no pueden ingresar credenciales de forma segura en PCs compartidos.
Proveedores admitidos
| Proveedor | Endpoint |
|---|---|
| oauth2.googleapis.com | |
| graph.facebook.com/v21.0 | |
| Apple | appleid.apple.com |
| X (Twitter) | api.x.com/2/oauth2 |
| Discord | discord.com/api/oauth2 |
Cada proveedor puede habilitarse o deshabilitarse individualmente en Configuración > OAuth.
Flujo de autenticación
El flujo de autorización de dispositivo procede a través de los siguientes pasos:
- El cliente selecciona un proveedor: en la pantalla de espera del cliente, el cliente toca un botón de proveedor (por ejemplo, Google, Discord).
- El cliente envía la solicitud al servidor: el cliente notifica al servidor de HandyCafe que se ha iniciado un inicio de sesión OAuth.
- El servidor solicita un código de dispositivo: el servidor contacta al endpoint de autorización de dispositivo del proveedor seleccionado y recibe un código de dispositivo, código de usuario y URI de verificación.
- El cliente muestra el código: el cliente muestra el
user_codey elverification_urial cliente, típicamente renderizado como un código QR para facilitar el escaneo. - El cliente se autentica en su teléfono: el cliente escanea el código QR con su dispositivo personal (teléfono o tableta) y completa la autenticación en el sitio web del proveedor.
- El servidor consulta por el token: el servidor consulta periódicamente al proveedor por un token. Los estados de consulta incluyen:
- Pendiente: el cliente aún no ha completado la autenticación.
- Reducir velocidad: consultando con demasiada frecuencia; el servidor reduce la frecuencia.
- Exitoso: autenticación completada; token recibido.
- Expirado: el código del dispositivo ha expirado antes de la autenticación.
- Error: ocurrió un error inesperado.
- El servidor obtiene la información del usuario: al tener éxito, el servidor usa el token para obtener el perfil del cliente del proveedor, incluyendo
provider_uid,email,nameyavatar_url. - El administrador aprueba o rechaza: la solicitud de inicio de sesión aparece en la página de Solicitudes. Un administrador o cajero revisa y aprueba o rechaza la solicitud.
- Se crea o vincula el miembro: si se aprueba, se crea una nueva cuenta de miembro o se vincula la identidad OAuth a un miembro existente.
- La sesión del cliente comienza: el cliente recibe la confirmación y la sesión del cliente comienza.
Consideraciones de seguridad
- Las credenciales nunca tocan el PC compartido. Los clientes se autentican solo en sus dispositivos personales. No se ingresan contraseñas ni tokens en la máquina cliente.
- Puerta de aprobación del administrador. Cada solicitud de inicio de sesión OAuth debe ser aprobada por un administrador o cajero antes de que comience una sesión, previniendo el acceso no autorizado.
- Requisito de crédito configurable. Una opción de "permitir inicio de sesión sin crédito" puede habilitarse o deshabilitarse, controlando si los clientes necesitan un saldo positivo para iniciar sesión vía OAuth.
Configuración
Los proveedores OAuth se configuran en Configuración > OAuth. Cada proveedor requiere sus propias credenciales de cliente (ID de cliente y secreto de cliente) obtenidas de la consola de desarrollador del proveedor. Habilite solo los proveedores que desea ofrecer a sus clientes.