Accesso OAuth
HandyCafe supporta l'accesso social/OAuth per i clienti utilizzando il Device Authorization Grant (RFC 8628). Questo flusso e progettato per ambienti kiosk e pubblici dove i clienti non possono inserire in sicurezza le credenziali su PC condivisi.
Provider Supportati
| Provider | 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 |
Ogni provider puo essere abilitato o disabilitato individualmente in Impostazioni > OAuth.
Flusso di Autenticazione
Il flusso di autorizzazione del dispositivo procede attraverso i seguenti passaggi:
- Il cliente seleziona un provider -- sulla schermata di inattivita del client, il cliente tocca un pulsante provider (ad esempio Google, Discord).
- Il client invia la richiesta al server -- il client notifica il server HandyCafe che e stato avviato un accesso OAuth.
- Il server richiede un codice dispositivo -- il server contatta l'endpoint di autorizzazione dispositivo del provider selezionato e riceve un codice dispositivo, un codice utente e un URI di verifica.
- Il client mostra il codice -- il client mostra il
user_codee ilverification_urial cliente, tipicamente renderizzato come codice QR per una facile scansione. - Il cliente si autentica sul telefono -- il cliente scansiona il codice QR con il proprio dispositivo personale (telefono o tablet) e completa l'autenticazione sul sito web del provider.
- Il server interroga per il token -- il server interroga periodicamente il provider per un token. Gli stati di interrogazione includono:
- Pending -- il cliente non ha ancora completato l'autenticazione.
- SlowDown -- interrogazioni troppo frequenti; il server rallenta.
- Success -- autenticazione completata; token ricevuto.
- Expired -- il codice dispositivo e scaduto prima dell'autenticazione.
- Error -- si e verificato un errore imprevisto.
- Il server recupera le informazioni utente -- in caso di successo, il server utilizza il token per recuperare il profilo del cliente dal provider, inclusi
provider_uid,email,nameeavatar_url. - L'admin approva o rifiuta -- la richiesta di accesso appare nella Pagina Richieste. Un admin o cassiere esamina e approva o rifiuta la richiesta.
- Membro creato o collegato -- se approvata, viene creato un nuovo account membro o l'identita OAuth viene collegata a un membro esistente.
- La sessione client inizia -- il client riceve la conferma e la sessione del cliente inizia.
Considerazioni sulla Sicurezza
- Le credenziali non toccano mai il PC condiviso. I clienti si autenticano solo sui propri dispositivi personali. Nessuna password o token viene inserito sulla macchina client.
- Cancello di approvazione admin. Ogni richiesta di accesso OAuth deve essere approvata da un admin o cassiere prima dell'avvio di una sessione, prevenendo accessi non autorizzati.
- Requisito di credito configurabile. Un'opzione "consenti accesso senza credito" puo essere abilitata o disabilitata, controllando se i clienti necessitano di un saldo positivo per accedere tramite OAuth.
Configurazione
I provider OAuth vengono configurati in Impostazioni > OAuth. Ogni provider richiede le proprie credenziali client (client ID e client secret) ottenute dalla console sviluppatori del provider. Abilita solo i provider che vuoi offrire ai tuoi clienti.