Hai visto token per macaroon ? Ho sempre voluto usarli per i processi di autorizzazione ma non ne ho avuto la possibilità, tuttavia sembrano una potenziale corrispondenza per il tuo caso d'uso.
Ecco il documento di ricerca ed ecco uno strumento demo molto semplice .
Potresti ad esempio aggiungere diversi avvertimenti come l'IP del client o altre impronte digitali simili in modo che un amaretto rubato non possa essere usato altrove. O forse puoi limitare il tempo di scadenza a 1 minuto o persino richiedere un macaroon per richiesta (cioè un messaggio di chat o qualcosa del genere forse?).
Sfortunatamente per qualche motivo non sembra esserci un'ampia adozione di questo concetto molto interessante, quindi molte cose sono vecchie e non sono sicuro di come siano mantenute le diverse librerie, quindi l'utilità potrebbe essere limitata per te, a seconda sul tuo caso.
Tuttavia la tecnica più comune che ho visto è fondamentalmente solo l'uso dei cookie (con tempi di scadenza brevi, a seconda del caso d'uso) per mantenere identificatori di sessione lato server, che è possibile utilizzare per controllare l'accesso. Assicurati di utilizzare HTTPS per inviarli.
Modifica per indirizzare il commento:
Ecco una libreria javascript per i maccheroni .
Ciò che intendevo per impronta digitale era ottenere una sorta di informazioni dall'utente (al momento dell'accesso) e aggiungendoli come un avvertimento di Amaretto . per es.
-
Aggiungi un'e-mail valida per quel "spazio dei nomi" in modo che l'utente X nel namespace N non possa semplicemente saltare nello spazio dei nomi M.
-
Crea una whitelist con l'intervallo noto di indirizzi IP per ogni client che ha l'autorizzazione ad accedere alla chat. Puoi provare a determinare l'IP tramite perdita WebRTC ma richiede un browser che supporti WebRTC e la perdita potrebbe essere risolta in seguito, a seconda del browser.
La risposta per determinare l'IP del client dipenderà dal tuo particolare caso d'uso. Esistono molte soluzioni diverse che presentano una quantità variabile di rapporto costi / benefici che solo tu puoi valutare.
Ad esempio, potresti usare un server Node, ma se non ne hai già uno, questo potrebbe essere costoso in termini di nuova infrastruttura, codice, ecc. Forse hai un server Tomcat che puoi già usare per trovare l'IP e può collegarlo, ecc. Ma hanno tutti implicazioni di sicurezza diverse e costi associati, quindi questa sarebbe una domanda molto ampia.
Modifica:
Ho letto anche alcuni commenti su come i JWT sono insicuri se li stai utilizzando per sessioni lato client. Quindi potrei aggiungere questo nel caso qualcuno lo raccomandi.
Questo articolo: JSON Web I token dovrebbero essere evitati stimolati dalla discussione di persone che lavorano nel campo, per esempio questo commento di Thomas Ptacek.
Estratto piccolo:
The issue with JWT in particular is that it doesn't bring anything to
the table, but comes with a whole lot of terrifying complexity. Worse,
you as a developer won't see that complexity: JWT looks like a simple
token with a magic cryptographically-protected bag-of-attributes
interface. The problems are all behind the scenes.