Quali sono gli strumenti / framework / tecniche per l'autorizzazione di un dispositivo che accede a un'app Web?

1

Ho un'applicazione web protetta da password (ASP.NET 4.5), e un requisito che quando un utente registrato accede al sito da un dispositivo per la prima volta, dovrei autorizzare tale accesso inviando un codice di autorizzazione all'email dell'utente e convalidando che può fornire il codice corretto.

Non è obbligatorio, ma considerato piacevole se l'utente non deve autorizzare il dispositivo quando accede al sito utilizzando due diversi browser sullo stesso computer.

Una volta che il dispositivo è autorizzato, il sistema non deve richiedere all'utente un'autorizzazione fino a quando un determinato periodo non è scaduto, ad esempio un mese.

La soluzione deve anche essere tollerante nei confronti della comunità IP dinamica e non dovrebbe continuare a richiedere l'autorizzazione, solo perché l'IP visibile al mondo esterno è cambiato.

Ecco come funziona la mia soluzione attuale, ma a quanto pare ha alcuni punti deboli.

Dipendo principalmente dall'indirizzo IP dell'utente per rilevare se si tratta di un nuovo dispositivo (non ho usato la stringa User Agent, poiché sembrano cambiare quando i browser si aggiornano).

  • Quando arriva una richiesta, controllo se c'è un cookie che indica che il dispositivo è già autorizzato da questo utente, se così può procedere la richiesta.
  • Se un cookie non è presente, eseguo il check-in del db locale per verificare se esiste una autorizzazione ottenuta per questo IP dall'utente, inserendo correttamente un codice inviato via email.
  • Se viene trovato il record di autorizzazione, per ricordare l'autorizzazione per questo dispositivo (e non per richiedere di nuovo se IP cambia), creo un cookie nel browser del client, impostato per scadere in un mese, o qualsiasi tempo rimasto su quello ottenuto autorizzazione.
  • Se non viene trovato né un cookie né un'autorizzazione nel database, l'utente verrà reindirizzato a una pagina, dove potrà richiedere un nuovo codice da inviare alla sua e-mail Una volta richiesto il codice, l'utente viene inviato a una seconda pagina, dove può inserire il codice inviato a lui.
  • Se nella seconda pagina viene inserito il codice corretto, il record corrispondente viene aggiornato per riflettere l'autorizzazione e l'utente viene reindirizzato alla pagina originale a cui ha tentato di accedere.
  • Ora faremo nuovamente il primo passo, troveremo il record autorizzato nel db locale e creeremo il cookie.
  • Le altre richieste dovrebbero procedere normalmente poiché ora c'è un cookie nella richiesta.

Le mie domande sono:

  1. Qualche problema ovvio in questa soluzione, a cui sono stato cieco?
  2. Esistono strumenti / framework che potrebbero essere utili per implementare questo tipo di requisito?
  3. Qualunque best practice / pattern / anti-pattern di cui non sono a conoscenza applicabile a questo tipo di scenari?
posta BuddhiP 08.04.2016 - 18:04
fonte

1 risposta

1

NON USARE INDIRIZZI IP PER L'AUTENTICAZIONE

Una volta fuori dal tavolo, ciò che descrivi è una funzione "ricordami" per un'applicazione web. Questo è stato discusso frequentemente qui .

(e i consigli sui prodotti sono fuori tema)

    
risposta data 08.04.2016 - 18:24
fonte

Leggi altre domande sui tag