‫-: In questa lezione impareremo molto rapidamente
‫come testare le connessioni https sicure, con un Heroku, perché
‫in realtà ne
‫abbiamo bisogno, a un certo
‫punto, nella nostra applicazione.
‫Quindi, andiamo qui al nostro controller di autenticazione.
‫E proprio qui in alto,
‫in questa funzione di creazione del token
‫inviato, ecco il punto in cui
‫impostiamo il cookie web adiacente per proteggere, se
‫siamo attualmente in produzione.
‫Ricordati che.
‫Quindi, ricorda che abbiamo creato questa
‫funzione con risposta
‫adiacente, invia anche un
‫cookie, che contiene anche il token web adiacente.
‫E quel cookie ha un paio di opzioni.
‫Il primo, quando scade.
‫Il
‫secondo, che è accessibile solo tramite http in pratica.
‫E poi, quando siamo in
‫produzione, abbiamo detto che questo cookie può essere
‫inviato solo su una connessione sicura.
‫Quindi, fondamentalmente, su una connessione https.
‫Va bene.
‫Ora, il problema è che
‫in realtà, il fatto che siamo in
‫produzione, non significa che la connessione sia effettivamente sicura.
‫Destra?
‫Perché ovviamente non tutte le
‫applicazioni distribuite vengono impostate automaticamente su https.
‫E quindi dobbiamo cambiarlo se ce l'abbiamo qui.
‫Va bene.
‫Ora, in realtà abbiamo una proprietà sicura che
‫è su richiesta.
‫E solo quando
‫la connessione è sicura, questa richiesta dot secure è vera.
‫Va bene?
‫Ha senso, vero?
‫Ora il problema è che in realtà in
‫Heroku questo non funziona.
‫E questo perché i
‫proxy di Heroku, quindi fondamentalmente reindirizzano o modificano tutte le richieste in
‫arrivo nella nostra applicazione prima che raggiungano effettivamente l'app.
‫Va bene.
‫Quindi, per farlo funzionare anche su Heroku, dobbiamo
‫anche verificare se l'intestazione x forward proto
‫è impostata su https.
‫Va bene.
‫Quindi, sembra un po'
‫confuso, ma ancora una volta, questo è qualcosa che Heroku fa internamente.
‫Quindi, testiamo qui se req. secure è
‫true, o se req. intestazioni.
‫E l'intestazione che stiamo cercando è x forwarded proto.
‫E questa intestazione è impostata su https se siamo
‫su una connessione sicura.
‫Va bene?
‫Quindi, questo è qualcosa di molto specifico di Heroku.
‫Ed è per questo che l'ho lasciato qui per l'ultima sezione,
‫dopo che abbiamo già distribuito l'applicazione.
‫Quindi, se o req. secure è true, o
‫se questa intestazione qui è impostata su https, allora vogliamo che
‫le opzioni secure qui siano impostate su true.
‫E, quindi, possiamo effettivamente rifattorizzarlo.
‫Quindi, fondamentalmente possiamo prendere questo,
‫perché questo sarà vero.
‫E, quindi, dico che se
‫questo è vero, allora diciamo uguale vero qui.
‫Quindi, non ha senso.
‫Possiamo invece semplicemente farlo così.
‫Va bene?
‫E, in realtà, possiamo andare anche oltre.
‫E metti l'opzione sicura proprio qui.
‫Allora, perché tenerlo fuori se possiamo metterlo qui?
‫Quindi, sicuro è uguale a questo, ok?
‫E poi non abbiamo più bisogno di questo.
‫E, dal momento che stiamo effettuando
‫il refactoring, in realtà non abbiamo più bisogno di questa variabile qui.
‫Quindi mettiamolo qui, diamogli una cassaforte e
‫c'è qualcosa che non va.
‫Ok, e quindi, ora il problema
‫è che attualmente non hai accesso alla richiesta
‫in questa funzione.
‫Ok, allora dobbiamo aggiungerlo qui.
‫Richiedi e quindi ovunque abbiamo creato il token inviato, ovviamente
‫dobbiamo passare la richiesta lì.
‫Quindi, questo è qui.
‫Quindi, usa il comando D per trovare il prossimo in pratica.
‫Richiedi qui.
‫E poi finalmente anche qui.
‫Ok, quindi sembra molto più
‫carino e dovrebbe anche funzionare molto meglio di prima.
‫Tuttavia, in questo momento, questo non funzionerà ancora, perché c'è
‫solo un'altra cosa che dobbiamo fare, che
‫è fondamentalmente quella di rendere la nostra applicazione affidabile dei proxy.
‫Quindi, ancora una volta, request dot secure
‫non funziona in primo luogo perché Heroku funge da
‫proxy, che tipo di reindirizzamento e modifica delle richieste in arrivo.
‫E, quindi, dobbiamo andare all'app dot JS
‫e poi subito dopo questo qui, ora
‫ci fidiamo dei proxy.
‫E lo facciamo dicendo app dot enable trust proxy.
‫Va bene?
‫Quindi, questo è qualcosa che è costruito per
‫esprimere questo tipo di situazioni.
‫Va bene?
‫Quindi, solo se abbiamo impostato correttamente questa impostazione
‫qui, questa intestazione qui sarà impostata correttamente e saremo
‫in grado di leggerne il valore.
‫Va bene?
‫Quindi, questo è il modo in cui verifichi se una connessione è sicura o
‫meno, quando la tua applicazione è distribuita su Heroku.