‫-: In diesem Vortrag werden wir
‫sehr schnell lernen, wie man mit einem Heroku auf sichere
‫https-Verbindungen testet,
‫weil wir das tatsächlich irgendwann
‫in unserer Anwendung brauchen.
‫Kommen wir also zu unserem Authentifizierungs-Controller.
‫Und genau hier oben, in dieser
‫Funktion zum Erstellen von gesendeten Token, ist
‫hier der Ort, an dem wir das
‫angrenzende Web-Cookie zum Sichern setzen, wenn wir gerade
‫in der Produktion sind.
‫Erinnere dich daran.
‫Denken Sie also daran, dass wir diese
‫Funktion mit angrenzender
‫Antwort erstellt haben, sie sendet
‫auch ein Cookie, das auch das angrenzende Web-Token enthält.
‫Und dieses Cookie hat ein paar Optionen.
‫Das erste, wenn es abläuft.
‫Der
‫zweite ist, dass er grundsätzlich nur über http erreichbar ist.
‫Und dann, als wir in
‫der Produktion waren, sagten wir, dass dieses Cookie nur
‫über eine sichere Verbindung gesendet werden kann.
‫Also im Grunde über eine https-Verbindung.
‫Gut.
‫Das Problem dabei ist, dass
‫die Tatsache, dass wir in der Produktion
‫sind, nicht bedeutet, dass die Verbindung tatsächlich sicher ist.
‫Rechts?
‫Natürlich werden nicht alle
‫bereitgestellten Anwendungen automatisch auf https eingestellt.
‫Und deshalb müssen wir dies ändern, wenn wir das hier haben.
‫Gut.
‫Jetzt, im Express, haben wir tatsächlich eine sichere Eigenschaft,
‫die auf Anfrage erhältlich ist.
‫Und nur wenn
‫die Verbindung sicher ist, dann ist diese Anfrage nicht sicher.
‫Okay?
‫Macht Sinn, oder?
‫Das Problem ist nun, dass dies in
‫Heroku tatsächlich nicht funktioniert.
‫Und das liegt
‫daran, dass Heroku-Proxys alle eingehenden Anfragen in unsere Anwendung umleiten
‫oder ändern, bevor sie die App tatsächlich erreichen.
‫Gut.
‫Damit dies auch auf Heroku funktioniert, müssen
‫wir auch testen, ob der X-Forward-Proto-Header
‫auf https gesetzt ist.
‫Gut.
‫Das klingt ein
‫bisschen verwirrend, aber das ist etwas, was Heroku intern tut.
‫Also, lassen Sie uns hier testen, ob req. secure ist
‫wahr, oder wenn req. Überschriften.
‫Und der gesuchte Header ist x forwarded proto.
‫Und dieser Header wird auf https gesetzt, wenn wir
‫eine sichere Verbindung haben.
‫Gut?
‫Das ist also etwas sehr Heroku-spezifisches.
‫Und deshalb habe ich dies für den letzten Abschnitt hier belassen, nachdem
‫wir die Anwendung bereits bereitgestellt haben.
‫Wenn also entweder req. secure ist true, oder
‫wenn dieser Header hier auf https gesetzt ist, dann wollen wir,
‫dass die sicheren Optionen hier auf true gesetzt werden.
‫Und so können wir dies tatsächlich umgestalten.
‫Im Grunde können wir das also nehmen,
‫denn das wird wahr sein.
‫Also sage ich, wenn das
‫wahr ist, dann sagen wir hier gleich wahr.
‫Das macht also keinen Sinn.
‫Wir können es stattdessen einfach so machen.
‫Gut?
‫Und tatsächlich können wir es noch weiter bringen.
‫Und setzen Sie die sichere Option gleich hier.
‫Also, warum haben wir es draußen, wenn wir es einfach hier stellen können?
‫Sicher ist also gleich das, okay?
‫Und dann brauchen wir das nicht mehr.
‫Und da wir refaktorisieren,
‫brauchen wir diese Variable hier eigentlich gar nicht mehr.
‫Also, legen wir es einfach hier ab, geben ihm
‫einen Safe, und da stimmt etwas nicht.
‫Okay, und so, jetzt ist das Problem,
‫dass man in dieser Funktion derzeit keinen Zugriff auf
‫die Anfrage hat.
‫Okay, also müssen wir es hier hinzufügen.
‫Anfrage und wo immer wir gesendete Token erstellt haben, müssen wir
‫die Anfrage natürlich dort weitergeben.
‫Also, das ist hier.
‫Verwenden Sie also Befehl D, um grundsätzlich den nächsten zu finden.
‫Anfrage hier.
‫Und dann endlich auch hier.
‫Okay, das sieht viel schöner
‫aus und sollte auch viel schöner funktionieren als zuvor.
‫Im Moment wird dies jedoch immer noch nicht funktionieren,
‫denn es gibt nur noch eine Sache,
‫die wir tun müssen, nämlich, dass unsere Anwendung den Proxys vertraut.
‫Also, Request Dot Secure
‫funktioniert überhaupt nicht, weil Heroku als
‫Proxy fungiert, der eingehende Anfragen umleitet und modifiziert.
‫Also müssen wir zu app dot JS gehen
‫und dann direkt nach diesem hier, lasst
‫uns jetzt dem Proxy vertrauen.
‫Und wir tun dies, indem wir sagen, dass App Dot Trust Proxy aktiviert.
‫Okay?
‫Dies ist also etwas, das in Express für
‫diese Art von Situationen eingebaut ist.
‫Gut?
‫Und nur wenn wir diese Einstellung hier richtig
‫eingerichtet haben, dann wird dieser Header hier richtig gesetzt
‫und wir können seinen Wert lesen.
‫Gut?
‫So testen Sie also, ob eine Verbindung sicher ist oder nicht,
‫wenn Ihre Anwendung auf Heroku bereitgestellt wird.