1
00:00:03,950 --> 00:00:06,540
Nas lições anteriores,

2
00:00:06,540 --> 00:00:10,260
vimos várias estratégias para autenticação do usuário.

3
00:00:10,260 --> 00:00:12,555
Começamos com a autenticação básica

4
00:00:12,555 --> 00:00:16,500
e, em seguida, passamos para cookies e sessões expressas

5
00:00:16,500 --> 00:00:20,805
como uma forma de autenticar e rastrear usuários.

6
00:00:20,805 --> 00:00:24,445
Nesta lição, veremos Passport,

7
00:00:24,445 --> 00:00:29,450
um módulo de nó que torna a autenticação muito fácil

8
00:00:29,450 --> 00:00:34,880
, discreta e direta de configurar em seu aplicativo.

9
00:00:34,880 --> 00:00:39,125
Passport é nada além de um middleware de autenticação que suporta

10
00:00:39,125 --> 00:00:43,330
várias estratégias que podem ser usadas para autenticação do usuário,

11
00:00:43,330 --> 00:00:47,505
incluindo uma estratégia local como usar nome de usuário e senha,

12
00:00:47,505 --> 00:00:54,530
ou até mesmo autenticação de terceiros ou usando OAuth ou OAuth 2.0,

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

14
00:00:57,165 --> 00:01:00,515
ou Google+ e assim por diante.

15
00:01:00,515 --> 00:01:03,600
Vamos olhar para alguns detalhes sobre Passport,

16
00:01:03,600 --> 00:01:06,995
a autenticação local suportada Passport.

17
00:01:06,995 --> 00:01:10,520
E no exercício que se segue,

18
00:01:10,520 --> 00:01:13,970
atualizaremos nosso aplicativo para fazer uso dos

19
00:01:13,970 --> 00:01:19,025
módulos Passport e Passport Local Node para habilitar.

20
00:01:19,025 --> 00:01:23,700
autenticação local usando nome de usuário e senha.

21
00:01:23,920 --> 00:01:27,670
Então, como eu disse um pouco antes, o

22
00:01:27,670 --> 00:01:33,185
Passport é um middleware de autenticação muito útil para aplicativos Node.js.

23
00:01:33,185 --> 00:01:36,675
Isso torna mais simples implementar a autenticação.

24
00:01:36,675 --> 00:01:39,274
Como vimos nos exercícios anteriores, a

25
00:01:39,274 --> 00:01:45,215
autenticação envolve um monte de código repetitivo e tarefas repetitivas

26
00:01:45,215 --> 00:01:48,440
manipulando erros e criando formas de verificar a

27
00:01:48,440 --> 00:01:52,580
autenticação do usuário e, em seguida, autenticar o usuário e assim por diante.

28
00:01:52,580 --> 00:01:56,090
Tudo isso é simplificado dentro do Passport usando

29
00:01:56,090 --> 00:02:00,040
várias estratégias que podem ser usadas para autenticar usuários.

30
00:02:00,040 --> 00:02:04,220
Você pode usar uma estratégia local, por exemplo, que é baseada em

31
00:02:04,220 --> 00:02:09,440
registrar usuários em seu sistema usando um nome de usuário

32
00:02:09,440 --> 00:02:14,030
e senha, e depois autenticá-los usando o nome de usuário e senha. O

33
00:02:14,030 --> 00:02:18,965
Passport também suporta autenticação baseada em OpenID

34
00:02:18,965 --> 00:02:22,805
ou autenticação baseada em OAuth ou OAuth 2.0,

35
00:02:22,805 --> 00:02:27,135
como é suportado por autenticadores de terceiros como Facebook,

36
00:02:27,135 --> 00:02:29,535
Twitter, Google+ e assim por diante.

37
00:02:29,535 --> 00:02:32,465
Também podemos usar o que é chamado como

38
00:02:32,465 --> 00:02:37,880
tokens da web JSON como outra forma de autenticação chamada autenticação baseada em tokens.

39
00:02:37,880 --> 00:02:42,485
Analisaremos a autenticação baseada em tokens na parte posterior desta lição.

40
00:02:42,485 --> 00:02:46,465
Além disso, Passport suporta sessões.

41
00:02:46,465 --> 00:02:51,785
Como vimos no exercício anterior e na lição anterior, as

42
00:02:51,785 --> 00:02:55,640
sessões expressas são uma maneira fácil de rastrear usuários no

43
00:02:55,640 --> 00:03:01,130
lado do servidor e ser capaz de atender solicitações recebidas de clientes.

44
00:03:01,130 --> 00:03:03,330
Para fazer uso do Passport, é claro,

45
00:03:03,330 --> 00:03:05,515
vamos instalar o módulo Passport.

46
00:03:05,515 --> 00:03:08,175
Nós também, no exercício que se segue,

47
00:03:08,175 --> 00:03:11,195
instalaremos o módulo Passport-Local para

48
00:03:11,195 --> 00:03:15,060
fornecer a estratégia local para autenticação do usuário.

49
00:03:15,060 --> 00:03:19,885
O uso do Passport dentro da nossa aplicação é bastante simples.

50
00:03:19,885 --> 00:03:23,500
Nas rotas em que queremos executar a autenticação,

51
00:03:23,500 --> 00:03:27,110
nós apenas especificar passaporte autenticar e, em seguida, especificar

52
00:03:27,110 --> 00:03:33,320
a estratégia de autenticação específica que queremos usar para a autenticação do usuário.

53
00:03:33,320 --> 00:03:34,810
Como exemplo aqui,

54
00:03:34,810 --> 00:03:36,590
você vê que estamos aplicando

55
00:03:36,590 --> 00:03:41,950
uma autenticação local dizendo autenticar passaporte e local.

56
00:03:41,950 --> 00:03:46,530
E assim ele usa a estratégia local para autenticar os usuários.

57
00:03:46,530 --> 00:03:49,725
Se a autenticação for bem-sucedida,

58
00:03:49,725 --> 00:03:53,870
o middleware passa para a próxima etapa,

59
00:03:53,870 --> 00:03:57,435
onde podemos processar ainda mais a solicitação de entrada.

60
00:03:57,435 --> 00:04:03,240
Assim, após a conclusão da autenticação bem-sucedida do passaporte do usuário, o

61
00:04:03,240 --> 00:04:09,300
próprio Passport adiciona uma propriedade de usuário à mensagem de solicitação.

62
00:04:09,300 --> 00:04:15,110
Assim, req.user torna-se disponível para nós com as informações do usuário lá,

63
00:04:15,110 --> 00:04:17,960
que podemos posteriormente usar dentro de

64
00:04:17,960 --> 00:04:23,850
nossa aplicação expressa para lidar com a solicitação proveniente de usuários específicos.

65
00:04:23,850 --> 00:04:30,110
Assim, isso nos ajuda facilmente a identificar qual cliente enviou a solicitação para

66
00:04:30,110 --> 00:04:32,840
nosso aplicativo e, consequentemente, atender

67
00:04:32,840 --> 00:04:37,525
a solicitação em conformidade com base na identidade do usuário.

68
00:04:37,525 --> 00:04:40,140
Juntamente com Passport, vamos instalar

69
00:04:40,140 --> 00:04:45,225
outro módulo relacionado Passport chamado Passport-Local.

70
00:04:45,225 --> 00:04:49,490
Passport-Local suporta uma estratégia chamada como

71
00:04:49,490 --> 00:04:52,190
a estratégia local para autenticar usuários

72
00:04:52,190 --> 00:04:55,135
com a combinação padrão de senha de nome de usuário.

73
00:04:55,135 --> 00:04:58,230
Então, configuramos o esquema do usuário,

74
00:04:58,230 --> 00:04:59,540
como fizemos antes,

75
00:04:59,540 --> 00:05:05,030
e então usamos o esquema ou modelo do usuário para rastrear o nome de usuário e

76
00:05:05,030 --> 00:05:11,240
senha e, em seguida, Passport-Local depende disso para verificar o nome de usuário e senha.

77
00:05:11,240 --> 00:05:12,815
Então, para instalá-lo novamente,

78
00:05:12,815 --> 00:05:13,985
sendo um módulo Node,

79
00:05:13,985 --> 00:05:19,490
nós o instalamos usando o procedimento padrão para instalar o módulo Passport-Local Node.

80
00:05:19,490 --> 00:05:23,075
Uma vez que o módulo Passport-Local Node está instalado,

81
00:05:23,075 --> 00:05:30,750
então precisamos especificar a estratégia local e como ele é realmente usado dentro Passport.

82
00:05:30,750 --> 00:05:33,465
Então, para especificar uma estratégia local, vamos dizer;

83
00:05:33,465 --> 00:05:39,290
passport.use, e assim isso nos permitirá especificar a estratégia local a ser usada.

84
00:05:39,290 --> 00:05:42,705
Então, tendo instalado o Passport-Local,

85
00:05:42,705 --> 00:05:46,900
vamos declarar uma nova estratégia local e, em seguida, fornecer

86
00:05:46,900 --> 00:05:53,725
a função de verificação correspondente que é usada para verificar o usuário.

87
00:05:53,725 --> 00:05:59,585
Se você estiver usando um MongoDB como a loja back-end, então,

88
00:05:59,585 --> 00:06:02,660
para nos ajudar com a estratégia Passport-Local,

89
00:06:02,660 --> 00:06:06,045
há um outro módulo chamado como Passport-Local Mangusto.

90
00:06:06,045 --> 00:06:10,150
O módulo Passport-Local Mangusto fornece

91
00:06:10,150 --> 00:06:15,290
um plugin Mongoose que simplificará o nome de usuário e senha login.

92
00:06:15,290 --> 00:06:19,250
Ao instalar o plugin Passport-Local Mangusto e,

93
00:06:19,250 --> 00:06:23,330
em seguida, usá-lo quando definimos o esquema do usuário e o modelo,

94
00:06:23,330 --> 00:06:29,605
e, assim, usando o suporte do módulo Passport-Local Mangusto,

95
00:06:29,605 --> 00:06:33,995
este plugin de mangusto adiciona no nome de usuário e

96
00:06:33,995 --> 00:06:40,080
uma maneira criptografada de armazenar a senha dentro do nosso usuário modelo.

97
00:06:40,080 --> 00:06:43,205
A criptografia é feita usando hash

98
00:06:43,205 --> 00:06:47,060
na senha que usamos para registrar usuários,

99
00:06:47,060 --> 00:06:50,595
e o hash em si usa um campo salt.

100
00:06:50,595 --> 00:06:54,140
Então, se você sabe alguma coisa sobre criptografia, na criptografia,

101
00:06:54,140 --> 00:06:57,620
o salt é uma string aleatória que é usada para executar

102
00:06:57,620 --> 00:07:02,135
a operação de hash na senha para armazenamento.

103
00:07:02,135 --> 00:07:07,590
Assim, a senha hash é em si mesmo armazenado em nosso banco de dados MongoDB.

104
00:07:07,590 --> 00:07:09,815
A senha real não é armazenada.

105
00:07:09,815 --> 00:07:14,420
Assim, quando o usuário tenta autenticar usando o nome de usuário e senha,

106
00:07:14,420 --> 00:07:16,820
a senha será novamente colocada em hash e, em seguida,

107
00:07:16,820 --> 00:07:20,490
comparada com as senhas com hash armazenadas em nosso banco de dados e isso é

108
00:07:20,490 --> 00:07:28,040
tudo fornecido pelo plugin Mangusto, o Passaporte-Local.

109
00:07:28,040 --> 00:07:32,690
Além disso, o Mangusto Passaporte-Local também adiciona métodos adicionais que

110
00:07:32,690 --> 00:07:37,535
são muito úteis para configurar a estratégia Passport-Local.

111
00:07:37,535 --> 00:07:43,095
Então, dentro da nossa aplicação quando definimos o esquema do usuário e o modelo,

112
00:07:43,095 --> 00:07:46,030
vamos importar o Passport-Local Mangusto e,

113
00:07:46,030 --> 00:07:49,495
em seguida, adicionar como o plugin para o esquema do usuário.

114
00:07:49,495 --> 00:07:53,000
Este módulo Passport-Local Mangusto automaticamente

115
00:07:53,000 --> 00:07:56,240
como eu disse adiciona o campo de nome de usuário e também

116
00:07:56,240 --> 00:08:03,690
um campo de armazenamento de senha com hash usando um valor salt que ele usa para fazer o hash,

117
00:08:03,690 --> 00:08:08,240
e também fornece métodos adicionais que nos

118
00:08:08,240 --> 00:08:13,010
permitem configurar nossa estratégia Passport-Local.

119
00:08:13,010 --> 00:08:16,945
Se estamos usando o módulo Passport-Local Mangusto,

120
00:08:16,945 --> 00:08:19,185
em seguida, a estratégia local,

121
00:08:19,185 --> 00:08:23,990
o plugin Passport-Local Mongoose suporta

122
00:08:23,990 --> 00:08:30,020
no modelo de usuário um método de autenticação que irá automaticamente fazer a autenticação.

123
00:08:30,020 --> 00:08:35,195
No slide anterior, eu tinha mostrado a vocês como poderíamos implementar a estratégia local.

124
00:08:35,195 --> 00:08:39,690
Agora isso é fornecido automaticamente para você pelo Passport-Local Mangusto

125
00:08:39,690 --> 00:08:44,285
simplesmente dizendo novo localstrategy user.authenticate.

126
00:08:44,285 --> 00:08:50,730
Então não precisamos escrever explicitamente o código de autenticação para a estratégia local.

127
00:08:50,730 --> 00:08:55,445
Além disso, se você estiver usando sessões que são suportadas pelo Passport

128
00:08:55,445 --> 00:08:58,555
, então, para sessões de suporte,

129
00:08:58,555 --> 00:09:02,630
as informações do usuário precisam ser serializadas para

130
00:09:02,630 --> 00:09:06,840
serem armazenadas com as informações da sessão no lado do servidor e,

131
00:09:06,840 --> 00:09:08,690
em seguida, quando a solicitação chega,

132
00:09:08,690 --> 00:09:10,140
do ID da sessão,

133
00:09:10,140 --> 00:09:13,940
as informações do usuário precisa ser desserializado para extrair

134
00:09:13,940 --> 00:09:20,160
as informações do usuário de nossas informações de sessão que são armazenadas no lado do servidor.

135
00:09:20,160 --> 00:09:22,145
Agora, esta

136
00:09:22,145 --> 00:09:27,440
operação de serialização e desserialização já é suportada pelo Passport-Local Mangusto através

137
00:09:27,440 --> 00:09:29,990
do usuário serializar e

138
00:09:29,990 --> 00:09:36,480
os métodos de usuário desserializar que estão disponíveis no plugin Passport-Local Mangusto.

139
00:09:36,480 --> 00:09:38,095
Então, tendo visto isso,

140
00:09:38,095 --> 00:09:42,680
veremos agora no exercício como é fácil configurar a

141
00:09:42,680 --> 00:09:48,120
estratégia local para autenticar usuários usando os

142
00:09:48,120 --> 00:09:54,490
módulos Passport, Passport Local e Passport-Local Mongoose Node.