HandyCafe Docs
owner it-admin

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
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 Configuración > OAuth.

Flujo de autenticación

El flujo de autorización de dispositivo procede a través de los siguientes pasos:

  1. El cliente selecciona un proveedor: en la pantalla de espera del cliente, el cliente toca un botón de proveedor (por ejemplo, Google, Discord).
  2. 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.
  3. 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.
  4. El cliente muestra el código: el cliente muestra el user_code y el verification_uri al cliente, típicamente renderizado como un código QR para facilitar el escaneo.
  5. 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.
  6. 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.
  7. 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, name y avatar_url.
  8. 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.
  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 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.