Autenticazione protetta tramite JWT

1

Ho letto su JWT e su come possono fornire un'autenticazione sicura per la chiamata di percorsi API su http. L'ho ingenuamente implementato ed ecco come va:

  • un client pubblica nome utente e password per una rotta di accesso
  • il server controlla se le credenziali sono ok, crea il token e lo rimanda
  • il client mantiene il token e lo aggiunge a qualsiasi chiamata API protetta

Ora dì che posso vedere tutte le chiamate http in / out del client. Siccome la password è chiara nella prima chiamata dovrei solo vedere se la risposta sembra un JWT legittimo e sarei abbastanza sicuro che le credenziali siano corrette. Se la password è crittografata sul client, qualsiasi utente malintenzionato può decodificarlo (basta guardare il codice sorgente sul client).

Cosa mi manca qui?

    
posta vanna 11.02.2016 - 10:13
fonte

2 risposte

3

What I am missing here ?

"s".

Devi utilizzare http s , che è un URL crittografato end-to-end e non "raw".

    
risposta data 11.02.2016 - 13:20
fonte
0

Questa non è una risposta su come programmarlo da solo, quindi mi scuso se non mi risulta utile, ma una cosa che mi ha perforato ripetutamente da persone specializzate nella risoluzione di problemi come questo è Chiedi a qualcun altro di farlo . Hai ragione, l'implementazione più semplice possibile non è sicura. Tutte le cose specifiche che devi fare per renderlo sicuro sono un'intera applicazione, forse un'intera carriera, in se stesse. Se il tuo progetto è quello di creare un'applicazione web, allora sei probabilmente bravo a creare applicazioni web, e questo è quello che ti piacerebbe fare, quindi perché non lasciare che qualcuno a cui piace fare un'autenticazione sicura si prenda cura di questa parte per te, quindi puoi tornare a lavorare sulla tua logica di applicazione?

La mia comprensione è che questo è uno dei motivi principali per cui sono state inventate le JWT - per facilitare lo scaricamento dell'autenticazione a terzi. La tua app presenta il meccanismo per l'utente di inviare in modo sicuro le informazioni di autenticazione al proprio server ben protetto; il server di terze parti quindi fa tutto il lavoro e restituisce il token che il tuo sito prende per significare "questo utente è autenticato". In questo modo, non devi preoccuparti di proteggere i segreti degli utenti da minacce esterne e non devi preoccuparti (tanto) di ogni possibile errore di sicurezza nel tuo codice che potrebbe compromettere la tua stessa applicazione. La specializzazione è una delle parti più importanti di una società altamente industrializzata: non ti senti obbligato a installare il cablaggio nel tuo datacenter, o anche a possedere e mantenere i tuoi server fisici, perché sei interessato a scrivere applicazioni web . Dovresti forse considerare di adottare lo stesso approccio all'autenticazione.

EDIT: Potrei aver frainteso: se con "chiamare le rotte API" in realtà intendevi interagire con uno di questi fornitori di autenticazione di terze parti, il mio consiglio è totalmente ridondante. Anche così, non riesco a immaginare alcun provider di autenticazione (o la loro API o il modulo che forniscono per integrare il loro servizio nella tua app) inviando qualcosa in chiaro. L'idea è che loro si assumano la responsabilità dei segreti degli utenti. Il loro compito è rendere il loro servizio il più semplice e sicuro possibile per te e i tuoi utenti.

    
risposta data 12.02.2016 - 11:10
fonte

Leggi altre domande sui tag