1
00:00:03,620 --> 00:00:09,015
أنا متأكد أن لديك حساب واحد أو أكثر على وسائل التواصل الاجتماعي.

2
00:00:09,015 --> 00:00:13,920
سواء كان الفيسبوك، تويتر، يوتيوب، جوجل، جيثب،

3
00:00:13,920 --> 00:00:19,760
أو العديد من مقدمي الخدمات الآخرين، حيث قمت بتسجيل الهاتف والحساب.

4
00:00:19,760 --> 00:00:22,545
الآن، مقدمي الخدمات هؤلاء

5
00:00:22,545 --> 00:00:27,480
بدورهم، على استعداد لتقديم خدمات المصادقة نيابة عنك.

6
00:00:27,480 --> 00:00:32,880
لذلك، على سبيل المثال، ترى انتشار عدد من مواقع الويب

7
00:00:32,880 --> 00:00:37,440
وتطبيقات الجوال حيث يسمح لك بتسجيل الدخول

8
00:00:37,440 --> 00:00:40,260
باستخدام حسابات وسائل التواصل الاجتماعي الخاصة بك.

9
00:00:40,260 --> 00:00:42,805
الآن، كيف يعمل هذا في الواقع؟

10
00:00:42,805 --> 00:00:47,270
يعمل العديد من موفري حسابات وسائل التواصل الاجتماعي هؤلاء

11
00:00:47,270 --> 00:00:53,945
كموفري خدمة مصادقة باستخدام بروتوكول يسمى OAuth.

12
00:00:53,945 --> 00:01:00,660
سنلقي نظرة على OAuth وكيفية تمكين موفري المصادقة التابعين

13
00:01:00,660 --> 00:01:04,995
لجهات خارجية هؤلاء من تقديم المصادقة نيابة عنك،

14
00:01:04,995 --> 00:01:14,183
والسماح لك بتسجيل الدخول إلى خدمات أخرى باستخدام حسابات وسائل التواصل الاجتماعي الخاصة بهم.

15
00:01:14,183 --> 00:01:18,510
أنا متأكد من أنك قد سمعت في تمرير OAuth 1 و OAuth 2،

16
00:01:18,510 --> 00:01:21,370
وربما سمعت من أشخاص يقولون

17
00:01:21,370 --> 00:01:24,669
أن Facebook يوفر مصادقة تستند إلى OAuth 2،

18
00:01:24,669 --> 00:01:28,450
أو توفر Google مصادقة تستند إلى OAuth 2 وما إلى ذلك.

19
00:01:28,450 --> 00:01:29,800
أنا متأكد من أنك يجب أن تتساءل،

20
00:01:29,800 --> 00:01:35,240
ما هي بالضبط هذه OAuth1 و OAuth 2 المقصود أن تكون؟

21
00:01:35,240 --> 00:01:40,090
الآن، OAuth1 و OAuth 2

22
00:01:40,090 --> 00:01:42,920
هما أطر تفويض تستند إلى معايير مفتوحة.

23
00:01:42,920 --> 00:01:46,110
ويمكن استخدامها عبر الإنترنت لمصادقة

24
00:01:46,110 --> 00:01:50,375
هويتك للعديد من مواقع الويب أو تطبيقات الجوال.

25
00:01:50,375 --> 00:01:52,475
الآن، عند استخدامك لهذه الخدمات،

26
00:01:52,475 --> 00:01:56,470
فإنك تعتمد على أحد حسابات وسائل التواصل الاجتماعي مثل فيسبوك،

27
00:01:56,470 --> 00:01:58,525
وجوجل، وتويتر، ومايكروسوفت، وإنستغرام

28
00:01:58,525 --> 00:02:02,380
، وجيثب، وديجيتالوسين، وغيرها الكثير،

29
00:02:02,380 --> 00:02:06,915
الذين يقدمون خدمات المصادقة هذه للآخرين للاستفادة منها.

30
00:02:06,915 --> 00:02:10,465
يعد

31
00:02:10,465 --> 00:02:15,310
موفرو خدمة المصادقة هؤلاء لمستخدمي خدمة المصادقة هذه بأنهم سيصادقون هوية

32
00:02:15,310 --> 00:02:18,535
المستخدم بناءً على تقديمهم

33
00:02:18,535 --> 00:02:24,100
لبيانات اعتمادهم لخدمات وسائل التواصل الاجتماعي هذه.

34
00:02:24,100 --> 00:02:28,630
الآن، هناك خدمة تكميلية أوبينيد.

35
00:02:28,630 --> 00:02:34,220
ولكن، بالطبع، لا علاقة لـ OAuth ولكن يوفر نوعًا مشابهًا من الخدمة.

36
00:02:34,220 --> 00:02:38,005
ولكن معظم موفري خدمات وسائل التواصل الاجتماعي القياسيين،

37
00:02:38,005 --> 00:02:39,835
كما سترون مذكورين هنا،

38
00:02:39,835 --> 00:02:44,290
يقدمون خدمات تستند إلى OAuth 2 هذه الأيام.

39
00:02:44,290 --> 00:02:48,760
الآن، كما ذكرت، فإن OAuth1 و OAuth 2 هما بروتوكولات مصادقة،

40
00:02:48,760 --> 00:02:53,010
وكان OAuth 1 البروتوكول الأول الذي دخل حيز الوجود.

41
00:02:53,010 --> 00:02:55,165
وقد تطور هذا من تويتر،

42
00:02:55,165 --> 00:02:58,725
بلين كوك

43
00:02:58,725 --> 00:03:04,330
هو الشخص وراء ذلك، وهذا موثق في فرقة العمل هندسة الإنترنت، RFC 5849.

44
00:03:04,330 --> 00:03:08,235
لذا، إذا كنت تريد قراءة التفاصيل الدموية لكيفية عمل هذه البروتوكولات،

45
00:03:08,235 --> 00:03:11,350
فهذا هو المكان المناسب للعثور على ذلك.

46
00:03:11,350 --> 00:03:18,430
تطور بروتوكول OAuth 2 من OAuth 1 لجعله أكثر بساطة،

47
00:03:18,430 --> 00:03:23,420
ولتوفير طريقة أبسط لتطوير العميل.

48
00:03:23,420 --> 00:03:29,050
وهذا موثق في IETF RFC 6749 وبعد ذلك،

49
00:03:29,050 --> 00:03:35,975
جاء استخدام رمزية حامل آخر في IETF RFC 6750.

50
00:03:35,975 --> 00:03:38,155
الآن، من وجهة نظرنا،

51
00:03:38,155 --> 00:03:42,926
نحن لا نريد حقا الخوض في تفاصيل كيفية عمل هذه البروتوكولات في الواقع.

52
00:03:42,926 --> 00:03:45,640
بدلا من ذلك، كل ما يهمنا في ذلك هو،

53
00:03:45,640 --> 00:03:51,505
كيف يمكننا الاستفادة من هذه لمصادقة المستخدم داخل تطبيق الويب الخاص بنا،

54
00:03:51,505 --> 00:03:53,460
أو داخل تطبيقنا للهاتف المحمول،

55
00:03:53,460 --> 00:03:56,215
عندما نحتاج إلى مصادقة المستخدم

56
00:03:56,215 --> 00:03:59,965
على خادم Express الذي كنا نبني عليه حتى الآن؟

57
00:03:59,965 --> 00:04:04,330
الآن، سنركز في المقام الأول على OAuth 2،

58
00:04:04,330 --> 00:04:05,710
لأنه في التمرين،

59
00:04:05,710 --> 00:04:10,960
سننظر في استخدام Facebook كمزود خدمة مصادقة OAuth 2

60
00:04:10,960 --> 00:04:13,870
، وهنا، نحتاج إلى فهم

61
00:04:13,870 --> 00:04:19,810
بعض المصطلحات لمعرفة كيفية عمل بروتوكول OAuth 2 بالضبط.

62
00:04:19,810 --> 00:04:25,065
على الأقل، تفاصيل العظم العاري لكيفية عمل البروتوكول نفسه.

63
00:04:25,065 --> 00:04:26,995
الآن، في حالة OAuth 2،

64
00:04:26,995 --> 00:04:30,440
نتحدث دائمًا عن ملكية المورد.

65
00:04:30,440 --> 00:04:32,200
الآن في هذه الحالة،

66
00:04:32,200 --> 00:04:34,810
المورد الذي أشير إليه ليس

67
00:04:34,810 --> 00:04:37,870
المورد الذي يتم تخزينه على خادم Express.

68
00:04:37,870 --> 00:04:39,655
بدلاً من ذلك، المورد الذي نشير إليه هنا،

69
00:04:39,655 --> 00:04:42,055
هو هوية المستخدم.

70
00:04:42,055 --> 00:04:45,760
الآن، أي خادم، مثل خادم Express الذي كنا نبني،

71
00:04:45,760 --> 00:04:48,310
يريد الوصول إلى هذا المورد،

72
00:04:48,310 --> 00:04:50,000
وهذا هو هويتك.

73
00:04:50,000 --> 00:04:51,760
الآن، أين هويتك؟

74
00:04:51,760 --> 00:04:54,160
يتم تخزين هويتك على أحد

75
00:04:54,160 --> 00:04:58,457
مزودي خدمات مصادقة وسائل التواصل الاجتماعي مثل Facebook وما إلى ذلك،

76
00:04:58,457 --> 00:05:03,140
لأنك قمت بالفعل بإنشاء حساب على مواقع التواصل الاجتماعي هذه.

77
00:05:03,140 --> 00:05:06,920
لذلك،

78
00:05:06,920 --> 00:05:11,020
يتم تخزين معلوماتك أو معلومات هويتك أو معلومات ملفك الشخصي في Facebook، على سبيل المثال.

79
00:05:11,020 --> 00:05:15,550
الآن، يريد خادم Express الوصول إلى هويتك

80
00:05:15,550 --> 00:05:20,650
والتحقق من أنك تحاول الوصول إلى خادم Express.

81
00:05:20,650 --> 00:05:22,000
لذلك، في هذه الحالة، يعمل

82
00:05:22,000 --> 00:05:24,690
خادم Express الذي قمنا بتطويره،

83
00:05:24,690 --> 00:05:27,390
بمثابة تطبيق العميل.

84
00:05:27,390 --> 00:05:29,170
لذلك، هذا هو المكان الذي تطبيق العميل،

85
00:05:29,170 --> 00:05:33,265
وهو موقع الويب أو التطبيق المحمول الذي يريد

86
00:05:33,265 --> 00:05:38,905
الوصول إلى خادم الموارد من أجل الحصول على المعلومات عنك.

87
00:05:38,905 --> 00:05:41,530
ما هو خادم الموارد الذي نتحدث عنه؟

88
00:05:41,530 --> 00:05:45,730
هذا هو خادم مصادقة Facebook OAuth،

89
00:05:45,730 --> 00:05:49,870
والذي يوفر أيضًا معلومات ملفك الشخصي عند الطلب.

90
00:05:49,870 --> 00:05:54,490
الآن، بالطبع، لن تستمر في توزيع معلومات ملفك الشخصي بشكل عشوائي.

91
00:05:54,490 --> 00:06:00,370
بدلاً من ذلك، تريد أن تكون قادراً على التحقق من توفير الوصول إلى

92
00:06:00,370 --> 00:06:08,250
معلومات ملف التعريف الخاص بك إلى موفر خدمة مصادق عليه أو ملقم مصادق عليه.

93
00:06:08,250 --> 00:06:12,610
الآن، هذا هو المكان الذي

94
00:06:12,610 --> 00:06:18,535
يقوم فيه تطبيق العميل الخاص بك أو خادم Express هنا، على سبيل المثال، بالتسجيل في Facebook بحساب يقول

95
00:06:18,535 --> 00:06:25,780
أنني أقوم بتشغيل تطبيق، وأريد تسجيل نفسي كمصدر محتمل يمكنه

96
00:06:25,780 --> 00:06:29,680
الاقتراب منك لمصادقة المستخدمين عندما يوفرون

97
00:06:29,680 --> 00:06:33,859
الوصول إلى ملفك الشخصي الذي يتم تخزينه على موقع الويب الخاص بك.

98
00:06:33,859 --> 00:06:35,335
لذلك، فإن خادم إكسبريس،

99
00:06:35,335 --> 00:06:37,645
في هذه الحالة بمثابة تطبيق العميل،

100
00:06:37,645 --> 00:06:45,790
سيتم تسجيل نفسه على الفيسبوك والحصول على كلينتيد وسر العميل من الفيسبوك.

101
00:06:45,790 --> 00:06:48,955
الآن، عندما يسجل خادم Express على Facebook،

102
00:06:48,955 --> 00:06:52,240
يجب أن يكون لديك حساب على Facebook،

103
00:06:52,240 --> 00:06:53,950
وهو حساب مصدق على Facebook،

104
00:06:53,950 --> 00:06:59,030
والذي ستستخدمه لإعداد هذا التطبيق على Facebook.

105
00:06:59,030 --> 00:07:01,450
لذلك، بمجرد تسجيل نفسك،

106
00:07:01,450 --> 00:07:06,680
ثم سوف تحصل على الوصول إلى كلينتيد وسر العميل.

107
00:07:06,680 --> 00:07:08,650
الآن، خادم المورد،

108
00:07:08,650 --> 00:07:12,310
كما ذكرت، هو الخادم الذي يستضيف البيانات المحمية.

109
00:07:12,310 --> 00:07:18,665
بيانات محمية تعني ملف تعريف المستخدم الذي يريد الوصول إلى خادم Express.

110
00:07:18,665 --> 00:07:22,300
لذلك، يريد خادم Express الوصول إلى خادم المورد هذا،

111
00:07:22,300 --> 00:07:28,415
والحصول على بيانات ملف التعريف للمستخدم الذي يريد الوصول إلى خادم Express.

112
00:07:28,415 --> 00:07:31,265
لذا، تَرى العلاقةَ هنا.

113
00:07:31,265 --> 00:07:33,355
لذلك، عندما أتحدث عن تطبيق عميل،

114
00:07:33,355 --> 00:07:36,535
لا أقصد تطبيقهم الأمامي،

115
00:07:36,535 --> 00:07:40,000
ولكن خادم Express الخاص بهم يحاول توفير

116
00:07:40,000 --> 00:07:44,190
الوصول إلى الموارد التي لديها على موقعه.

117
00:07:44,190 --> 00:07:45,635
لكن خادم Express،

118
00:07:45,635 --> 00:07:48,940
من أجل تمكينك من الوصول،

119
00:07:48,940 --> 00:07:53,200
سيحتاج إلى الوصول إلى خادم موارد Facebook الخاص بك والذي

120
00:07:53,200 --> 00:07:58,655
سيصادق عليك ويقدم معلومات ملفك الشخصي إلى خادم Express.

121
00:07:58,655 --> 00:08:01,375
لذا، فإن خادم الموارد الذي أتحدث عنه هنا،

122
00:08:01,375 --> 00:08:06,190
هو خادم مصادقة OAuth 2 في Facebook

123
00:08:06,190 --> 00:08:11,681
بالإضافة إلى خادم الموارد الذي يمنحك الوصول إلى معلومات الملف الشخصي للمستخدم.

124
00:08:11,681 --> 00:08:16,180
وخادم التفويض هو الخادم الذي

125
00:08:16,180 --> 00:08:19,210
سيأذن لشخص ما بالوصول

126
00:08:19,210 --> 00:08:22,825
إلى خادم المورد من أجل استرداد معلومات ملف التعريف.

127
00:08:22,825 --> 00:08:27,375
الآن، المستخدم هو الذي يحتوي على معلومات ملف التعريف على خادم المورد.

128
00:08:27,375 --> 00:08:30,610
يجب على المستخدم تخويل ملقم Express للانتقال

129
00:08:30,610 --> 00:08:34,035
إلى ملقم المورد هذا لجلب معلومات ملف التعريف.

130
00:08:34,035 --> 00:08:37,000
ولكن إذا كان المستخدم يحتاج إلى تفويض خادم Express،

131
00:08:37,000 --> 00:08:40,045
يحتاج المستخدم إلى تسجيل الدخول إلى حساب Facebook،

132
00:08:40,045 --> 00:08:45,115
ومن ثم الحصول على معلومات من Facebook تسمى كرمز وصول،

133
00:08:45,115 --> 00:08:48,995
والذي سيقوم المستخدم بعد ذلك بتمريره إلى خادم Express.

134
00:08:48,995 --> 00:08:54,750
الآن، عندما يتم الحصول على رمز الوصول من Facebook من خلال بروتوكول OAuth 2،

135
00:08:54,750 --> 00:08:58,090
سيتم إصدار رمز الوصول

136
00:08:58,090 --> 00:09:01,675
من حيث السماح لهذا التطبيق العميل أو خادم Express،

137
00:09:01,675 --> 00:09:04,885
الذي تم تسجيله بالفعل في Facebook قائلا إن

138
00:09:04,885 --> 00:09:08,020
خادم العميل هذا سوف يأذن

139
00:09:08,020 --> 00:09:15,265
بالوصول إلى معلومات الملف الشخصي الخاصة بهم من موفر خدمة OAuth على Facebook.

140
00:09:15,265 --> 00:09:18,290
لذا، مرة أخرى، هذا مربك بعض الشيء.

141
00:09:18,290 --> 00:09:20,940
سنرى تخطيطًا حيث

142
00:09:20,940 --> 00:09:24,360
يتم شرح تدفق المعلومات هذا بشكل أكثر وضوحًا لك.

143
00:09:24,360 --> 00:09:32,380
نقطة واحدة ذكرتها للتو هي حول رمز OAuth أو الرمز المميز للوصول.

144
00:09:32,380 --> 00:09:34,090
ما هو رمز الوصول هذا؟

145
00:09:34,090 --> 00:09:38,675
رمز الوصول هو شيء يصدقه خادم التفويض بالنسبة لك.

146
00:09:38,675 --> 00:09:40,620
أي خادم تخويل؟

147
00:09:40,620 --> 00:09:44,100
هذا هو خادم تخويل OAuth 2 الطرف الثالث،

148
00:09:44,100 --> 00:09:46,668
خادم Facebook، في هذا المثال.

149
00:09:46,668 --> 00:09:51,130
لذلك هم تطبيق خادم Express.

150
00:09:51,130 --> 00:09:54,485
الآن، أنت، كمستخدم أمامي،

151
00:09:54,485 --> 00:09:58,070
تريد الوصول إلى شيء من تطبيق خادم Express.

152
00:09:58,070 --> 00:10:02,150
سيخبرك تطبيق خادم Express أنك تقوم بمصادقة

153
00:10:02,150 --> 00:10:06,666
نفسك من Facebook ثم تحصل على رمز وصول من Facebook.

154
00:10:06,666 --> 00:10:09,770
يتم إصدار رمز الوصول هذا

155
00:10:09,770 --> 00:10:16,330
للمستخدم الأمامي من Facebook عندما يقوم المستخدم بتسجيل الدخول إلى حساب Facebook الخاص به.

156
00:10:16,330 --> 00:10:21,155
الآن يتم إصدار رمز الوصول هذا باسم تطبيق العميل،

157
00:10:21,155 --> 00:10:25,060
خادم Express، الذي تم تسجيله بالفعل في Facebook.

158
00:10:25,060 --> 00:10:30,485
لذلك، لكي يتمكن المستخدم من الوصول إلى Facebook للحصول على رمز الوصول الخاص به،

159
00:10:30,485 --> 00:10:36,580
يتطلب المستخدم معرف العميل الخاص بتطبيق العميل أو تطبيق Express.

160
00:10:36,580 --> 00:10:39,755
لذلك يتم تضمين معرف العميل هذا

161
00:10:39,755 --> 00:10:44,460
في تطبيق الواجهة الأمامية أن هذا الخادم إكسبريس سوف تخدم لك.

162
00:10:44,460 --> 00:10:47,915
لذا فإن خادم Express يقدم موقعًا إلكترونيًا تقوم بالوصول إليه،

163
00:10:47,915 --> 00:10:50,820
فسيحتوي هذا الموقع على رمز حيث يكون

164
00:10:50,820 --> 00:10:56,597
معرف العميل الخاص بخادم Express مضمنًا بالفعل هناك.

165
00:10:56,597 --> 00:11:00,110
قطعة أخرى من المعلومات التي ذكرتها هي سر العميل.

166
00:11:00,110 --> 00:11:03,855
الآن، في تدفق المصادقة الذي سأتحدث عنه،

167
00:11:03,855 --> 00:11:07,640
لن يتم الكشف عن سر العميل لأي شخص.

168
00:11:07,640 --> 00:11:11,700
سيكون سر العميل فقط على جانب الخادم Express.

169
00:11:11,700 --> 00:11:15,335
مرة أخرى عندما يحاول خادم Express المصادقة

170
00:11:15,335 --> 00:11:20,600
والحصول على الوصول إلى ملف تعريف المستخدم من Facebook،

171
00:11:20,600 --> 00:11:23,795
وتطبيق العميل، سيقوم خادم Express

172
00:11:23,795 --> 00:11:27,490
بإرسال كل من معرف العميل وسر العميل،

173
00:11:27,490 --> 00:11:32,555
جنبا إلى جنب مع رمز الوصول الذي يقدمه المستخدم إليه إلى Facebook.

174
00:11:32,555 --> 00:11:34,988
و الفيسبوك، بدوره،

175
00:11:34,988 --> 00:11:38,945
يأذن تطبيق العميل الخاص بهم للوصول

176
00:11:38,945 --> 00:11:43,935
إلى خادم الموارد من أجل الحصول على بيانات الملف الشخصي للمستخدم.

177
00:11:43,935 --> 00:11:50,390
وبمجرد الحصول على بيانات ملف تعريف المستخدم من خادم موارد Facebook،

178
00:11:50,390 --> 00:11:54,530
سيقوم خادم Express الخاص بي بإنشاء حساب

179
00:11:54,530 --> 00:11:59,383
لهذا المستخدم المحدد الذي قام بتسجيله باستخدام حساب Facebook الخاص به.

180
00:11:59,383 --> 00:12:05,995
وبعد ذلك، قم بتزويد رمز ويب JSON للمستخدم،

181
00:12:05,995 --> 00:12:09,190
والذي يمكن للمستخدم استخدامه بعد ذلك للوصول إلى

182
00:12:09,190 --> 00:12:12,530
الموارد المخزنة على خادم Express.

183
00:12:12,530 --> 00:12:15,040
لذلك، مرة أخرى، لتلخيص هذا،

184
00:12:15,040 --> 00:12:20,387
لدي رسم تخطيطي هنا لشرح هذا لك بمزيد من التفصيل.

185
00:12:20,387 --> 00:12:22,000
بالإضافة إلى ذلك،

186
00:12:22,000 --> 00:12:24,225
هناك أيضا رمز تحديث.

187
00:12:24,225 --> 00:12:29,910
عندما يتم إصدار رمز وصول من قبل خادم Facebook OAuth 2،

188
00:12:29,910 --> 00:12:31,875
يكون رمز الوصول الخاص به عمر محدود.

189
00:12:31,875 --> 00:12:34,750
بعد ذلك، سيصبح رمز الوصول غير صالح.

190
00:12:34,750 --> 00:12:39,203
لذلك يجب أن يبقى رمز الوصول سريًا.

191
00:12:39,203 --> 00:12:43,285
لذلك

192
00:12:43,285 --> 00:12:48,040
سيتم كل هذا التبادل من الرموز بين المواقع المختلفة في مسألة مشفرة باستخدام بروتوكول هتبس.

193
00:12:48,040 --> 00:12:50,980
لذا تأكد من أنه عند إرسال رمز الوصول الخاص

194
00:12:50,980 --> 00:12:56,838
بك من تطبيق الواجهة الأمامية للمستخدم إلى خادم Express،

195
00:12:56,838 --> 00:13:02,146
سترسل رمز الوصول فقط عبر HTTPS، وليس HTTP.

196
00:13:02,146 --> 00:13:04,930
هذا مهم جدًا لأنك لا

197
00:13:04,930 --> 00:13:08,110
تريد أن يتم الكشف عن رمز الوصول الخاص بك لأي شخص لأن أي

198
00:13:08,110 --> 00:13:10,960
شخص يمكنه الحصول على أحد رمز الوصول الخاص بك يمكنه التظاهر بأنه

199
00:13:10,960 --> 00:13:15,130
تطبيق العميل الخاص به ثم الوصول إلى ملف تعريف المستخدم الخاص بك.

200
00:13:15,130 --> 00:13:16,820
لذلك هذا مهم جدا.

201
00:13:16,820 --> 00:13:20,005
الآن، بما أن رمز الوصول له عمر محدود،

202
00:13:20,005 --> 00:13:22,495
فهناك أيضًا رمز تحديث مماثل،

203
00:13:22,495 --> 00:13:27,550
والذي يمكن استخدامه لتحديث رمز وصول منتهي الصلاحية.

204
00:13:27,550 --> 00:13:30,790
الآن، في نوع التدفق الذي

205
00:13:30,790 --> 00:13:35,500
سنستخدمه مع تطبيقنا في التمرين،

206
00:13:35,500 --> 00:13:38,285
لن نتمكن من استخدام رمز التحديث.

207
00:13:38,285 --> 00:13:41,620
في أي وقت يريد المستخدم تخويل

208
00:13:41,620 --> 00:13:46,070
خادم Express للذهاب وجلب معلومات الملف الشخصي من Facebook،

209
00:13:46,070 --> 00:13:48,470
سيتعين على المستخدم توفير

210
00:13:48,470 --> 00:13:52,736
رمز وصول جديد يتم الحصول عليه من Facebook بشكل صريح.

211
00:13:52,736 --> 00:13:56,665
الجزء الوحيد الذي ذكرته للتو باختصار،

212
00:13:56,665 --> 00:13:58,221
لكنني لم أشرح،

213
00:13:58,221 --> 00:14:01,920
هو كيف يقوم تطبيق العميل، وخادم Express،

214
00:14:01,920 --> 00:14:07,260
والمقاييس، وكيف يسجل نفسه في مزود خدمة OAuth 2؟

215
00:14:07,260 --> 00:14:11,440
الآن، هذا هو المكان الذي

216
00:14:11,440 --> 00:14:16,705
يوفر فيه العديد من مزودي خدمة OAuth 2 طريقة لتسجيل تطبيق على موقعهم.

217
00:14:16,705 --> 00:14:20,485
لذلك

218
00:14:20,485 --> 00:14:25,875
سيقوم تطبيق العميل، خوادم Express في مثالنا، بتسجيل نفسه كتطبيق عميل على موفر خدمة OAuth.

219
00:14:25,875 --> 00:14:27,460
لذا كما سترى في التمرين، فإن

220
00:14:27,460 --> 00:14:31,795
الخطوة الأولى التي سنقوم بها هي تسجيل الدخول إلى Facebook باستخدام

221
00:14:31,795 --> 00:14:37,795
حسابنا ثم إنشاء تطبيق على موقع Facebook.

222
00:14:37,795 --> 00:14:44,020
عند القيام بذلك، سيصدر لك Facebook معرف تطبيق العميل وسر العميل.

223
00:14:44,020 --> 00:14:47,830
ينطبق هذا الإجراء على العديد من موفري خدمة OAuth الآخرين لأن

224
00:14:47,830 --> 00:14:51,960
هذا هو التدفق العام الذي يتحدث عنه بروتوكول OAuth 2.

225
00:14:51,960 --> 00:14:57,130
لذا فإن معرف تطبيق العميل وسر العميل مفيدان بالنسبة لنا حتى نتمكن من

226
00:14:57,130 --> 00:15:02,320
إثبات هويتنا

227
00:15:02,320 --> 00:15:08,960
لخادم OAuth عندما نمر برمز وصول نحصل عليه من المستخدم.

228
00:15:08,960 --> 00:15:11,500
الآن، هناك أيضًا عنوان URL لإعادة التوجيه الذي تحتاج إلى

229
00:15:11,500 --> 00:15:14,650
تسجيله عند تسجيل تطبيق العميل،

230
00:15:14,650 --> 00:15:18,520
وستراني أقوم بذلك في الخطوات التي أقوم بتسجيل

231
00:15:18,520 --> 00:15:23,410
التطبيق على موقع Facebook.

232
00:15:23,410 --> 00:15:26,380
الآن، لتلخيص تدفق المعلومات

233
00:15:26,380 --> 00:15:29,765
الذي تحدثنا عنه بإيجاز في حالة سابقة،

234
00:15:29,765 --> 00:15:31,855
اسمحوا لي أن أبدأ في هذه المرحلة.

235
00:15:31,855 --> 00:15:35,295
النقطة الأولى التي يجب النظر إليها هي مالك المورد.

236
00:15:35,295 --> 00:15:39,355
لذا فإن مالك المورد هنا هو المستخدم الذي

237
00:15:39,355 --> 00:15:45,625
سيستخدم حسابه على وسائل التواصل الاجتماعي.

238
00:15:45,625 --> 00:15:49,490
يحتوي Facebook، في هذا المثال، على المصادقة للمستخدم.

239
00:15:49,490 --> 00:15:54,515
لذا فإن مالك المورد هو الذي يحتوي على ملف تعريف حول المورد.

240
00:15:54,515 --> 00:15:57,760
وهذه المعلومات الشخصية لكل حساب الفيسبوك،

241
00:15:57,760 --> 00:16:00,535
تم تخزينها على خادم الفيسبوك.

242
00:16:00,535 --> 00:16:05,067
وهكذا يوفر خادم Facebook خادم الموارد هنا.

243
00:16:05,067 --> 00:16:08,410
لذلك هذا هو مزود خدمة OAuth الذي تراه

244
00:16:08,410 --> 00:16:12,691
على الجانب الأيمن من هذه الصورة هنا.

245
00:16:12,691 --> 00:16:17,320
لذا تخيل خادم Facebook على الجانب الأيمن، تطبيق العميل هذا،

246
00:16:17,320 --> 00:16:18,928
الذي يحتوي على خادم API الباقي،

247
00:16:18,928 --> 00:16:20,477
خادم Express الذي قمنا بتنفيذه،

248
00:16:20,477 --> 00:16:22,270
هو تطبيق عميل في هذه الحالة،

249
00:16:22,270 --> 00:16:24,700
ومالك المورد هو المستخدم.

250
00:16:24,700 --> 00:16:28,780
عنوان URL المستخدم الأمامي، الذي

251
00:16:28,780 --> 00:16:33,510
سيسمح لك بالانتقال إلى Facebook للتحقق من بيانات اعتماد هذا المستخدم.

252
00:16:33,510 --> 00:16:39,245
لذلك عندما تريد الوصول إلى المعلومات على جانب العميل،

253
00:16:39,245 --> 00:16:44,355
سيكون لديك أولا للذهاب

254
00:16:44,355 --> 00:16:47,730
وتخويل هذا التطبيق العميل لتكون قادرة على

255
00:16:47,730 --> 00:16:51,673
الحصول على الوصول إلى معلومات ملف التعريف الخاص بك.

256
00:16:51,673 --> 00:16:52,855
وبالتالي فإن تطبيق العميل،

257
00:16:52,855 --> 00:16:55,120
إذا كان بمثابة التطبيق على شبكة الإنترنت،

258
00:16:55,120 --> 00:17:00,095
فإنه سيوفر زر مناسب في هناك قائلا تسجيل الدخول باستخدام الفيسبوك.

259
00:17:00,095 --> 00:17:01,740
وهكذا عند النقر على الزر، في

260
00:17:01,740 --> 00:17:04,780
الأساس، يتم بدء الخطوة الأولى.

261
00:17:04,780 --> 00:17:07,375
يتم بدء طلب تخويل المستخدم.

262
00:17:07,375 --> 00:17:09,270
لذلك تطبيق العميل الخاص بك،

263
00:17:09,270 --> 00:17:10,910
من خلال وكيل المستخدم،

264
00:17:10,910 --> 00:17:17,409
وكيل المستخدم هو في الأساس تطبيق العميل، وتطبيق الواجهة الأمامية.

265
00:17:17,409 --> 00:17:22,725
يمكن أن يكون التطبيق Angular الذي قمنا بتطويره أو تطبيق الجوال،

266
00:17:22,725 --> 00:17:25,950
سواء كان أيوني أو ما إذا كان

267
00:17:25,950 --> 00:17:30,120
تطبيق NativeScript الذي قمنا بتطويره في الدورات السابقة في

268
00:17:30,120 --> 00:17:37,807
التخصص أو حتى تطبيق أصلي مثل تطبيق iOS أو تطبيق Android.

269
00:17:37,807 --> 00:17:39,060
كل هذه بمثابة وكيل المستخدم.

270
00:17:39,060 --> 00:17:42,360
لذا فإن وكيل المستخدم،

271
00:17:42,360 --> 00:17:45,420
يستخدمون عملية طلب التفويض من خلال

272
00:17:45,420 --> 00:17:48,360
وكيل المستخدم إلى خادم التفويض،

273
00:17:48,360 --> 00:17:50,500
وهو خادم Facebook.

274
00:17:50,500 --> 00:17:52,235
الآن، عندما يتم تمرير ذلك في،

275
00:17:52,235 --> 00:17:55,796
ثم مالك المورد أو المستخدم،

276
00:17:55,796 --> 00:18:01,065
الذي يحاول إعطاء حق الوصول إلى ملفه الشخصي لهذا التطبيق العميل،

277
00:18:01,065 --> 00:18:03,690
سوف تضطر إلى تخويل الفيسبوك

278
00:18:03,690 --> 00:18:06,600
لتكون قادرة على مشاركة هذه المعلومات مع تطبيق العميل.

279
00:18:06,600 --> 00:18:11,250
في نهج منحة التدفق الضمني الذي نستخدمه في

280
00:18:11,250 --> 00:18:16,025
مثالنا هنا وأيضًا في التمرين التالي،

281
00:18:16,025 --> 00:18:18,390
فإن نهج منح التدفق الضمني هو

282
00:18:18,390 --> 00:18:22,875
النهج الأنسب عند تنفيذ تطبيق ويب باستخدام

283
00:18:22,875 --> 00:18:26,563
إطار عمل مثل Angular أو تطبيق الجوال المختلط

284
00:18:26,563 --> 00:18:30,925
مع Ionic أو NativeScript أو حتى التطبيق الأصلي.

285
00:18:30,925 --> 00:18:34,320
إن نهج منح التدفق الضمني هو طريقة أكثر بساطة

286
00:18:34,320 --> 00:18:39,170
لتشغيل OAuth 2 لمثل هذا النوع من التطبيقات.

287
00:18:39,170 --> 00:18:43,930
ثم ينقر مالك المورد على زر تسجيل الدخول،

288
00:18:43,930 --> 00:18:49,710
ثم سيطالب خادم التفويض مالك المورد بالمعلومات قائلا:

289
00:18:49,710 --> 00:18:54,330
«يريد تطبيق العميل هذا الوصول إلى معلومات ملف التعريف الخاص بك.

290
00:18:54,330 --> 00:18:55,725
هل تصرح بذلك؟»

291
00:18:55,725 --> 00:18:58,965
وهكذا سيتم ظهور هذا من قبل الفيسبوك،

292
00:18:58,965 --> 00:19:01,860
وبعد ذلك سوف تنقر على زر هناك قائلا، «نعم،

293
00:19:01,860 --> 00:19:05,278
أنا أذونات هذا التطبيق العميل للوصول نيابة عني.»

294
00:19:05,278 --> 00:19:06,645
لذلك، في هذه النقطة،

295
00:19:11,190 --> 00:19:13,380
سيقوم خادم التفويض على Facebook، خادم تخويل OAuth 2 على Facebook، بإنشاء رمز وصول.

296
00:19:13,380 --> 00:19:15,105
لإنشاء رمز الوصول

297
00:19:15,105 --> 00:19:20,405
هذا، سيتم الاستفادة من معرف العميل لتطبيق العميل هذا،

298
00:19:20,405 --> 00:19:22,535
تطبيق خادم Express الذي نقوم بتسجيله.

299
00:19:22,535 --> 00:19:28,165
لذلك يجب أن يكون معرف العميل جزءًا من وكيل المستخدم الذي يستخدمه هذا المستخدم.

300
00:19:28,165 --> 00:19:33,093
لذلك سيتم تضمين معرف العميل هذا في التطبيق الزاوي،

301
00:19:33,093 --> 00:19:38,585
أيوني أو التطبيق ناتيفسكريبت أو حتى دائرة الرقابة الداخلية أو التطبيق الروبوت.

302
00:19:38,585 --> 00:19:40,560
لذلك سيتم استخدام معرف العميل من قبل

303
00:19:40,560 --> 00:19:43,410
وكيل المستخدم لتحويل خادم التفويض قائلا،

304
00:19:43,410 --> 00:19:48,108
«هذا التطبيق العميل يريد الوصول إلى ملفي الشخصي،

305
00:19:48,108 --> 00:19:52,704
وأنا على استعداد لتخويل لك للسماح بالوصول إلى الملف الشخصي.»

306
00:19:52,704 --> 00:19:53,760
لذلك، عند هذه النقطة،

307
00:19:53,760 --> 00:19:59,290
سيقوم خادم التفويض بإرسال رمز وصول إلى وكيل المستخدم في هذه الحالة.

308
00:19:59,290 --> 00:20:02,670
لذا، تذكر، يأتي رمز الوصول هذا إلى وكيل المستخدم،

309
00:20:02,670 --> 00:20:09,180
وهو تطبيق الجوال أو تطبيقه Angular الذي يتم تنفيذه من قبلنا.

310
00:20:09,180 --> 00:20:12,870
ثم سيأخذ وكيل المستخدم هذا الرمز المميز للوصول

311
00:20:12,870 --> 00:20:18,479
ثم تمرير رمز الوصول هذا إلى تطبيق العميل هذا.

312
00:20:18,479 --> 00:20:20,310
لذا فإن OAuth لتسجيل الدخول،

313
00:20:20,310 --> 00:20:23,305
ولكن سيتم تمرير رمز الوصول إلى تطبيق العميل،

314
00:20:23,305 --> 00:20:25,200
خادم Express في هذه الحالة،

315
00:20:25,200 --> 00:20:32,340
في مسار معين على جهاز التوجيه الخاص بالمستخدم،

316
00:20:32,340 --> 00:20:37,465
مسار المصادقة على موقع تطبيق العميل.

317
00:20:37,465 --> 00:20:41,000
الآن، في السابق، رأينا استخدام المصادقة المحلية،

318
00:20:41,000 --> 00:20:45,985
حيث أرسلنا طلبًا لشرطة مائلة سجل دخول المستخدم.

319
00:20:45,985 --> 00:20:48,250
الآن، لهذا للعمل في تطبيقنا،

320
00:20:48,250 --> 00:20:50,580
سنقوم بإعداد واحد آخر على مستخدمي شرطة مائلة، شرطة

321
00:20:50,580 --> 00:20:54,095
مائلة Facebook، رمز مائل، وما إلى ذلك.

322
00:20:54,095 --> 00:21:02,500
لذلك عنوان URL آخر نقدم عليه رمز الوصول هذا إلى خادم Express.

323
00:21:02,500 --> 00:21:06,280
الآن، عندما يتم الحصول على رمز الوصول هذا بواسطة خادم Express،

324
00:21:06,280 --> 00:21:09,630
سيأخذ خادم Express رمز الوصول هذا،

325
00:21:09,630 --> 00:21:14,240
ثم مع معرف العميل الخاص به وسر العميل،

326
00:21:14,240 --> 00:21:20,200
سيتم إرسال هذه المعلومات إلى خادم التفويض.

327
00:21:20,200 --> 00:21:25,140
وسيسمح خادم التفويض بتطبيق العميل الخاص

328
00:21:25,140 --> 00:21:30,565
به بالوصول إلى خادم المورد للحصول على معلومات ملف التعريف.

329
00:21:30,565 --> 00:21:35,060
وبالتالي سيتم إرسال معلومات الملف الشخصي مرة أخرى في الخطوة رقم ستة،

330
00:21:35,060 --> 00:21:37,890
والعودة إلى تطبيق العميل في هذه الحالة.

331
00:21:37,890 --> 00:21:42,015
لذلك عندما يحصل تطبيق العميل على معلومات ملف التعريف للمستخدم،

332
00:21:42,015 --> 00:21:46,380
سيقوم تطبيق العميل بإنشاء حساب جديد

333
00:21:46,380 --> 00:21:51,785
للمستخدم على كل موقع إذا كان الحساب غير موجود.

334
00:21:51,785 --> 00:21:56,090
إذا قام هذا المستخدم بتسجيل الدخول مسبقًا باستخدام معرّف Facebook الخاص به،

335
00:21:56,090 --> 00:22:00,045
فسيكون هناك حساب موجودًا بالفعل بحيث يقوم تطبيق العميل وخادم Rest API

336
00:22:00,045 --> 00:22:05,485
ببساطة بالتقاطع لمعرفة أن حساب المستخدم هذا موجود بالفعل.

337
00:22:05,485 --> 00:22:06,865
وعند هذه النقطة،

338
00:22:06,865 --> 00:22:12,550
تتم مصادقة المستخدم إلى وظيفة تسجيل دخول الطرف الثالث

339
00:22:12,550 --> 00:22:18,321
التي توفرها خدمة مصادقة OAuth 2 في Facebook.

340
00:22:18,321 --> 00:22:23,275
عند هذه النقطة، سيقوم تطبيق العميل بإنشاء JSON Web Token،

341
00:22:23,275 --> 00:22:26,010
في المثال الذي سنقوم بتنفيذه وممارسة الرياضة،

342
00:22:26,010 --> 00:22:33,040
ثم تمرير JSON Web Token مرة أخرى إلى وكيل المستخدم أو تطبيق الواجهة الأمامية،

343
00:22:33,040 --> 00:22:35,845
أو تطبيق Angular، أو التطبيق الأيوني،

344
00:22:35,845 --> 00:22:38,590
أو تطبيق NativeScript.

345
00:22:38,590 --> 00:22:45,160
ثم سيتم استخدام رمز JSON Web Token لاحقًا من قبل المستخدم من

346
00:22:45,160 --> 00:22:48,790
أجل مصادقة نفسه كلما أراد

347
00:22:48,790 --> 00:22:53,145
الوصول إلى أي موارد مخزنة على خادم Express.

348
00:22:53,145 --> 00:22:55,505
لذلك، بمجرد الحصول على JSON Web Token،

349
00:22:55,505 --> 00:23:00,975
جميع العمليات اللاحقة، كنت قد رأيت بالفعل كيفية القيام بذلك مع JSON Web Token.

350
00:23:00,975 --> 00:23:03,565
لذلك، بمجرد الحصول على JSON Web Token

351
00:23:03,565 --> 00:23:05,070
، يتم الانتهاء من عملك،

352
00:23:05,070 --> 00:23:10,150
ومن ثم يمكنك المضي قدما في العملية العادية من تلك النقطة فصاعدا.

353
00:23:10,150 --> 00:23:12,940
الآن، عندما تنتهي صلاحية JSON Web

354
00:23:12,940 --> 00:23:17,618
Token، يجب عليك المرور عبر العملية الكاملة لإعادة مصادقة نفسك، وفي

355
00:23:17,618 --> 00:23:22,990
وقت لاحق، السماح للمستخدمين بالوصول إلى المعلومات على موقعك.

356
00:23:22,990 --> 00:23:29,710
لذلك، مع هذا الفهم السريع لكيفية عمل عمليات OAuth 2

357
00:23:29,710 --> 00:23:33,385
، مرة أخرى، كما ترون، هناك الكثير من التفاصيل هنا.

358
00:23:33,385 --> 00:23:38,950
ولكن، لحسن الحظ، ليس علينا التعامل مع كل هذه التفاصيل لأننا

359
00:23:38,950 --> 00:23:46,285
سنستخدم وحدة عقدة تهتم بالكثير من هذه التفاصيل نيابة عنا.

360
00:23:46,285 --> 00:23:52,195
نظرًا لأننا قمنا بالفعل بإعداد خادم Express الخاص بنا لاستخدام Passport،

361
00:23:52,195 --> 00:24:00,980
يمكننا الآن استخدام رمز وحدة عقدة أخرى كوحدة Passport-Facebook-Token.

362
00:24:00,980 --> 00:24:04,595
تقوم وحدة Passport-Facebook-Token بشكل أساسي بتنفيذ

363
00:24:04,595 --> 00:24:08,580
نهج المنح الضمني الذي تحدثت عنه في وقت سابق.

364
00:24:08,580 --> 00:24:11,320
ومن ثم يمكنك تهيئة

365
00:24:11,320 --> 00:24:18,160
استراتيجية جديدة في استراتيجية جواز السفر الخاص بك، داخل التطبيق الخاص بك.

366
00:24:18,160 --> 00:24:22,720
وهكذا تمكنك وحدة Passport-Facebook-Token من إعداد

367
00:24:22,720 --> 00:24:31,090
استراتيجية مصادقة Passport جديدة لاستخدام واجهة برمجة تطبيقات OAuth 2 المستندة إلى Facebook.

368
00:24:31,090 --> 00:24:36,085
وهكذا للاستفادة من هذه الوحدة،

369
00:24:36,085 --> 00:24:41,615
يمكنك تثبيت هذا بالقول npm الماضي تثبيت جواز السفر - facebook-token

370
00:24:41,615 --> 00:24:44,980
، ناقص الحفظ، وبعد ذلك بمجرد تثبيت

371
00:24:44,980 --> 00:24:51,010
ذلك، ستقوم بتكوين استراتيجية Facebook داخل التطبيق الخاص بك، وبعد ذلك،

372
00:24:51,010 --> 00:24:57,810
الاستفادة من هذا لتكوين الاستراتيجية لجواز السفر الخاص بك

373
00:24:57,810 --> 00:25:04,990
للاستفادة مما إذا كنا نستفيد من المصادقة المستندة إلى OAuth 2 لتطبيقنا.

374
00:25:04,990 --> 00:25:09,270
مع هذا الفهم السريع لـ OAuth 2،

375
00:25:09,270 --> 00:25:11,770
دعنا ننتقل إلى التمرين،

376
00:25:11,770 --> 00:25:16,630
حيث سنقوم بتكوين خادم Express الخاص بنا للاستفادة بالفعل من

377
00:25:16,630 --> 00:25:20,920
نهج المنحة الضمني هذا لتمكيننا

378
00:25:20,920 --> 00:25:25,450
من التحقق من هويتنا إلى خادم Express

379
00:25:25,450 --> 00:25:29,745
، وبعد ذلك، الوصول إلى الموارد، والأطباق،

380
00:25:29,745 --> 00:25:38,180
الترقيات ومعلومات القادة التي يتم تخزينها على خادم إكسبريس لدينا.