Flusso di implementazione di MFA con TOTP

1

Per un frontend, vorrei implementare MFA (con TOTP). Potrei essere alla ricerca di parole chiave sbagliate ma non sono riuscito a trovare il modo corretto per implementare in modo sicuro questa soluzione. Stavo cercando un flusso di diagrammi come ad esempio:

  1. Richiesta: POST a / login con credenziali in JSON, risposta 302 a / mfa
  2. Richiesta: GET / mfa, Risposta / mfa
  3. Richiesta: POST con credenziali di nuovo e codice mfa, Risposta 302 a /
  4. Richiesta: OTTENERE a /, risposta 302 a / (utente loggato)

Esiste un RFC che descrive ( link ) in dettaglio l'implementazione di tale protocollo o il suo fino all'utente per annusarlo ssl di altri siti web per decodificare come lo hanno fatto (cosa che ho fatto per github ecc.). Solo la ricerca del modo corretto di implementarlo può essere una struttura già funzionante? dovrei usare i cookies o è bene richiedere nuovamente l'utente e accedere con il codice mfr (ho notato che github in STEP 3 usa authenticity_token=<base64token>&otp=<123456> )

Grazie mille per il tuo aiuto

PS; non sono possibili soluzioni già fatte come login con google, ho bisogno di usare il db del mio utente

    
posta jthemovie 28.02.2017 - 16:39
fonte

4 risposte

1

Potresti voler controllare PrivacyIDEA e il loro prodotto e codice - hanno un'implementazione funzionante in python, e penso che potresti usare la loro API per uno o entrambi i round di autenticazione.

link

Non è privo di pochi spigoli qua e là (di certo non vuoi lasciarlo libero sul tuo DB utente senza qualche test), ma potresti fornirti un servizio che puoi usare mentre fai delle ricerche, o un implementazione concreta da cui puoi basare

    
risposta data 28.02.2017 - 17:05
fonte
0

Che ne dici di non avere una pagina separata per il codice a due fattori?

Sulla tua pagina di accesso standard, disponi di un campo nascosto e facoltativo per il codice 2FA - quando esegui il login fallo in Javascript in modo che possa controllare se l'account ha attivato 2FA e, in tal caso, rendere visibile il campo e lasciare che il l'utente riprova?

Questo evita di dover ricordare se l'utente ha effettuato il login con la password, dal momento che al secondo tentativo la tua richiesta di accesso conterrà sia la password che il codice 2FA, a quel punto potrai verificarli e concedere / negare l'accesso.

Gandi.net implementa qualcosa come questo. Quando si effettua l'accesso con 2FA abilitato, si restituisce la stessa pagina di accesso con il proprio nome utente / password già presente e un campo aggiuntivo per il codice 2FA. Possiamo dire che rimandare la password non è perfetta (anche se la superficie di attacco è IMO molto piccola), ecco perché ho proposto di farlo in Javascript, in questo modo il server non deve restituire la password, poiché semplicemente non aggiornare la pagina e conservare quella esistente.

    
risposta data 28.02.2017 - 17:10
fonte
0

Penso che qui ci sia qualcosa di sbagliato nell'autenticazione a due fattori con OTP!

Comportamento predefinito

Immagina un'applicazione web che autentica l'utente con nome utente e password. L'immagine è implementata per le tue esigenze e tu stai bene con quello. Ci sono degli standard per farlo.

Ora: OTP non cambia nulla con questo. Non cambierai cookie, sessione, JWTs. Con OTP hai solo aggiungi il secondo fattore alla password.

Fino a quando l'utente ha inserito

  • nome utente
  • Password

Questo viene inviato all'applicazione, l'applicazione lo verifica e restituisce una sessione all'utente.

Aggiungi 2 ° fattore

Quando aggiungi un secondo fattore l'utente inserisce:

  • nome utente
  • password + OTP

questo viene inviato all'applicazione e l'applicazione verifica password + OTP e, se tutto è a posto, restituisce una sessione nello stesso modo di prima. Nessun voodo coinvolto qui.

    
risposta data 13.03.2017 - 19:11
fonte
0

Per quanto riguarda i tuoi obiettivi, potresti prendere in considerazione il flusso di processo per Multi-Factor come descritto da PCI-DSS (anche se potrebbe non essere direttamente applicabile alla tua situazione ora, potrebbe eventualmente un giorno) nel seguente documento :

Verifica il capitolo: Multi-step vs. Multi-Factor a pagina 5

SUPPLEMENTO DELL'INFORMAZIONE Autenticazione a più fattori Versione: 1.0 Data: febbraio 2017 Autore: PCI Security Standards Council

link

    
risposta data 09.05.2018 - 14:59
fonte

Leggi altre domande sui tag