HandyCafe Docs
owner it-admin

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
Google oauth2.googleapis.com
Facebook 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:

  1. El cliente selecciona un proveedor: en la pantalla de espera del cliente, el cliente toca un boton de proveedor (por ejemplo, Google, Discord).
  2. El cliente envia la solicitud al servidor: el cliente notifica al servidor de HandyCafe que se ha iniciado un inicio de sesion OAuth.
  3. 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.
  4. El cliente muestra el codigo: el cliente muestra el user_code y el verification_uri al cliente, tipicamente renderizado como un codigo QR para facilitar el escaneo.
  5. 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.
  6. 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.
  7. 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, name y avatar_url.
  8. 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.
  9. 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.
  10. 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.