Inicio de sesion OAuth
HandyCafe admite inicio de sesion social/OAuth para clientes usando la Autorizacion de Dispositivo (RFC 8628). Este flujo esta disenado para entornos de kiosco y publicos 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 Configuracion > OAuth.
Flujo de autenticacion
El flujo de autorizacion de dispositivo procede a traves de los siguientes pasos:
- El cliente selecciona un proveedor: en la pantalla de espera del cliente, el cliente toca un boton de proveedor (por ejemplo, Google, Discord).
- El cliente envia la solicitud al servidor: el cliente notifica al servidor de HandyCafe que se ha iniciado un inicio de sesion OAuth.
- El servidor solicita un codigo de dispositivo: el servidor contacta al endpoint de autorizacion de dispositivo del proveedor seleccionado y recibe un codigo de dispositivo, codigo de usuario y URI de verificacion.
- El cliente muestra el codigo: el cliente muestra el
user_codey elverification_urial cliente, tipicamente renderizado como un codigo QR para facilitar el escaneo. - El cliente se autentica en su telefono: el cliente escanea el codigo QR con su dispositivo personal (telefono o tableta) y completa la autenticacion en el sitio web del proveedor.
- El servidor consulta por el token: el servidor consulta periodicamente al proveedor por un token. Los estados de consulta incluyen:
- Pendiente: el cliente aun no ha completado la autenticacion.
- Reducir velocidad: consultando con demasiada frecuencia; el servidor reduce la frecuencia.
- Exitoso: autenticacion completada; token recibido.
- Expirado: el codigo del dispositivo ha expirado antes de la autenticacion.
- Error: ocurrio un error inesperado.
- El servidor obtiene la informacion del usuario: al tener exito, 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 sesion aparece en la pagina 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 sesion del cliente comienza: el cliente recibe la confirmacion y la sesion 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 contrasenas ni tokens en la maquina cliente.
- Puerta de aprobacion del administrador. Cada solicitud de inicio de sesion OAuth debe ser aprobada por un administrador o cajero antes de que comience una sesion, previniendo el acceso no autorizado.
- Requisito de credito configurable. Una opcion de "permitir inicio de sesion sin credito" puede habilitarse o deshabilitarse, controlando si los clientes necesitan un saldo positivo para iniciar sesion via OAuth.
Configuracion
Los proveedores OAuth se configuran en Configuracion > 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.