1
00:00:03,620 --> 00:00:09,015
Tôi chắc chắn bạn có một hoặc nhiều tài khoản truyền thông xã hội.

2
00:00:09,015 --> 00:00:13,920
Có thể là Facebook, Twitter, YouTube, Google, GitHub,

3
00:00:13,920 --> 00:00:19,760
hoặc nhiều nhà cung cấp dịch vụ khác, nơi bạn đăng ký điện thoại và tài khoản.

4
00:00:19,760 --> 00:00:22,545
Bây giờ, các nhà cung cấp dịch vụ lần lượt,

5
00:00:22,545 --> 00:00:27,480
sẵn sàng cung cấp dịch vụ xác thực thay mặt cho bạn.

6
00:00:27,480 --> 00:00:32,880
Vì vậy, ví dụ, bạn thấy sự gia tăng của một số trang web

7
00:00:32,880 --> 00:00:37,440
và ứng dụng di động nơi bạn được phép đăng nhập

8
00:00:37,440 --> 00:00:40,260
bằng tài khoản truyền thông xã hội của mình.

9
00:00:40,260 --> 00:00:42,805
Bây giờ, làm thế nào để điều này thực sự hoạt động?

10
00:00:42,805 --> 00:00:47,270
Nhiều người trong số các nhà cung cấp tài khoản truyền thông xã hội này hoạt động

11
00:00:47,270 --> 00:00:53,945
như các nhà cung cấp dịch vụ xác thực sử dụng một giao thức được gọi là OAuth.

12
00:00:53,945 --> 00:01:00,660
Chúng tôi sẽ xem xét OAuth và làm thế nào nó cho phép các nhà cung cấp xác thực bên thứ ba

13
00:01:00,660 --> 00:01:04,995
cung cấp xác thực thay mặt bạn

14
00:01:04,995 --> 00:01:14,183
và cho phép bạn đăng nhập vào các dịch vụ khác bằng tài khoản truyền thông xã hội của họ.

15
00:01:14,183 --> 00:01:18,510
Tôi chắc chắn rằng bạn có thể đã nghe nói trong việc đi qua về OAuth 1 và OAuth 2,

16
00:01:18,510 --> 00:01:21,370
và có thể đã nghe từ mọi người nói

17
00:01:21,370 --> 00:01:24,669
rằng Facebook cung cấp xác thực dựa trên OAuth 2,

18
00:01:24,669 --> 00:01:28,450
hoặc Google cung cấp xác thực dựa trên OAuth 2 và vân vân.

19
00:01:28,450 --> 00:01:29,800
Tôi chắc chắn bạn phải tự hỏi,

20
00:01:29,800 --> 00:01:35,240
chính xác những OAuth1 và OAuth 2 có nghĩa là gì?

21
00:01:35,240 --> 00:01:40,090
Bây giờ, OAuth1 và OAuth 2 là các khung ủy quyền

22
00:01:40,090 --> 00:01:42,920
dựa trên các tiêu chuẩn mở.

23
00:01:42,920 --> 00:01:46,110
Và chúng có thể được sử dụng qua internet để xác thực

24
00:01:46,110 --> 00:01:50,375
danh tính của bạn với nhiều trang web hoặc ứng dụng di động.

25
00:01:50,375 --> 00:01:52,475
Bây giờ, khi bạn sử dụng các dịch vụ này,

26
00:01:52,475 --> 00:01:56,470
bạn phụ thuộc vào một trong các tài khoản truyền thông xã hội như Facebook,

27
00:01:56,470 --> 00:01:58,525
Google, Twitter, Microsoft, Instagram,

28
00:01:58,525 --> 00:02:02,380
GitHub, DigitalOcean, và nhiều hơn nữa,

29
00:02:02,380 --> 00:02:06,915
những người cung cấp các dịch vụ xác thực này cho người khác sử dụng.

30
00:02:06,915 --> 00:02:10,465
Các nhà cung cấp dịch vụ xác thực này hứa hẹn với

31
00:02:10,465 --> 00:02:15,310
người dùng của các dịch vụ xác thực rằng họ sẽ xác thực danh tính

32
00:02:15,310 --> 00:02:18,535
của người dùng dựa trên việc họ gửi thông

33
00:02:18,535 --> 00:02:24,100
tin xác thực của họ cho các dịch vụ truyền thông xã hội.

34
00:02:24,100 --> 00:02:28,630
Bây giờ, có một dịch vụ bổ sung OpenID.

35
00:02:28,630 --> 00:02:34,220
Nhưng, tất nhiên, không liên quan đến OAuth nhưng cung cấp loại dịch vụ tương tự.

36
00:02:34,220 --> 00:02:38,005
Nhưng hầu hết các nhà cung cấp dịch vụ truyền thông xã hội tiêu chuẩn,

37
00:02:38,005 --> 00:02:39,835
như bạn sẽ thấy được liệt kê ở đây,

38
00:02:39,835 --> 00:02:44,290
cung cấp các dịch vụ dựa trên OAuth 2 trong những ngày này.

39
00:02:44,290 --> 00:02:48,760
Bây giờ, như tôi đã đề cập, OAuth1 và OAuth 2 là các giao thức xác thực,

40
00:02:48,760 --> 00:02:53,010
và OAuth 1 là giao thức đầu tiên đi vào hiện tại.

41
00:02:53,010 --> 00:02:55,165
Điều này được phát triển từ Twitter,

42
00:02:55,165 --> 00:02:58,725
Blaine Cook là người đứng sau nó,

43
00:02:58,725 --> 00:03:04,330
và điều này được ghi lại trong Internet Engineering Task Force, RFC 5849.

44
00:03:04,330 --> 00:03:08,235
Vì vậy, nếu bạn muốn đọc các chi tiết đẫm máu về cách thức các giao thức này hoạt động,

45
00:03:08,235 --> 00:03:11,350
đó là nơi để tìm ra điều đó.

46
00:03:11,350 --> 00:03:18,430
Giao thức OAuth 2 phát triển từ OAuth 1 để làm cho nó đơn giản hơn,

47
00:03:18,430 --> 00:03:23,420
và để cung cấp một cách đơn giản hơn cho việc phát triển khách hàng.

48
00:03:23,420 --> 00:03:29,050
Và điều này được ghi lại trong IETF RFC 6749 và sau đó,

49
00:03:29,050 --> 00:03:35,975
một cách sử dụng token mang khác đến trong IETF RFC 6750.

50
00:03:35,975 --> 00:03:38,155
Bây giờ, theo quan điểm của chúng

51
00:03:38,155 --> 00:03:42,926
tôi, chúng tôi không thực sự muốn đi sâu vào chi tiết về cách thức các giao thức này thực sự hoạt động.

52
00:03:42,926 --> 00:03:45,640
Thay vào đó, tất cả những gì chúng tôi quan tâm là,

53
00:03:45,640 --> 00:03:51,505
làm thế nào để chúng tôi tận dụng những điều này

54
00:03:53,460 --> 00:03:56,215
để xác thực người dùng trong ứng dụng web của chúng tôi, hoặc trong ứng dụng di động của chúng tôi, khi chúng tôi cần xác thực người dùng đến

55
00:03:56,215 --> 00:03:59,965
máy chủ Express mà chúng tôi đã xây dựng trên cho đến nay?

56
00:03:59,965 --> 00:04:04,330
Bây giờ, chúng ta sẽ tập trung chủ yếu vào OAuth 2,

57
00:04:04,330 --> 00:04:05,710
bởi vì trong bài tập,

58
00:04:05,710 --> 00:04:10,960
chúng ta sẽ xem xét việc sử dụng Facebook như một nhà cung cấp dịch vụ xác thực OAuth 2,

59
00:04:10,960 --> 00:04:13,870
và ở đây, chúng ta cần phải hiểu

60
00:04:13,870 --> 00:04:19,810
một vài thuật ngữ để xem chính xác như thế nào giao thức OAuth 2 này hoạt động.

61
00:04:19,810 --> 00:04:25,065
Ít nhất, các chi tiết xương trần về cách thức giao thức chính nó hoạt động.

62
00:04:25,065 --> 00:04:26,995
Bây giờ, trong trường hợp của OAuth 2,

63
00:04:26,995 --> 00:04:30,440
chúng ta luôn nói về một quyền sở hữu tài nguyên.

64
00:04:30,440 --> 00:04:32,200
Bây giờ trong trường hợp này,

65
00:04:32,200 --> 00:04:34,810
tài nguyên mà tôi đang đề cập đến không phải là

66
00:04:34,810 --> 00:04:37,870
tài nguyên được lưu trữ trên máy chủ Express.

67
00:04:37,870 --> 00:04:39,655
Thay vào đó, tài nguyên mà chúng tôi đang đề cập đến ở đây,

68
00:04:39,655 --> 00:04:42,055
là danh tính của người dùng.

69
00:04:42,055 --> 00:04:45,760
Bây giờ, bất kỳ máy chủ nào, như máy chủ Express mà chúng tôi đã xây dựng,

70
00:04:45,760 --> 00:04:48,310
muốn có được quyền truy cập vào tài nguyên này,

71
00:04:48,310 --> 00:04:50,000
đó là danh tính của bạn.

72
00:04:50,000 --> 00:04:51,760
Bây giờ, danh tính của anh đâu?

73
00:04:51,760 --> 00:04:54,160
Danh tính của bạn được lưu trữ trên một trong

74
00:04:54,160 --> 00:04:58,457
những nhà cung cấp dịch vụ xác thực truyền thông xã hội như Facebook và vân vân,

75
00:04:58,457 --> 00:05:03,140
bởi vì bạn đã tạo một tài khoản trên các trang mạng xã hội này.

76
00:05:03,140 --> 00:05:06,920
Vì vậy, thông tin hoặc thông tin nhận dạng của

77
00:05:06,920 --> 00:05:11,020
bạn hoặc thông tin hồ sơ của bạn được lưu trữ tại Facebook, ví dụ.

78
00:05:11,020 --> 00:05:15,550
Bây giờ, máy chủ Express của bạn muốn có được quyền truy cập vào danh tính của bạn và

79
00:05:15,550 --> 00:05:20,650
xác minh rằng nó thực sự là bạn đang cố gắng truy cập vào máy chủ Express.

80
00:05:20,650 --> 00:05:22,000
Vì vậy, trong trường hợp này,

81
00:05:22,000 --> 00:05:24,690
máy chủ Express mà chúng tôi đã phát triển,

82
00:05:24,690 --> 00:05:27,390
hoạt động như ứng dụng khách hàng.

83
00:05:27,390 --> 00:05:29,170
Vì vậy, đây là nơi ứng dụng khách hàng,

84
00:05:29,170 --> 00:05:33,265
đó là trang web hoặc ứng dụng di động muốn

85
00:05:33,265 --> 00:05:38,905
truy cập vào máy chủ tài nguyên để có được thông tin về bạn.

86
00:05:38,905 --> 00:05:41,530
Một máy chủ tài nguyên mà chúng ta đang nói về là gì?

87
00:05:41,530 --> 00:05:45,730
Đây là máy chủ xác thực OAuth của Facebook,

88
00:05:45,730 --> 00:05:49,870
cũng cung cấp thông tin hồ sơ của bạn theo yêu cầu.

89
00:05:49,870 --> 00:05:54,490
Bây giờ, tất nhiên, bạn sẽ không ngẫu nhiên tiếp tục phân phối thông tin hồ sơ của bạn.

90
00:05:54,490 --> 00:06:00,370
Thay vào đó, bạn muốn có thể xác minh rằng bạn đang cung cấp quyền truy cập vào

91
00:06:00,370 --> 00:06:08,250
thông tin hồ sơ của bạn cho một nhà cung cấp dịch vụ xác thực hoặc một máy chủ xác thực.

92
00:06:08,250 --> 00:06:12,610
Bây giờ, đây là nơi ứng dụng khách hàng của bạn hoặc máy chủ Express ở đây,

93
00:06:12,610 --> 00:06:18,535
ví dụ, sẽ đăng ký trên Facebook với một tài khoản nói rằng tôi đang điều hành một ứng dụng,

94
00:06:18,535 --> 00:06:25,780
và tôi muốn đăng ký bản thân mình như một nguồn tiềm năng có thể

95
00:06:25,780 --> 00:06:29,680
tiếp cận bạn để xác thực người dùng khi họ cung cấp

96
00:06:29,680 --> 00:06:33,859
quyền truy cập vào hồ sơ của họ được lưu trữ trên trang web của bạn.

97
00:06:33,859 --> 00:06:35,335
Vì vậy, máy chủ Express,

98
00:06:35,335 --> 00:06:37,645
trong trường hợp này hoạt động như ứng dụng khách hàng,

99
00:06:37,645 --> 00:06:45,790
sẽ đăng ký chính nó trên Facebook và có được một ClientID và một bí mật của khách hàng từ Facebook.

100
00:06:45,790 --> 00:06:48,955
Bây giờ, khi máy chủ Express đăng ký trên Facebook,

101
00:06:48,955 --> 00:06:52,240
bạn cần phải có một tài khoản trên Facebook,

102
00:06:52,240 --> 00:06:53,950
một tài khoản được xác thực trên Facebook,

103
00:06:53,950 --> 00:06:59,030
mà bạn sẽ sử dụng để thiết lập ứng dụng này trên Facebook.

104
00:06:59,030 --> 00:07:01,450
Vì vậy, một khi bạn đăng ký chính mình,

105
00:07:01,450 --> 00:07:06,680
sau đó bạn sẽ nhận được quyền truy cập vào một ClientID và một bí mật của khách hàng.

106
00:07:06,680 --> 00:07:08,650
Bây giờ, máy chủ tài nguyên,

107
00:07:08,650 --> 00:07:12,310
như tôi đã đề cập, là máy chủ lưu trữ dữ liệu được bảo vệ.

108
00:07:12,310 --> 00:07:18,665
Dữ liệu được bảo vệ có nghĩa là hồ sơ của người dùng muốn truy cập vào máy chủ Express.

109
00:07:18,665 --> 00:07:22,300
Vì vậy, máy chủ Express muốn truy cập vào máy chủ tài nguyên này,

110
00:07:22,300 --> 00:07:28,415
và giữ dữ liệu hồ sơ của người dùng muốn truy cập máy chủ Express.

111
00:07:28,415 --> 00:07:31,265
Vì vậy, bạn thấy mối quan hệ ở đây.

112
00:07:31,265 --> 00:07:33,355
Vì vậy, khi tôi nói về một ứng dụng khách hàng,

113
00:07:33,355 --> 00:07:36,535
tôi không có nghĩa là ứng dụng front-end của họ,

114
00:07:36,535 --> 00:07:40,000
nhưng máy chủ Express của họ đang cố gắng cung cấp cho bạn

115
00:07:40,000 --> 00:07:44,190
quyền truy cập vào tài nguyên mà nó có trên trang web của nó.

116
00:07:44,190 --> 00:07:45,635
Nhưng máy chủ Express,

117
00:07:45,635 --> 00:07:48,940
để cho phép bạn truy cập,

118
00:07:48,940 --> 00:07:53,200
sẽ cần truy cập vào máy chủ tài nguyên Facebook của bạn,

119
00:07:53,200 --> 00:07:58,655
sẽ xác thực bạn và cung cấp thông tin hồ sơ của bạn cho máy chủ Express.

120
00:07:58,655 --> 00:08:01,375
Vì vậy, máy chủ tài nguyên mà tôi đang nói về ở đây,

121
00:08:01,375 --> 00:08:06,190
là máy chủ xác thực OAuth 2 của Facebook

122
00:08:06,190 --> 00:08:11,681
cộng với máy chủ tài nguyên cung cấp cho bạn quyền truy cập vào thông tin hồ sơ của người dùng.

123
00:08:11,681 --> 00:08:16,180
Và máy chủ ủy quyền là máy chủ sẽ

124
00:08:16,180 --> 00:08:19,210
cho phép ai đó truy cập

125
00:08:19,210 --> 00:08:22,825
vào máy chủ tài nguyên để truy xuất thông tin hồ sơ.

126
00:08:22,825 --> 00:08:27,375
Bây giờ, người dùng là một trong đó có thông tin hồ sơ trên máy chủ tài nguyên.

127
00:08:27,375 --> 00:08:30,610
Người dùng nên cho phép máy chủ Express để đi

128
00:08:30,610 --> 00:08:34,035
đến máy chủ tài nguyên này để lấy thông tin hồ sơ.

129
00:08:34,035 --> 00:08:37,000
Nhưng nếu người dùng cần ủy quyền cho máy chủ Express,

130
00:08:37,000 --> 00:08:40,045
người dùng cần đăng nhập vào tài khoản Facebook,

131
00:08:40,045 --> 00:08:45,115
và sau đó lấy thông tin từ Facebook được gọi là mã thông báo truy cập,

132
00:08:45,115 --> 00:08:48,995
mà người dùng sau đó sẽ chuyển sang máy chủ Express.

133
00:08:48,995 --> 00:08:54,750
Bây giờ, khi mã thông báo truy cập được lấy từ Facebook thông qua giao thức OAuth 2,

134
00:08:54,750 --> 00:08:58,090
mã thông báo truy cập sẽ được phát hành trong điều khoản

135
00:08:58,090 --> 00:09:01,675
cho phép ứng dụng khách này hoặc máy chủ Express,

136
00:09:01,675 --> 00:09:04,885
đã được đăng ký trên Facebook nói rằng

137
00:09:04,885 --> 00:09:08,020
máy chủ khách này tôi sẽ cho phép

138
00:09:08,020 --> 00:09:15,265
truy cập thông tin hồ sơ của họ từ nhà cung cấp dịch vụ Facebook OAuth của họ.

139
00:09:15,265 --> 00:09:18,290
Vì vậy, một lần nữa, điều này hơi khó hiểu.

140
00:09:18,290 --> 00:09:20,940
Chúng ta sẽ thấy một sơ đồ nơi dòng

141
00:09:20,940 --> 00:09:24,360
thông tin này được giải thích rõ ràng hơn một chút cho bạn.

142
00:09:24,360 --> 00:09:32,380
Một điểm mà tôi vừa đề cập là về một mã thông báo OAuth hoặc mã thông báo truy cập.

143
00:09:32,380 --> 00:09:34,090
Mã truy cập này là gì?

144
00:09:34,090 --> 00:09:38,675
Mã thông báo truy cập là một cái gì đó mà máy chủ ủy quyền phát hành cho bạn.

145
00:09:38,675 --> 00:09:40,620
Máy chủ ủy quyền nào?

146
00:09:40,620 --> 00:09:44,100
Đây là máy chủ ủy quyền OAuth 2 của bên thứ ba,

147
00:09:44,100 --> 00:09:46,668
máy chủ Facebook, trong ví dụ này.

148
00:09:46,668 --> 00:09:51,130
Vì vậy, họ là ứng dụng máy chủ Express.

149
00:09:51,130 --> 00:09:54,485
Bây giờ, bạn, với tư cách là người dùng đầu cuối của họ,

150
00:09:54,485 --> 00:09:58,070
muốn truy cập một cái gì đó từ ứng dụng máy chủ Express.

151
00:09:58,070 --> 00:10:02,150
Ứng dụng máy chủ Express sẽ cho bạn biết rằng bạn xác thực

152
00:10:02,150 --> 00:10:06,666
chính mình từ Facebook và sau đó có được mã thông báo truy cập từ Facebook.

153
00:10:06,666 --> 00:10:09,770
Mã thông báo truy cập này được cấp cho

154
00:10:09,770 --> 00:10:16,330
người dùng front-end từ Facebook khi người dùng đăng nhập vào tài khoản Facebook của họ.

155
00:10:16,330 --> 00:10:21,155
Bây giờ mã thông báo truy cập này được phát hành dưới tên của ứng dụng khách hàng

156
00:10:21,155 --> 00:10:25,060
, máy chủ Express, đã đăng ký trên Facebook.

157
00:10:25,060 --> 00:10:30,485
Vì vậy, để người dùng truy cập Facebook để có được mã thông báo truy cập của mình,

158
00:10:30,485 --> 00:10:36,580
người dùng yêu cầu ID khách hàng của ứng dụng khách hàng hoặc ứng dụng Express.

159
00:10:36,580 --> 00:10:39,755
Vì vậy, ID khách hàng này được nhúng

160
00:10:39,755 --> 00:10:44,460
trong ứng dụng front-end rằng máy chủ Express này sẽ phục vụ lên cho bạn.

161
00:10:44,460 --> 00:10:47,915
Vì vậy, Express server đang phục vụ lên một trang web mà bạn đang truy cập,

162
00:10:47,915 --> 00:10:50,820
sau đó trang web đó sẽ chứa mã mà

163
00:10:50,820 --> 00:10:56,597
ID khách hàng của máy chủ Express đó đã được nhúng trong đó.

164
00:10:56,597 --> 00:11:00,110
Một thông tin nữa mà tôi đã đề cập là một bí mật của khách hàng.

165
00:11:00,110 --> 00:11:03,855
Bây giờ, trong dòng xác thực mà tôi sẽ nói về,

166
00:11:03,855 --> 00:11:07,640
bí mật của khách hàng sẽ không bao giờ được tiết lộ cho bất cứ ai.

167
00:11:07,640 --> 00:11:11,700
Bí mật của khách hàng sẽ chỉ ở phía máy chủ Express.

168
00:11:11,700 --> 00:11:15,335
Trở lại khi máy chủ Express cố gắng xác thực và

169
00:11:15,335 --> 00:11:20,600
có được quyền truy cập vào hồ sơ của người dùng từ Facebook,

170
00:11:20,600 --> 00:11:23,795
ứng dụng khách hàng, máy chủ Express sẽ

171
00:11:23,795 --> 00:11:27,490
gửi cả ID khách hàng và bí mật khách hàng,

172
00:11:27,490 --> 00:11:32,555
cùng với mã thông báo truy cập mà người dùng cung cấp cho nó cho Facebook.

173
00:11:32,555 --> 00:11:34,988
Và Facebook, lần lượt,

174
00:11:34,988 --> 00:11:38,945
cho phép ứng dụng khách hàng của họ truy cập

175
00:11:38,945 --> 00:11:43,935
vào máy chủ tài nguyên để có được dữ liệu hồ sơ của người dùng.

176
00:11:43,935 --> 00:11:50,390
Và một khi dữ liệu hồ sơ của người dùng thu được từ máy chủ tài nguyên Facebook,

177
00:11:50,390 --> 00:11:54,530
sau đó máy chủ Express của tôi sẽ tạo một tài khoản

178
00:11:54,530 --> 00:11:59,383
cho người dùng cụ thể này đã đăng nhập chúng bằng tài khoản Facebook của họ.

179
00:11:59,383 --> 00:12:05,995
Và sau đó, cung cấp một mã thông báo web JSON cho người dùng,

180
00:12:05,995 --> 00:12:09,190
sau đó người dùng có thể sử dụng để truy cập

181
00:12:09,190 --> 00:12:12,530
các tài nguyên được lưu trữ trên máy chủ Express.

182
00:12:12,530 --> 00:12:15,040
Vì vậy, một lần nữa, để tóm tắt điều này,

183
00:12:15,040 --> 00:12:20,387
tôi có một sơ đồ ở đây để giải thích cho bạn một chút chi tiết hơn.

184
00:12:20,387 --> 00:12:22,000
Ngoài ra,

185
00:12:22,000 --> 00:12:24,225
đó cũng là một mã thông báo làm mới.

186
00:12:24,225 --> 00:12:29,910
Khi một mã thông báo truy cập được phát hành bởi máy chủ Facebook OAuth 2,

187
00:12:29,910 --> 00:12:31,875
mã thông báo truy cập có tuổi thọ giới hạn.

188
00:12:31,875 --> 00:12:34,750
Sau đó, mã thông báo truy cập sẽ trở nên không hợp lệ.

189
00:12:34,750 --> 00:12:39,203
Vì vậy, mã thông báo truy cập phải được giữ bí mật.

190
00:12:39,203 --> 00:12:43,285
Vì vậy, tất cả các trao đổi thẻ giữa các trang web khác nhau

191
00:12:43,285 --> 00:12:48,040
sẽ được thực hiện trong một vấn đề được mã hóa bằng cách sử dụng giao thức HTTPS.

192
00:12:48,040 --> 00:12:50,980
Vì vậy, hãy chắc chắn rằng khi bạn đang gửi mã thông báo truy cập

193
00:12:50,980 --> 00:12:56,838
của bạn từ ứng dụng front-end người dùng của bạn đến máy chủ Express,

194
00:12:56,838 --> 00:13:02,146
bạn sẽ chỉ gửi mã thông báo truy cập thông qua HTTPS, chứ không phải HTTP. Điều

195
00:13:02,146 --> 00:13:04,930
này rất quan trọng bởi vì bạn không

196
00:13:04,930 --> 00:13:08,110
muốn mã thông báo truy cập của bạn được tiết lộ cho bất cứ ai bởi vì bất cứ

197
00:13:08,110 --> 00:13:10,960
ai có thể nhận được một trong các mã thông báo truy cập của bạn có thể giả vờ là

198
00:13:10,960 --> 00:13:15,130
ứng dụng khách hàng của họ và sau đó có quyền truy cập vào hồ sơ người dùng của bạn.

199
00:13:15,130 --> 00:13:16,820
Vì vậy, điều đó rất quan trọng.

200
00:13:16,820 --> 00:13:20,005
Bây giờ, kể từ khi mã thông báo truy cập có tuổi thọ giới hạn,

201
00:13:20,005 --> 00:13:22,495
cũng có một mã thông báo làm mới tương ứng,

202
00:13:22,495 --> 00:13:27,550
có thể được sử dụng để làm mới mã thông báo truy cập đã hết hạn.

203
00:13:27,550 --> 00:13:30,790
Bây giờ, trong loại dòng chảy mà chúng tôi sẽ được

204
00:13:30,790 --> 00:13:35,500
sử dụng với ứng dụng của chúng tôi trong bài tập,

205
00:13:35,500 --> 00:13:38,285
chúng tôi sẽ không thể sử dụng mã thông báo làm mới.

206
00:13:38,285 --> 00:13:41,620
Bất cứ khi nào người dùng muốn ủy quyền

207
00:13:41,620 --> 00:13:46,070
cho máy chủ Express đi và lấy thông tin hồ sơ từ Facebook,

208
00:13:46,070 --> 00:13:48,470
người dùng sẽ phải cung cấp rõ ràng

209
00:13:48,470 --> 00:13:52,736
một mã thông báo truy cập mới thu được từ Facebook.

210
00:13:52,736 --> 00:13:56,665
Một phần mà tôi vừa đề cập ngắn gọn,

211
00:13:56,665 --> 00:13:58,221
nhưng tôi đã không xây dựng,

212
00:13:58,221 --> 00:14:01,920
là làm thế nào để ứng dụng khách hàng, máy chủ Express,

213
00:14:01,920 --> 00:14:07,260
quy mô, làm thế nào để nó đăng ký chính nó tại nhà cung cấp dịch vụ OAuth 2?

214
00:14:07,260 --> 00:14:11,440
Bây giờ, đây là nơi mà nhiều nhà cung cấp dịch vụ OAuth 2

215
00:14:11,440 --> 00:14:16,705
cung cấp một cách để đăng ký một ứng dụng trên trang web của họ.

216
00:14:16,705 --> 00:14:18,050
Vì vậy, một ứng dụng khách hàng,

217
00:14:18,050 --> 00:14:20,485
các máy chủ Express trong ví dụ của chúng tôi,

218
00:14:20,485 --> 00:14:25,875
sẽ tự đăng ký như là một ứng dụng khách hàng trên nhà cung cấp dịch vụ OAuth.

219
00:14:25,875 --> 00:14:27,460
Vì vậy, như bạn sẽ thấy trong bài tập,

220
00:14:27,460 --> 00:14:31,795
bước đầu tiên mà chúng tôi sẽ làm là đăng nhập vào Facebook bằng

221
00:14:31,795 --> 00:14:37,795
tài khoản của chúng tôi và sau đó tạo một ứng dụng trên trang Facebook.

222
00:14:37,795 --> 00:14:44,020
Khi bạn làm điều đó, Facebook sẽ cấp cho bạn một ID ứng dụng khách hàng và một bí mật của khách hàng.

223
00:14:44,020 --> 00:14:47,830
Quy trình này áp dụng cho nhiều nhà cung cấp dịch vụ OAuth khác vì

224
00:14:47,830 --> 00:14:51,960
đây là dòng chảy chung mà giao thức OAuth 2 nói về.

225
00:14:51,960 --> 00:14:57,130
Vì vậy, ID ứng dụng khách hàng và bí mật của khách hàng rất hữu ích cho chúng tôi

226
00:14:57,130 --> 00:15:02,320
để có thể chứng minh danh tính của chúng tôi cho

227
00:15:02,320 --> 00:15:08,960
máy chủ OAuth khi chúng tôi đang truyền một mã thông báo truy cập mà chúng tôi có được từ người dùng.

228
00:15:08,960 --> 00:15:11,500
Bây giờ, đó cũng là một URL chuyển hướng mà bạn cần phải

229
00:15:11,500 --> 00:15:14,650
đăng ký khi bạn đang đăng ký ứng dụng khách hàng,

230
00:15:14,650 --> 00:15:18,520
và bạn sẽ thấy tôi thực hiện điều đó trong các bước mà tôi đăng ký

231
00:15:18,520 --> 00:15:23,410
ứng dụng trên trang Facebook.

232
00:15:23,410 --> 00:15:26,380
Bây giờ, để tóm tắt dòng thông tin

233
00:15:26,380 --> 00:15:29,765
mà chúng ta vừa nói ngắn gọn trong trường hợp trước đó,

234
00:15:29,765 --> 00:15:31,855
hãy để tôi bắt đầu từ thời điểm này.

235
00:15:31,855 --> 00:15:35,295
Điểm đầu tiên để xem là chủ sở hữu tài nguyên.

236
00:15:35,295 --> 00:15:39,355
Vì vậy, chủ sở hữu tài nguyên ở đây

237
00:15:39,355 --> 00:15:43,660
là người dùng sẽ sử dụng tài khoản truyền thông xã hội của mình.

238
00:15:43,660 --> 00:15:45,625
Facebook, trong ví dụ này,

239
00:15:45,625 --> 00:15:49,490
có xác thực cho người dùng.

240
00:15:49,490 --> 00:15:54,515
Vì vậy, chủ sở hữu tài nguyên là một trong đó có hồ sơ về tài nguyên.

241
00:15:54,515 --> 00:15:57,760
Và thông tin hồ sơ này cho mỗi tài khoản Facebook,

242
00:15:57,760 --> 00:16:00,535
chúng được lưu trữ trên máy chủ Facebook.

243
00:16:00,535 --> 00:16:05,067
Và vì vậy máy chủ Facebook cung cấp máy chủ tài nguyên ở đây.

244
00:16:05,067 --> 00:16:08,410
Vì vậy, đó là nhà cung cấp dịch vụ OAuth mà bạn thấy ở

245
00:16:08,410 --> 00:16:12,691
phía bên phải của bức ảnh này ở đây.

246
00:16:12,691 --> 00:16:17,320
Vì vậy, hãy tưởng tượng máy chủ Facebook ở phía bên phải, ứng dụng khách hàng

247
00:16:17,320 --> 00:16:18,928
đó, trong đó có máy chủ API còn lại, máy

248
00:16:18,928 --> 00:16:20,477
chủ Express mà chúng tôi đã thực hiện,

249
00:16:20,477 --> 00:16:22,270
là một ứng dụng khách hàng trong trường hợp này,

250
00:16:22,270 --> 00:16:24,700
và chủ sở hữu tài nguyên là người sử dụng.

251
00:16:24,700 --> 00:16:28,780
URL người dùng front-end, đó là sẽ cho

252
00:16:28,780 --> 00:16:33,510
phép bạn truy cập Facebook để xác minh rằng ủy nhiệm của người dùng.

253
00:16:33,510 --> 00:16:39,245
Vì vậy, khi bạn muốn truy cập thông tin về phía khách hàng,

254
00:16:39,245 --> 00:16:44,355
trước tiên bạn sẽ phải đi và cho

255
00:16:44,355 --> 00:16:47,730
phép ứng dụng khách này

256
00:16:47,730 --> 00:16:51,673
để có thể truy cập vào thông tin hồ sơ của bạn.

257
00:16:51,673 --> 00:16:52,855
Vì vậy, các ứng dụng khách hàng,

258
00:16:52,855 --> 00:16:55,120
nếu nó hoạt động như một ứng dụng web,

259
00:16:55,120 --> 00:17:00,095
nó sẽ cung cấp một nút thích hợp trong đó nói đăng nhập bằng cách sử dụng Facebook.

260
00:17:00,095 --> 00:17:01,740
Và vì vậy khi bạn nhấp vào nút,

261
00:17:01,740 --> 00:17:04,780
về cơ bản, bước đầu tiên được bắt đầu.

262
00:17:04,780 --> 00:17:07,375
Yêu cầu ủy quyền người dùng được khởi xướng.

263
00:17:07,375 --> 00:17:09,270
Vì vậy, ứng dụng khách hàng của bạn,

264
00:17:09,270 --> 00:17:10,910
thông qua tác nhân

265
00:17:10,910 --> 00:17:17,409
người dùng, tác nhân người dùng về cơ bản là ứng dụng khách hàng, ứng dụng front-end.

266
00:17:17,409 --> 00:17:22,725
Nó có thể là ứng dụng Angular mà chúng tôi đã phát triển hoặc ứng dụng di động đó, cho

267
00:17:22,725 --> 00:17:25,950
dù đó là Ionic hoặc cho dù đó là

268
00:17:25,950 --> 00:17:30,120
một ứng dụng NativeScript mà chúng tôi đã phát triển trong các khóa học trước đó trong

269
00:17:30,120 --> 00:17:37,807
chuyên môn hóa hoặc thậm chí là một ứng dụng bản địa như một ứng dụng iOS hoặc một ứng dụng Android.

270
00:17:37,807 --> 00:17:39,060
Tất cả những hoạt động như các đại lý người dùng.

271
00:17:39,060 --> 00:17:42,360
Vì vậy, các đại lý người dùng,

272
00:17:42,360 --> 00:17:45,420
họ sử dụng một quá trình yêu cầu ủy quyền thông qua

273
00:17:45,420 --> 00:17:48,360
các đại lý người dùng đến máy chủ ủy quyền,

274
00:17:48,360 --> 00:17:50,500
đó là máy chủ Facebook.

275
00:17:50,500 --> 00:17:52,235
Bây giờ, khi

276
00:17:55,796 --> 00:18:01,065
nó được thông qua, sau đó chủ sở hữu tài nguyên hoặc người dùng, những người đang cố gắng cung cấp quyền truy cập vào hồ sơ của mình cho ứng dụng khách hàng này,

277
00:18:01,065 --> 00:18:03,690
sẽ phải ủy quyền cho Facebook để có

278
00:18:03,690 --> 00:18:06,600
thể chia sẻ thông tin này với ứng dụng khách hàng.

279
00:18:06,600 --> 00:18:11,250
Trong cách tiếp cận cấp dòng chảy tiềm ẩn mà chúng tôi đang sử dụng trong

280
00:18:11,250 --> 00:18:16,025
ví dụ của chúng tôi ở đây và cũng trong bài tập sau,

281
00:18:16,025 --> 00:18:18,390
cách tiếp cận cấp dòng chảy tiềm ẩn là cách tiếp

282
00:18:18,390 --> 00:18:22,875
cận phù hợp nhất khi bạn đang thực hiện một ứng dụng web bằng cách sử dụng

283
00:18:22,875 --> 00:18:26,563
một framework như Angular hoặc các ứng dụng di động lai

284
00:18:26,563 --> 00:18:30,925
với Ionic hoặc một NativeScript hoặc thậm chí là một ứng dụng gốc.

285
00:18:30,925 --> 00:18:34,320
Cách tiếp cận cấp dòng chảy tiềm ẩn là cách đơn giản hơn nhiều để

286
00:18:34,320 --> 00:18:39,170
vận hành OAuth 2 cho các loại ứng dụng như vậy.

287
00:18:39,170 --> 00:18:43,930
Vì vậy, sau đó chủ sở hữu tài nguyên nhấp vào nút đăng nhập,

288
00:18:43,930 --> 00:18:49,710
sau đó máy chủ ủy quyền sẽ nhắc chủ sở hữu tài nguyên với thông tin nói rằng,

289
00:18:49,710 --> 00:18:54,330
“Ứng dụng khách hàng này muốn truy cập thông tin hồ sơ của bạn.

290
00:18:54,330 --> 00:18:55,725
Ông có cho phép nó không?”

291
00:18:55,725 --> 00:18:58,965
Và vì vậy điều này sẽ được bật lên bởi Facebook,

292
00:18:58,965 --> 00:19:01,860
và sau đó bạn sẽ nhấp vào một nút có nói, “Vâng,

293
00:19:01,860 --> 00:19:05,278
tôi cho phép ứng dụng khách hàng này để truy cập thay mặt cho tôi.”

294
00:19:05,278 --> 00:19:06,645
Vì vậy, vào thời điểm đó,

295
00:19:06,645 --> 00:19:08,680
máy chủ ủy quyền trên Facebook, máy

296
00:19:08,680 --> 00:19:11,190
chủ ủy quyền OAuth 2 trên Facebook,

297
00:19:11,190 --> 00:19:13,380
sẽ tạo ra một mã thông báo truy cập.

298
00:19:13,380 --> 00:19:15,105
Để tạo ra mã thông báo truy cập này,

299
00:19:15,105 --> 00:19:20,405
nó sẽ sử dụng ID khách hàng cho ứng dụng khách hàng này, ứng dụng

300
00:19:20,405 --> 00:19:22,535
máy chủ Express mà chúng tôi đăng ký.

301
00:19:22,535 --> 00:19:28,165
Vì vậy, ID khách hàng nên là một phần của đại lý người dùng mà người dùng này sử dụng.

302
00:19:28,165 --> 00:19:33,093
Vì vậy, ID khách hàng này sẽ được nhúng vào ứng dụng Angular,

303
00:19:33,093 --> 00:19:38,585
Ionic hoặc ứng dụng NativeScript hoặc thậm chí là một iOS hoặc một ứng dụng Android.

304
00:19:38,585 --> 00:19:40,560
Vì vậy, ID khách hàng sau đó sẽ được sử dụng bởi

305
00:19:40,560 --> 00:19:43,410
đại lý người dùng để biến máy chủ ủy quyền nói rằng,

306
00:19:43,410 --> 00:19:48,108
“Ứng dụng khách hàng này muốn truy cập vào hồ sơ của tôi,

307
00:19:48,108 --> 00:19:52,704
và tôi sẵn sàng cho phép bạn truy cập vào hồ sơ.”

308
00:19:52,704 --> 00:19:53,760
Vì vậy, tại thời điểm đó,

309
00:19:53,760 --> 00:19:59,290
máy chủ ủy quyền sẽ gửi một mã thông báo truy cập đến đại lý người dùng trong trường hợp này.

310
00:19:59,290 --> 00:20:02,670
Vì vậy, hãy nhớ rằng, mã thông báo truy cập này đi vào đại lý người dùng,

311
00:20:02,670 --> 00:20:09,180
đó là ứng dụng di động hoặc ứng dụng Angular của họ được thực hiện bởi chúng tôi.

312
00:20:09,180 --> 00:20:12,870
Sau đó, đại lý người dùng này sẽ lấy mã thông báo truy cập này và

313
00:20:12,870 --> 00:20:18,479
sau đó vượt qua mã thông báo truy cập này cho ứng dụng khách hàng đó.

314
00:20:18,479 --> 00:20:20,310
Vì vậy, OAuth để đăng nhập,

315
00:20:20,310 --> 00:20:23,305
nhưng mã thông báo truy cập sẽ được chuyển vào ứng dụng khách hàng,

316
00:20:23,305 --> 00:20:25,200
máy chủ Express trong trường hợp này,

317
00:20:25,200 --> 00:20:32,340
tại một tuyến đường cụ thể trên bộ định tuyến của người dùng,

318
00:20:32,340 --> 00:20:37,465
tuyến xác thực trên trang web ứng dụng khách hàng.

319
00:20:37,465 --> 00:20:41,000
Bây giờ, trước đây, chúng tôi đã thấy việc sử dụng xác thực địa phương,

320
00:20:41,000 --> 00:20:45,985
nơi chúng tôi đã gửi một yêu cầu để gạch chéo người dùng dấu gạch chéo đăng nhập.

321
00:20:45,985 --> 00:20:48,250
Bây giờ, để điều này làm việc trong ứng dụng của

322
00:20:48,250 --> 00:20:50,580
chúng tôi, chúng tôi sẽ thiết lập một trong những người dùng

323
00:20:50,580 --> 00:20:54,095
gạch chéo, gạch chéo Facebook, gạch chéo mã thông báo, v.v.

324
00:20:54,095 --> 00:21:02,500
Vì vậy, một URL mà trên đó chúng tôi cung cấp mã thông báo truy cập này qua máy chủ Express.

325
00:21:02,500 --> 00:21:06,280
Bây giờ, khi mã thông báo truy cập này được lấy bởi máy chủ Express,

326
00:21:06,280 --> 00:21:09,630
máy chủ Express sẽ lấy mã thông báo truy cập này,

327
00:21:09,630 --> 00:21:14,240
và sau đó cùng với ID khách hàng và bí mật khách hàng,

328
00:21:14,240 --> 00:21:20,200
nó sẽ gửi thông tin này qua máy chủ ủy quyền.

329
00:21:20,200 --> 00:21:25,140
Và máy chủ ủy quyền sau đó sẽ cho phép ứng dụng khách hàng của họ

330
00:21:25,140 --> 00:21:30,565
truy cập vào máy chủ tài nguyên để có được thông tin hồ sơ.

331
00:21:30,565 --> 00:21:35,060
Và như vậy thông tin hồ sơ sẽ được gửi trở lại trong bước số sáu,

332
00:21:35,060 --> 00:21:37,890
trở lại ứng dụng khách hàng trong trường hợp này.

333
00:21:37,890 --> 00:21:42,015
Vì vậy, khi ứng dụng khách có được thông tin hồ sơ cho người dùng,

334
00:21:42,015 --> 00:21:46,380
thì ứng dụng khách hàng sẽ tạo một tài khoản mới cho

335
00:21:46,380 --> 00:21:51,785
người dùng trên mỗi trang web nếu một tài khoản không tồn tại.

336
00:21:51,785 --> 00:21:56,090
Nếu người dùng đó đã đăng nhập trước đó bằng cách sử dụng ID Facebook của họ,

337
00:21:56,090 --> 00:22:00,045
một tài khoản sẽ tồn tại để ứng dụng khách hàng và máy chủ API Rest sẽ

338
00:22:00,045 --> 00:22:05,485
chỉ đơn giản là chéo để thấy rằng tài khoản người dùng này đã tồn tại.

339
00:22:05,485 --> 00:22:06,865
Và, tại thời điểm đó,

340
00:22:06,865 --> 00:22:12,550
người dùng được xác thực cho bên thứ ba đăng nhập chức năng

341
00:22:12,550 --> 00:22:18,321
được cung cấp bởi dịch vụ xác thực OAuth 2 của Facebook.

342
00:22:18,321 --> 00:22:23,275
Tại thời điểm đó, sau đó ứng dụng khách hàng sẽ tạo ra một JSON Web Token,

343
00:22:23,275 --> 00:22:26,010
trong ví dụ mà chúng tôi sẽ thực hiện

344
00:22:26,010 --> 00:22:33,040
và thực hiện, và sau đó chuyển JSON Web Token này trở lại tác nhân người dùng hoặc ứng dụng front-end,

345
00:22:33,040 --> 00:22:35,845
hoặc ứng dụng Angular, hoặc ứng dụng Ionic,

346
00:22:35,845 --> 00:22:38,590
hoặc ứng dụng NativeScript.

347
00:22:38,590 --> 00:22:45,160
Sau đó, JSON Web Token sẽ được người dùng sử dụng

348
00:22:45,160 --> 00:22:48,790
để xác thực bản thân bất cứ khi nào anh ta hoặc cô ấy muốn

349
00:22:48,790 --> 00:22:53,145
truy cập bất kỳ tài nguyên nào được lưu trữ trên máy chủ Express.

350
00:22:53,145 --> 00:22:55,505
Vì vậy, một khi bạn có được JSON Web Token,

351
00:22:55,505 --> 00:23:00,975
tất cả các hoạt động tiếp theo, bạn đã thấy làm thế nào để làm điều đó với JSON Web Token.

352
00:23:00,975 --> 00:23:03,565
Vì vậy, một khi bạn có được JSON Web Token,

353
00:23:03,565 --> 00:23:05,070
công việc của bạn được thực hiện,

354
00:23:05,070 --> 00:23:10,150
và sau đó bạn có thể tiến hành về phía trước với các hoạt động bình thường từ thời điểm đó trở đi.

355
00:23:10,150 --> 00:23:12,940
Bây giờ, khi Token Web JSON hết hạn,

356
00:23:12,940 --> 00:23:17,618
sau đó bạn phải trải qua toàn bộ quá trình xác thực lại chính mình và,

357
00:23:17,618 --> 00:23:22,990
sau đó, cho phép người dùng truy cập thông tin trên trang web của bạn.

358
00:23:22,990 --> 00:23:29,710
Vì vậy, với sự hiểu biết nhanh chóng này về cách hoạt động OAuth 2, một

359
00:23:29,710 --> 00:23:33,385
lần nữa, như bạn thấy, có rất nhiều chi tiết ở đây.

360
00:23:33,385 --> 00:23:38,950
Nhưng, may mắn thay, chúng tôi không phải đối phó với tất cả các chi tiết này bởi vì chúng tôi sẽ được

361
00:23:38,950 --> 00:23:46,285
sử dụng một mô-đun nút mà chăm sóc của nhiều chi tiết trên danh nghĩa của chúng tôi.

362
00:23:46,285 --> 00:23:52,195
Vì chúng tôi đã thiết lập máy chủ Express của chúng tôi để sử dụng Passport,

363
00:23:52,195 --> 00:24:00,980
bây giờ chúng tôi có thể sử dụng một mã mô-đun nút khác như mô-đun Passport-Facebook-Token.

364
00:24:00,980 --> 00:24:04,595
Mô-đun Passport-Facebook-Token về cơ bản thực hiện

365
00:24:04,595 --> 00:24:08,580
cách tiếp cận cấp tiềm ẩn mà tôi đã nói về trước đó.

366
00:24:08,580 --> 00:24:11,320
Và sau đó bạn có thể khởi tạo

367
00:24:11,320 --> 00:24:18,160
một chiến lược mới trong chiến lược Hộ chiếu của bạn, trong ứng dụng của bạn.

368
00:24:18,160 --> 00:24:22,720
Và để mô-đun Passport-Facebook-Token cho phép bạn thiết lập

369
00:24:22,720 --> 00:24:31,090
một chiến lược xác thực hộ chiếu mới để sử dụng API OAuth 2 dựa trên FaceBook.

370
00:24:31,090 --> 00:24:36,085
Và vì vậy để sử dụng mô-đun này,

371
00:24:36,085 --> 00:24:41,615
bạn cài đặt này bằng cách nói quá khứ npm cài đặt hộ chiếu - facebook-token,

372
00:24:41,615 --> 00:24:44,980
trừ trừ lưu, và sau đó một khi bạn cài đặt,

373
00:24:44,980 --> 00:24:51,010
sau đó bạn sẽ cấu hình một chiến lược Facebook trong ứng dụng của bạn, và, sau đó,

374
00:24:51,010 --> 00:24:57,810
sử dụng điều này để cấu hình chiến lược cho Hộ chiếu của bạn

375
00:24:57,810 --> 00:25:04,990
để sử dụng nếu chúng tôi đang sử dụng xác thực dựa trên OAuth 2 cho ứng dụng của chúng tôi.

376
00:25:04,990 --> 00:25:09,270
Với sự hiểu biết nhanh chóng này của OAuth 2, chúng ta

377
00:25:09,270 --> 00:25:11,770
hãy chuyển sang bài tập,

378
00:25:11,770 --> 00:25:16,630
nơi chúng tôi sẽ cấu hình máy chủ Express của chúng tôi để thực sự sử dụng

379
00:25:16,630 --> 00:25:20,920
cách tiếp cận cấp tiềm ẩn này để cho phép chúng

380
00:25:20,920 --> 00:25:25,450
tôi xác minh danh tính của chúng tôi đến máy chủ Express và,

381
00:25:25,450 --> 00:25:29,745
sau đó, truy cập vào các tài nguyên, các món ăn,

382
00:25:29,745 --> 00:25:38,180
các chương trình khuyến mãi và thông tin của các nhà lãnh đạo được lưu trữ trên máy chủ Express của chúng tôi.