Il seguente è solo a fini didattici, non è una cosa che metterei in pratica, ma mi piacerebbe solo sapere come si potrebbe fare.
Immaginate lo scenario:
un bar, o un ristorante, o un qualche altro esercizio, vuole mettere a disposizione una wifi ai clienti paganti.
L'idea potrebbe essere il mettere a disposizione una wifi aperta ma in cui tutte le connessioni passano per trasparent proxy autenticato.
Il cliente va in cassa e fa lo scontrino.
Su tale scontrino c'è un codice che è un utente e una password autogenerati al momento dell'emissione dello scontrino.
L'utente accende il proprio portatile o cellulare e si connette ad internet e il browser gli chiede l'utente e la password scritte sullo scontrino.
Appena effettuato il login (da effettuarsi diciamo entro 15 minuti magari) quell'utenza viene bloccata a nuove connessioni, e al momento della chiusura della connessione corrente (o comunque dopo un'ora) l'utente viene del tutto cancellato.
In questo modo l'utente può navigare mentre consuma.
Quanto sopra dovrebbe evitare che lo scontrino possa utilizzarsi da due pc diversi o che l'utente possa scollegarsi, uscire dal locale e, nell'arco in cui prende ancora la wifi, ricollegarsi.
Non so se è sufficiente a evitare che il cliente possa fare ponte a qualche altro vicino (anche perchè se si è connessi in wifi è difficile fare ponte, a meno che non hai due schede wifi).
Uno dei problemi che mi vengono in mente è se l'utente chiude per qualche motivo il browser o ne apre un altro. Il browser gli richiede l'autenticazione ma ormai è bloccato.
Ho configurato più di una volta dei trasparent proxy, ma mai li ho messi con autenticazione e sinceramente non saprei come si comporterebbe.
Una idea potrebbe essere quella di non bloccare subito l'utenza al login ma vincolarla al macaddress del pc, rilevato a livello di dhcp, così quando spengo il pc e perdo l'indirizzo blocco anche l'utenza.
Io credo che se squid consente, in fase di authenticazione, di richiamare un programma esterno per la validazione della password il tutto si possa fare semplicemente con un scriptino bash che fa qualche grep su log vari.
Quale pensate potrebbe essere la soluzione migliore secondo voi?
edit: il problema della comunicazione tra la cassa e il server per la generazione dell'utenza è secondario. Per ora facciamo finta che il cassiere abbia un terminale con una interfaccia per creare l'utenza e una penna per scriverla sullo scontrino a mano. Al momento mi interessa solo la gestione del motore di connessione e sicurezza.




