Il mio metodo di autenticazione è sicuro?

3

Ho creato uno strumento per il web che è principalmente per uso interno, ma alcuni dei nostri clienti ne faranno uso. Quando ho creato le parti di registrazione / login ho pensato a chi lo avrebbe usato e come lo avrebbero usato.

Spesso, ci sarà un account di proprietà di un cliente e l'account avrà molti utenti, che avranno vari livelli di accesso per fare cose.

Quando un nuovo utente deve essere aggiunto a un account esistente, c'è un problema. Vedo una situazione comune in molti altri strumenti in cui un amministratore che è già autenticato (connesso) avrà accesso a una sezione "crea nuovo utente" in cui è possibile impostare un nuovo utente, scegliere una password ecc. E passare le nuove credenziali sul nuovo utente. Questo apre più problemi di quelli che tengo a menzionare, ma sono sicuro che chiunque stia leggendo questo può pensare a molti.

Ho pensato alle seguenti alternative

  • L'amministratore crea il nuovo account utente e un'email viene inviata al nuovo utente che deve quindi utilizzare un link nell'email per impostare una password prima che l'account possa essere utilizzato. Mi piace questa idea, ma un errore di battitura nell'indirizzo email potrebbe dare a qualcun altro un accesso indesiderabile.

  • L'amministratore crea una chiave temporanea a tempo limitato che può fornire a un nuovo utente. Il nuovo utente inserisce quindi i propri dettagli in un modulo di registrazione insieme all'OTK, che autentica quell'utente come membro del cliente / account desiderato.

La seconda opzione sembra molto meglio, l'unica cosa che viene trasmessa in modo non sicuro è la chiave che è monouso e limitata nel tempo, e può essere corretta dall'amministratore se necessario, ma non ho visto questo metodo in uso da nessuna parte e mi chiedo perché.

Ci sono dei difetti con questo metodo che ho trascurato?

Quali altre opzioni non ho pensato?

    
posta Darren H 05.03.2018 - 18:07
fonte

1 risposta

2

Questo potrebbe essere il seguente modo:

Invece di avere l'amministratore a creare l'account e contattare l'utente, chiedere all'utente di accedere tramite un modulo web. L'utente può impostare una password iniziale proprio lì, e dà anche il suo indirizzo e-mail.

Quindi, l'amministratore viene informato che c'è una nuova richiesta di registrazione utente che deve approvare.

L'amministratore allora deve autenticare l'utente prima di approvarlo; questo potrebbe essere fatto dal sistema verificando automaticamente il suo indirizzo e-mail (a seconda se si abbia automaticamente fiducia in tutti su un dato dominio di posta - io consiglierei contro di esso), o distribuendo prima i token di accesso una volta sola a persone specifiche, da inserire come parte del modulo di registrazione (molto più sicuro).

Quindi in pratica questa è la soluzione, solo con il contatto iniziale invertito.

Questa inversione ha un (lieve) vantaggio: se fai la verifica automaticamente via e-mail, hai risolto il problema di posta elettronica errata. Considera Alan Turing che richiede l'accesso e scrive male il suo indirizzo e-mail in modo che la richiesta di autenticazione vada invece a Alai Turing. Alai potrebbe fingere di essere Alan, ma non sarà in grado di accedere, dal momento che non conosce la password di Alan. Dovrai solo assicurarti che le password non possano essere ripristinate fino a dopo il primo accesso riuscito (fondamentalmente un account è considerato solo autenticato e attivo quando si sono verificati sia l'accesso che la verifica della posta elettronica)

Si noti che la verifica automatica della posta elettronica che ho descritto protegge solo da errori di accidentale dell'indirizzo e-mail. Se Alai si iscrive con il pieno intento di fingere di essere Alan, questo non ti proteggerà.

    
risposta data 06.03.2018 - 00:11
fonte

Leggi altre domande sui tag