﻿1
00:00:00,191 --> 00:00:02,870
‫-: In diesem Vortrag werden wir

2
00:00:02,870 --> 00:00:07,210
‫sehr schnell lernen, wie man mit einem Heroku auf sichere

3
00:00:07,210 --> 00:00:08,730
‫https-Verbindungen testet,

4
00:00:08,730 --> 00:00:11,041
‫weil wir das tatsächlich irgendwann

5
00:00:11,041 --> 00:00:12,983
‫in unserer Anwendung brauchen.

6
00:00:14,540 --> 00:00:18,560
‫Kommen wir also zu unserem Authentifizierungs-Controller.

7
00:00:18,560 --> 00:00:21,060
‫Und genau hier oben, in dieser

8
00:00:21,060 --> 00:00:24,049
‫Funktion zum Erstellen von gesendeten Token, ist

9
00:00:24,049 --> 00:00:26,840
‫hier der Ort, an dem wir das

10
00:00:26,840 --> 00:00:30,240
‫angrenzende Web-Cookie zum Sichern setzen, wenn wir gerade

11
00:00:30,240 --> 00:00:32,343
‫in der Produktion sind.

12
00:00:33,300 --> 00:00:34,661
‫Erinnere dich daran.

13
00:00:34,661 --> 00:00:37,630
‫Denken Sie also daran, dass wir diese

14
00:00:37,630 --> 00:00:39,270
‫Funktion mit angrenzender

15
00:00:39,270 --> 00:00:41,255
‫Antwort erstellt haben, sie sendet

16
00:00:41,255 --> 00:00:44,670
‫auch ein Cookie, das auch das angrenzende Web-Token enthält.

17
00:00:44,670 --> 00:00:47,090
‫Und dieses Cookie hat ein paar Optionen.

18
00:00:47,090 --> 00:00:49,260
‫Das erste, wenn es abläuft.

19
00:00:49,260 --> 00:00:50,093
‫Der

20
00:00:50,093 --> 00:00:54,490
‫zweite ist, dass er grundsätzlich nur über http erreichbar ist.

21
00:00:54,490 --> 00:00:56,570
‫Und dann, als wir in

22
00:00:56,570 --> 00:00:59,344
‫der Produktion waren, sagten wir, dass dieses Cookie nur

23
00:00:59,344 --> 00:01:01,480
‫über eine sichere Verbindung gesendet werden kann.

24
00:01:01,480 --> 00:01:04,770
‫Also im Grunde über eine https-Verbindung.

25
00:01:04,770 --> 00:01:05,810
‫Gut.

26
00:01:05,810 --> 00:01:08,117
‫Das Problem dabei ist, dass

27
00:01:08,117 --> 00:01:10,810
‫die Tatsache, dass wir in der Produktion

28
00:01:10,810 --> 00:01:14,370
‫sind, nicht bedeutet, dass die Verbindung tatsächlich sicher ist.

29
00:01:14,370 --> 00:01:15,340
‫Rechts?

30
00:01:15,340 --> 00:01:18,200
‫Natürlich werden nicht alle

31
00:01:18,200 --> 00:01:21,470
‫bereitgestellten Anwendungen automatisch auf https eingestellt.

32
00:01:21,470 --> 00:01:25,021
‫Und deshalb müssen wir dies ändern, wenn wir das hier haben.

33
00:01:25,021 --> 00:01:25,892
‫Gut.

34
00:01:25,892 --> 00:01:29,700
‫Jetzt, im Express, haben wir tatsächlich eine sichere Eigenschaft,

35
00:01:29,700 --> 00:01:31,860
‫die auf Anfrage erhältlich ist.

36
00:01:31,860 --> 00:01:33,682
‫Und nur wenn

37
00:01:33,682 --> 00:01:38,630
‫die Verbindung sicher ist, dann ist diese Anfrage nicht sicher.

38
00:01:38,630 --> 00:01:39,463
‫Okay?

39
00:01:39,463 --> 00:01:41,090
‫Macht Sinn, oder?

40
00:01:41,090 --> 00:01:43,790
‫Das Problem ist nun, dass dies in

41
00:01:43,790 --> 00:01:45,370
‫Heroku tatsächlich nicht funktioniert.

42
00:01:45,370 --> 00:01:47,107
‫Und das liegt

43
00:01:47,107 --> 00:01:52,107
‫daran, dass Heroku-Proxys alle eingehenden Anfragen in unsere Anwendung umleiten

44
00:01:52,290 --> 00:01:56,170
‫oder ändern, bevor sie die App tatsächlich erreichen.

45
00:01:56,170 --> 00:01:57,003
‫Gut.

46
00:01:57,003 --> 00:02:00,682
‫Damit dies auch auf Heroku funktioniert, müssen

47
00:02:00,682 --> 00:02:04,200
‫wir auch testen, ob der X-Forward-Proto-Header

48
00:02:04,200 --> 00:02:06,952
‫auf https gesetzt ist.

49
00:02:06,952 --> 00:02:07,785
‫Gut.

50
00:02:07,785 --> 00:02:09,204
‫Das klingt ein

51
00:02:09,204 --> 00:02:13,170
‫bisschen verwirrend, aber das ist etwas, was Heroku intern tut.

52
00:02:13,170 --> 00:02:16,549
‫Also, lassen Sie uns hier testen, ob req. secure ist

53
00:02:16,549 --> 00:02:21,549
‫wahr, oder wenn req. Überschriften.

54
00:02:22,134 --> 00:02:27,134
‫Und der gesuchte Header ist x forwarded proto.

55
00:02:29,820 --> 00:02:33,830
‫Und dieser Header wird auf https gesetzt, wenn wir

56
00:02:33,830 --> 00:02:36,210
‫eine sichere Verbindung haben.

57
00:02:36,210 --> 00:02:37,050
‫Gut?

58
00:02:37,050 --> 00:02:40,190
‫Das ist also etwas sehr Heroku-spezifisches.

59
00:02:40,190 --> 00:02:43,870
‫Und deshalb habe ich dies für den letzten Abschnitt hier belassen, nachdem

60
00:02:43,870 --> 00:02:46,113
‫wir die Anwendung bereits bereitgestellt haben.

61
00:02:46,950 --> 00:02:50,700
‫Wenn also entweder req. secure ist true, oder

62
00:02:50,700 --> 00:02:55,150
‫wenn dieser Header hier auf https gesetzt ist, dann wollen wir,

63
00:02:55,150 --> 00:02:58,660
‫dass die sicheren Optionen hier auf true gesetzt werden.

64
00:02:58,660 --> 00:03:01,213
‫Und so können wir dies tatsächlich umgestalten.

65
00:03:02,680 --> 00:03:04,500
‫Im Grunde können wir das also nehmen,

66
00:03:04,500 --> 00:03:06,180
‫denn das wird wahr sein.

67
00:03:06,180 --> 00:03:08,186
‫Also sage ich, wenn das

68
00:03:08,186 --> 00:03:10,860
‫wahr ist, dann sagen wir hier gleich wahr.

69
00:03:10,860 --> 00:03:12,041
‫Das macht also keinen Sinn.

70
00:03:12,041 --> 00:03:15,023
‫Wir können es stattdessen einfach so machen.

71
00:03:16,590 --> 00:03:18,110
‫Gut?

72
00:03:18,110 --> 00:03:20,820
‫Und tatsächlich können wir es noch weiter bringen.

73
00:03:20,820 --> 00:03:23,883
‫Und setzen Sie die sichere Option gleich hier.

74
00:03:25,350 --> 00:03:28,313
‫Also, warum haben wir es draußen, wenn wir es einfach hier stellen können?

75
00:03:29,150 --> 00:03:33,823
‫Sicher ist also gleich das, okay?

76
00:03:35,550 --> 00:03:37,723
‫Und dann brauchen wir das nicht mehr.

77
00:03:38,910 --> 00:03:41,370
‫Und da wir refaktorisieren,

78
00:03:41,370 --> 00:03:46,173
‫brauchen wir diese Variable hier eigentlich gar nicht mehr.

79
00:03:48,130 --> 00:03:50,946
‫Also, legen wir es einfach hier ab, geben ihm

80
00:03:50,946 --> 00:03:53,520
‫einen Safe, und da stimmt etwas nicht.

81
00:03:53,520 --> 00:03:55,950
‫Okay, und so, jetzt ist das Problem,

82
00:03:55,950 --> 00:03:59,190
‫dass man in dieser Funktion derzeit keinen Zugriff auf

83
00:03:59,190 --> 00:04:00,680
‫die Anfrage hat.

84
00:04:00,680 --> 00:04:03,103
‫Okay, also müssen wir es hier hinzufügen.

85
00:04:04,050 --> 00:04:09,050
‫Anfrage und wo immer wir gesendete Token erstellt haben, müssen wir

86
00:04:09,120 --> 00:04:11,693
‫die Anfrage natürlich dort weitergeben.

87
00:04:13,020 --> 00:04:14,063
‫Also, das ist hier.

88
00:04:17,000 --> 00:04:19,763
‫Verwenden Sie also Befehl D, um grundsätzlich den nächsten zu finden.

89
00:04:21,150 --> 00:04:22,353
‫Anfrage hier.

90
00:04:27,740 --> 00:04:31,193
‫Und dann endlich auch hier.

91
00:04:33,010 --> 00:04:36,352
‫Okay, das sieht viel schöner

92
00:04:36,352 --> 00:04:40,940
‫aus und sollte auch viel schöner funktionieren als zuvor.

93
00:04:40,940 --> 00:04:44,480
‫Im Moment wird dies jedoch immer noch nicht funktionieren,

94
00:04:44,480 --> 00:04:47,460
‫denn es gibt nur noch eine Sache,

95
00:04:47,460 --> 00:04:51,350
‫die wir tun müssen, nämlich, dass unsere Anwendung den Proxys vertraut.

96
00:04:51,350 --> 00:04:54,180
‫Also, Request Dot Secure

97
00:04:54,180 --> 00:04:57,550
‫funktioniert überhaupt nicht, weil Heroku als

98
00:04:57,550 --> 00:05:01,500
‫Proxy fungiert, der eingehende Anfragen umleitet und modifiziert.

99
00:05:01,500 --> 00:05:04,819
‫Also müssen wir zu app dot JS gehen

100
00:05:04,819 --> 00:05:08,010
‫und dann direkt nach diesem hier, lasst

101
00:05:08,010 --> 00:05:10,640
‫uns jetzt dem Proxy vertrauen.

102
00:05:10,640 --> 00:05:15,033
‫Und wir tun dies, indem wir sagen, dass App Dot Trust Proxy aktiviert.

103
00:05:20,680 --> 00:05:21,513
‫Okay?

104
00:05:21,513 --> 00:05:24,498
‫Dies ist also etwas, das in Express für

105
00:05:24,498 --> 00:05:26,980
‫diese Art von Situationen eingebaut ist.

106
00:05:26,980 --> 00:05:27,813
‫Gut?

107
00:05:27,813 --> 00:05:31,400
‫Und nur wenn wir diese Einstellung hier richtig

108
00:05:31,400 --> 00:05:35,210
‫eingerichtet haben, dann wird dieser Header hier richtig gesetzt

109
00:05:35,210 --> 00:05:38,483
‫und wir können seinen Wert lesen.

110
00:05:39,450 --> 00:05:40,410
‫Gut?

111
00:05:40,410 --> 00:05:44,470
‫So testen Sie also, ob eine Verbindung sicher ist oder nicht,

112
00:05:44,470 --> 00:05:47,363
‫wenn Ihre Anwendung auf Heroku bereitgestellt wird.

