1
00:00:03,950 --> 00:00:06,540
In den vorangegangenen Lektionen

2
00:00:06,540 --> 00:00:10,260
haben wir verschiedene Strategien für die Benutzerauthentifizierung gesehen.

3
00:00:10,260 --> 00:00:12,555
Wir begannen mit der Standardauthentifizierung

4
00:00:12,555 --> 00:00:16,500
und gingen dann zu Cookies und

5
00:00:16,500 --> 00:00:20,805
Express-Sitzungen über, um Benutzer zu authentifizieren und zu verfolgen.

6
00:00:20,805 --> 00:00:24,445
In dieser Lektion werden wir uns Passport ansehen,

7
00:00:24,445 --> 00:00:29,450
ein Knotenmodul, das die Authentifizierung ganz einfach,

8
00:00:29,450 --> 00:00:34,880
unauffällig und unkompliziert in Ihrer Anwendung konfigurieren lässt.

9
00:00:34,880 --> 00:00:39,125
Passport ist nichts anderes als eine Authentifizierungs-Middleware, die

10
00:00:39,125 --> 00:00:43,330
verschiedene Strategien unterstützt, die für die Benutzerauthentifizierung verwendet werden können,

11
00:00:43,330 --> 00:00:47,505
einschließlich einer lokalen Strategie wie die Verwendung von Benutzername und Passwort,

12
00:00:47,505 --> 00:00:54,530
oder sogar Drittanbieter-Authentifizierung oder die Verwendung von OAuth oder OAuth 2.0,

13
00:00:54,530 --> 00:00:57,165
wie Facebook, Twitter,

14
00:00:57,165 --> 00:01:00,515
oder Google+ und so weiter.

15
00:01:00,515 --> 00:01:03,600
Wir werden uns einige Details über Passport ansehen,

16
00:01:03,600 --> 00:01:06,995
die lokale Authentifizierung unterstützt Passport.

17
00:01:06,995 --> 00:01:10,520
Und in der folgenden Übung

18
00:01:10,520 --> 00:01:13,970
werden wir unsere Anwendung aktualisieren, um die Verwendung von

19
00:01:13,970 --> 00:01:19,025
Passport und Passport-Local Node Module zu ermöglichen.

20
00:01:19,025 --> 00:01:23,700
lokale Authentifizierung mit Benutzername und Kennwort.

21
00:01:23,920 --> 00:01:27,670
Also, wie ich ein wenig früher sagte,

22
00:01:27,670 --> 00:01:33,185
ist Passport eine sehr nützliche Authentifizierungs-Middleware für Node.js Anwendungen.

23
00:01:33,185 --> 00:01:36,675
Es macht es einfacher, die Authentifizierung zu implementieren.

24
00:01:36,675 --> 00:01:39,274
Wie wir in den vorherigen Übungen gesehen haben,

25
00:01:39,274 --> 00:01:45,215
beinhaltet die Authentifizierung eine Menge von sich wiederholenden Code und sich wiederholenden Aufgaben, die Fehler behandeln

26
00:01:45,215 --> 00:01:48,440
und Möglichkeiten entwickeln,

27
00:01:48,440 --> 00:01:52,580
die Benutzerauthentifizierung zu überprüfen und dann den Benutzer zu authentifizieren und so weiter.

28
00:01:52,580 --> 00:01:56,090
All dies wird in Passport mit

29
00:01:56,090 --> 00:02:00,040
verschiedenen Strategien vereinfacht, die für die Authentifizierung von Benutzern verwendet werden können.

30
00:02:00,040 --> 00:02:04,220
Sie können beispielsweise eine lokale Strategie verwenden, die darauf basiert,

31
00:02:04,220 --> 00:02:09,440
Benutzer mit einem Benutzernamen und Passwort in Ihrem System zu registrieren

32
00:02:09,440 --> 00:02:14,030
und sie anschließend mit Benutzername und Passwort zu authentifizieren.

33
00:02:14,030 --> 00:02:18,965
Passport unterstützt auch OpenID-basierte Authentifizierung

34
00:02:18,965 --> 00:02:22,805
oder OAuth oder OAuth 2.0-basierte Authentifizierung,

35
00:02:22,805 --> 00:02:27,135
wie sie von Drittanbietern wie Facebook,

36
00:02:27,135 --> 00:02:29,535
Twitter, Google+ usw. unterstützt wird.

37
00:02:29,535 --> 00:02:32,465
Wir können auch das, was als

38
00:02:32,465 --> 00:02:37,880
JSON-Web-Token bezeichnet wird, als eine andere Möglichkeit der Authentifizierung namens tokenbasierte Authentifizierung verwenden.

39
00:02:37,880 --> 00:02:42,485
Im späteren Teil dieser Lektion werden wir uns die tokenbasierte Authentifizierung ansehen.

40
00:02:42,485 --> 00:02:46,465
Passport unterstützt auch Sitzungen.

41
00:02:46,465 --> 00:02:51,785
Wie wir in der vorherigen Übung und in der vorherigen Lektion gesehen haben,

42
00:02:51,785 --> 00:02:55,640
sind Express-Sitzungen eine einfache Möglichkeit, Benutzer auf

43
00:02:55,640 --> 00:03:01,130
der Serverseite zu verfolgen und eingehende Anfragen von Clients zu bearbeiten.

44
00:03:01,130 --> 00:03:03,330
Um Passport nutzen zu können,

45
00:03:03,330 --> 00:03:05,515
installieren wir natürlich das Passport-Modul.

46
00:03:05,515 --> 00:03:08,175
In der folgenden Übung

47
00:03:08,175 --> 00:03:11,195
installieren wir auch das Passport-Local-Modul, um

48
00:03:11,195 --> 00:03:15,060
die lokale Strategie für die Benutzerauthentifizierung bereitzustellen.

49
00:03:15,060 --> 00:03:19,885
Die Verwendung von Passport innerhalb unserer Anwendung ist ziemlich unkompliziert.

50
00:03:19,885 --> 00:03:23,500
Auf den Routen, auf denen wir die Authentifizierung durchführen möchten,

51
00:03:23,500 --> 00:03:27,110
geben wir einfach Passauthentifizierung an und geben dann

52
00:03:27,110 --> 00:03:33,320
die spezifische Authentifizierungsstrategie an, die wir für die Benutzerauthentifizierung verwenden möchten.

53
00:03:33,320 --> 00:03:34,810
Als Beispiel hier

54
00:03:34,810 --> 00:03:36,590
sehen Sie, dass wir

55
00:03:36,590 --> 00:03:41,950
eine lokale Authentifizierung anwenden, indem Sie sagen, dass Reisepass authentifizieren und lokal.

56
00:03:41,950 --> 00:03:46,530
Und so verwendet es die lokale Strategie für die Authentifizierung der Benutzer.

57
00:03:46,530 --> 00:03:49,725
Wenn die Authentifizierung erfolgreich ist,

58
00:03:49,725 --> 00:03:53,870
fährt die Middleware mit dem nächsten Schritt fort,

59
00:03:53,870 --> 00:03:57,435
wo wir die eingehende Anfrage weiter verarbeiten können.

60
00:03:57,435 --> 00:04:03,240
Nach Abschluss der erfolgreichen Authentifizierung des Benutzerpasses

61
00:04:03,240 --> 00:04:09,300
fügt Passport selbst der Anforderungsnachricht eine Benutzereigenschaft hinzu.

62
00:04:09,300 --> 00:04:15,110
So wird req.user für uns mit den dort enthaltenen Informationen des Nutzers zur Verfügung gestellt,

63
00:04:15,110 --> 00:04:17,960
die wir anschließend innerhalb

64
00:04:17,960 --> 00:04:23,850
unserer ausdrücklichen Anwendung verwenden können, um die Anfrage von bestimmten Nutzern zu bearbeiten.

65
00:04:23,850 --> 00:04:30,110
Dies hilft uns also leicht zu identifizieren, welcher Kunde die Anfrage an

66
00:04:30,110 --> 00:04:32,840
unsere Anwendung gesendet hat und folglich

67
00:04:32,840 --> 00:04:37,525
die Anfrage entsprechend auf der Identität des Benutzers bedient.

68
00:04:37,525 --> 00:04:40,140
Zusammen mit Passport installieren wir

69
00:04:40,140 --> 00:04:45,225
ein weiteres Passport-bezogenes Modul namens Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local unterstützt eine Strategie,

71
00:04:49,490 --> 00:04:52,190
die als lokale Strategie für die Authentifizierung von Benutzern

72
00:04:52,190 --> 00:04:55,135
mit der Standard-Benutzernamenpasswort-Kombination bezeichnet wird.

73
00:04:55,135 --> 00:04:58,230
So richten wir das Benutzerschema ein,

74
00:04:58,230 --> 00:04:59,540
wie wir es zuvor getan haben,

75
00:04:59,540 --> 00:05:05,030
und verwenden dann das Benutzerschema oder das Benutzermodell, um den Benutzernamen und das

76
00:05:05,030 --> 00:05:11,240
Passwort zu verfolgen und dann Passport-Local hängt davon ab, um den Benutzernamen und das Passwort zu überprüfen. Um

77
00:05:11,240 --> 00:05:12,815
es erneut zu installieren,

78
00:05:12,815 --> 00:05:13,985
als ein Node-Modul,

79
00:05:13,985 --> 00:05:19,490
installieren wir es mit dem Standardverfahren für die Installation des Passport-Local Node Moduls.

80
00:05:19,490 --> 00:05:23,075
Sobald das Passport-Local Node Modul installiert ist,

81
00:05:23,075 --> 00:05:30,750
müssen wir die lokale Strategie angeben und wie es tatsächlich in Passport verwendet wird.

82
00:05:30,750 --> 00:05:33,465
Also, um eine lokale Strategie zu spezifizieren, sagen wir;

83
00:05:33,465 --> 00:05:39,290
passport.use, und so wird es uns ermöglichen, die lokale Strategie zu verwenden.

84
00:05:39,290 --> 00:05:42,705
Nachdem wir also den Passport-Local installiert haben,

85
00:05:42,705 --> 00:05:46,900
werden wir eine neue lokale Strategie deklarieren und dann

86
00:05:46,900 --> 00:05:53,725
die entsprechende Verifizierungsfunktion bereitstellen, die für die Überprüfung des Benutzers verwendet wird.

87
00:05:53,725 --> 00:05:59,585
Wenn Sie eine MongoDB als Back-End-Speicher verwenden, dann,

88
00:05:59,585 --> 00:06:02,660
um uns mit Passport-Local-Strategie zu helfen,

89
00:06:02,660 --> 00:06:06,045
gibt es ein anderes Modul namens Passport-Local Mongoose.

90
00:06:06,045 --> 00:06:10,150
Das Passport-Local Mongoose Modul bietet

91
00:06:10,150 --> 00:06:15,290
ein Mongoose Plugin, das den Benutzernamen und das Passwort Login vereinfacht.

92
00:06:15,290 --> 00:06:19,250
Indem Sie das Passport-Local Mongoose Plugin installieren und

93
00:06:19,250 --> 00:06:23,330
es dann verwenden, wenn wir das Benutzerschema und das Modell definieren

94
00:06:23,330 --> 00:06:29,605
und dadurch die Unterstützung des Passport-Local Mongoose Moduls verwenden,

95
00:06:29,605 --> 00:06:33,995
fügt dieses Mungo Plugin den Benutzernamen und

96
00:06:33,995 --> 00:06:40,080
eine verschlüsselte Art der Speicherung des Passworts innerhalb unseres Benutzers -Modell.

97
00:06:40,080 --> 00:06:43,205
Die Verschlüsselung erfolgt mithilfe von Hashing für

98
00:06:43,205 --> 00:06:47,060
das Passwort, das wir für die Registrierung von Benutzern verwenden,

99
00:06:47,060 --> 00:06:50,595
und der Hash selbst verwendet ein salt-Feld.

100
00:06:50,595 --> 00:06:54,140
Wenn Sie also etwas über Kryptografie wissen,

101
00:06:54,140 --> 00:06:57,620
ist das Salz in der Kryptographie eine zufällige Zeichenfolge, die für

102
00:06:57,620 --> 00:07:02,135
die Durchführung der Hash-Operation auf dem Passwort zum Speichern verwendet wird.

103
00:07:02,135 --> 00:07:07,590
So wird das Hash-Passwort selbst tatsächlich in unserer MongoDB-Datenbank gespeichert.

104
00:07:07,590 --> 00:07:09,815
Das eigentliche Passwort wird nicht gespeichert.

105
00:07:09,815 --> 00:07:14,420
Also, wenn der Benutzer versucht, sich mit dem Benutzernamen und Passwort zu authentifizieren,

106
00:07:14,420 --> 00:07:16,820
wird das Passwort wieder gehasht und dann mit

107
00:07:16,820 --> 00:07:20,490
den in unserer Datenbank gespeicherten gehashten Passwörtern verglichen und dies

108
00:07:20,490 --> 00:07:28,040
alles wird durch das Mongoose Plugin, das Passport-Local Mongoose, bereitgestellt.

109
00:07:28,040 --> 00:07:32,690
Darüber hinaus fügt der Passport-Local Mungo auch zusätzliche Methoden hinzu, die

110
00:07:32,690 --> 00:07:37,535
sehr nützlich für die Konfiguration der Passport-Local-Strategie sind.

111
00:07:37,535 --> 00:07:43,095
Also innerhalb unserer Anwendung, wenn wir das Benutzerschema und das Modell definieren,

112
00:07:43,095 --> 00:07:46,030
werden wir den Passport-Local Mongoose importieren und dann

113
00:07:46,030 --> 00:07:49,495
als Plugin für das Benutzerschema hinzufügen.

114
00:07:49,495 --> 00:07:53,000
Dieses Passport-Local Mongoose Modul

115
00:07:53,000 --> 00:07:56,240
fügt automatisch, wie ich sagte, das Benutzernamenfeld und auch

116
00:07:56,240 --> 00:08:03,690
ein Hash-Passwort-Speicherfeld mit einem Salt-Wert hinzu, den es für das Hashing verwendet,

117
00:08:03,690 --> 00:08:08,240
und bietet auch zusätzliche Methoden, die es uns ermöglichen,

118
00:08:08,240 --> 00:08:13,010
unsere Passport-Local-Strategie zu konfigurieren.

119
00:08:13,010 --> 00:08:16,945
Wenn wir das Passport-Local Mongoose Modul verwenden,

120
00:08:16,945 --> 00:08:19,185
dann die lokale Strategie,

121
00:08:19,185 --> 00:08:23,990
das Passport-Local Mongoose Plugin unterstützt auf

122
00:08:23,990 --> 00:08:30,020
dem Benutzermodell eine Authentifizierungsmethode, die automatisch die Authentifizierung durchführt.

123
00:08:30,020 --> 00:08:35,195
Auf der vorangegangenen Folie hatte ich Ihnen gezeigt, wie wir die lokale Strategie umsetzen würden.

124
00:08:35,195 --> 00:08:39,690
Jetzt wird dies automatisch für Sie von Passport-Local Mongoose bereitgestellt,

125
00:08:39,690 --> 00:08:44,285
indem Sie einfach neue localstrategy user.authenticate sagen.

126
00:08:44,285 --> 00:08:50,730
Dann müssen wir den Authentifizierungscode für die lokale Strategie nicht explizit schreiben.

127
00:08:50,730 --> 00:08:58,555
Wenn Sie Sitzungen verwenden, die von Passport unterstützt werden,

128
00:08:58,555 --> 00:09:02,630
müssen die Benutzerinformationen für unterstützende Sitzungen serialisiert werden, um

129
00:09:02,630 --> 00:09:06,840
mit den Sitzungsinformationen auf der Serverseite und dann,

130
00:09:06,840 --> 00:09:08,690
wenn die Anforderung eingeht,

131
00:09:08,690 --> 00:09:10,140
von der Sitzungs-ID,

132
00:09:10,140 --> 00:09:13,940
die Benutzerinformationen muss deserialisiert werden, um

133
00:09:13,940 --> 00:09:20,160
die Benutzerinformationen aus unseren Sitzungsinformationen zu extrahieren, die auf der Serverseite gespeichert sind.

134
00:09:20,160 --> 00:09:22,145
Jetzt

135
00:09:22,145 --> 00:09:27,440
wird dieser Serialisierungs- und Deserialisierungsvorgang bereits von Passport-Local Mongoose durch

136
00:09:27,440 --> 00:09:29,990
den serialisieren-Benutzer und

137
00:09:29,990 --> 00:09:36,480
die deserialisieren-Benutzermethoden unterstützt, die über das Passport-Local Mongoose Plugin verfügbar sind.

138
00:09:36,480 --> 00:09:38,095
Nachdem wir dies gesehen haben,

139
00:09:38,095 --> 00:09:42,680
werden wir nun in der Übung sehen, wie einfach es ist,

140
00:09:42,680 --> 00:09:48,120
lokale Strategie für die Authentifizierung von Benutzern mit Passport,

141
00:09:48,120 --> 00:09:54,490
Passport-Local und Passport-Local Mongoose Node Module zu konfigurieren.