PracticU

אימות משתמשים בריאקט
Authentication & Authorization

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › אימות משתמשים בריאקט Authentication & Authorization
מילון מושגים:
React - ספריית JavaScript לבניית ממשקי משתמש מבוססי רכיבים, שפותחה על ידי פייסבוק.
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
JWT - אסימון חתום בפורמט JSON שמעביר נתוני זהות והרשאה בין צדדים באופן קומפקט ומאומת.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
טוקן - פיסת מידע שמשמשת לאימות או להרשאה, שהמערכת מנפיקה ללקוח ומוצגת בבקשות הבאות במקום סיסמה.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
כותרת HTTP - שדה מידע נלווה בבקשה או בתגובה של HTTP, המעביר נתונים כמו סוג התוכן, אימות או הגדרות מטמון.

אימות משתמשים בריאקט Authentication & Authorization
מבוא לאימות והרשאות באפליקציית React: איך נרשמים, מתחברים ומזהים משתמש מול Backend שעובד עם JWT, ומה צד ה-Frontend צריך לעשות.
מושגי יסוד
- Authentication (אימות): זיהוי המשתמש, מי הוא. לפני הרשמה או כניסה המשתמש הוא אנונימי.
- Authorization (הרשאה): מה המשתמש רשאי לעשות, למשל אדמיניסטרטור, מנהל, מזכירה או משתמש רגיל עם מינימום הרשאות.
- JWT (Json Web Token): מנגנון שבו ה-Backend מזהה את המשתמש לפי טוקן. הקורס הוא Frontend, ולכן ה-Backend לא נכתב בו.
איך זה עובד
1. ראוט פתוח: ראוט כמו api/products פתוח לכולם, בלי קשר ל-JWT. זה מה שעבדנו איתו עד כה.
2. ראוט שדורש כניסה: נניח ש-api/employees דורש שהמשתמש יהיה מחובר.
3. הרשמה: ה-Backend מספק ראוט הרשמה (בדוגמה api/auth/register). ה-Frontend שולח את פרטי המשתמש שה-Backend דורש, וה-Backend שומר אותם בדאטאבייס.
4. הטוקן: בתשובה חוזרת מחרוזת ארוכה בפורמט של JWT. היא מקודדת ולא מוצפנת, ומכילה אובייקט של המשתמש (אפשר לחלץ אותו ב-Frontend) וגם זמן תפוגה, למשל 30 דקות.
5. שמירה: ה-Frontend חייב לשמור את הטוקן, במשתנה גלובלי, ב-session storage או ב-local storage. המקום הנכון בקורס יהיה Redux.
6. שליחה ב-header: בכל בקשה לראוט מוגן שולחים header בשם Authorization עם הערך Bearer, רווח והטוקן עצמו.
7. בדיקת ה-Backend: ה-Backend לא שומר את הטוקן. הוא בודק שהטוקן חוקי, שהונפק על ידו ושלא פג תוקפו. אם ה-header חסר, ריק, לא מתחיל ב-Bearer או שהטוקן שבור או פג, השירות לא ניתן.
8. כניסה (login): למי שכבר נרשם שולחים רק credentials, כלומר מה שה-Backend דורש לכניסה כמו אימייל וסיסמה או שם משתמש וסיסמה. בתשובה חוזר שוב טוקן, ואיתו אותו מנגנון.
אחרי ההרצאה ברור איך JWT מחבר בין הרשמה, כניסה וטוקן שנשלח ב-header, ומה צריך לבנות בהמשך המודול.
השיעור הבא בקורס: יצירת User Mode בריאקט

פרקי ההרצאה: אימות משתמשים בריאקט Authentication & Authorization

  1. 00:00

    מהו Authentication ו-Authorization

  2. 01:03

    הרשאות ויוזר אנונימי

  3. 01:40

    הכרת מנגנון JWT

  4. 02:56

    ראוט פתוח לכל המשתמשים

  5. 03:53

    ראוט הדורש לוג אין

  6. 04:49

    ראוט ההרשמה בבאק אנד

  7. 05:28

    שליחת פרטי היוזר להרשמה

  8. 06:07

    קבלת טוקן מהשרת

תמלול ההרצאה: אימות משתמשים בריאקט Authentication & Authorization

הטקסט המלא של הדקות הראשונות בהרצאה «אימות משתמשים בריאקט Authentication & Authorization» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אנחנו מגיעים לנושא חדש בשם Authentication and Authorization. בגדול זה נקרא Out. מה שהנושא הזה מאפשר לנו לעשות זה את כל הפעולות של הרשמה, כלומר רג'יסטר של לוג אין, כניסה של לוג אאוט, איך אנחנו יוצאים מהמערכת, איך אנחנו מזהים מי זה אותו יוזר שכרגע, איך

  2. 00:30

    אנחנו יודעים אם יש לו או אין לו הרשאות. כל הנושא הזה הוא נושא מאוד מאוד חשוב. קודם כל בואו נבין מה זה Authentication ו-Authorization. Authentication זה פשוט אותו תהליך שמזהה את היוזר.

  3. 00:45

    מי זה היוזר? האם היוזר שלנו הוא מוישה? האם היוזר שלנו הוא חיים או דנה? מי זה היוזר הזה? כמובן אפשר לעשות את זה רק אחרי שהיוזר מבצע או הרשמה או כניסה או רג'יסטר או לוגין.

  4. 01:01

    לפני זה אני לא אמור לדעת מי זה אותו יוזר, ולכן המצב הזה נקרא יוזר אנונימי, אנונימוס יוזר, אם אני לא יודע מי הוא. האוטוריזיישן זה התהליך של מתן פרמישן, כלומר איזושהי הרשאה ליוזר לבצע משהו.

  5. 01:18

    אני קובע שהיוזר הוא אדמיניסטרטור, או היוזר הוא מנהל, או היוזר הוא מזכירה, או שהוא סתם יוזר פשוט ויש לו את המינימום הרשאות.

  6. 01:31

    לפי ההרשאה הזאת אנחנו יודעים מה הוא יכול לעשות, האם הוא יכול לקבל מידע מסוים או שרק אם הוא מנהל הוא יכול לראות את המידע הזה? האם הוא יכול לעשות פעולה מסוימת או רק אם הוא אדמיניסטרטור הוא יכול לעשות את אותה פעולה?

  7. 01:47

    אז האותנטיקיישן זה אימות ואאוטוריזיישן זה הרשאה מה הוא יכול לעשות. אנחנו הולכים להיכנס לתחום שנקרא JWT. JWT זה Json Web Token וסך הכל מנגנון שמאפשר לזהות מיהו אותו היוזר בצד של ה-Back-End.

  8. 02:09

    אבל אנחנו לא כותבים Back-End, אנחנו React, אנחנו כותבים Front-End. אבל ה-Back-End ברוב המקרים וברוב ה-APIs היום עובדים עם JWT, עם הקונספט הזה.

  9. 02:21

    אנחנו תכף הולכים לראות מה בעצם ה-Back-End מביא לנו, מה אנחנו צריכים להביא לו בחזרה כאשר הוא עובד עם הטכניקה הזאת לזהות את אותו היוזר ולאפשר לנו לעשות כל מיני דברים שאנחנו רוצים לבצע.

  10. 02:35

    לפי כך שהשרת יודע מי אותו יוזר, אז כמובן הוא יכול לדעת מה מותר לו לעשות, מה אסור לו לעשות, יש לו פשוט את ההרשאות לגביו. אז בואו ניכנס ונראה איך כל המנגנון של JWT עובד.

  11. 02:49

    הדבר הראשון שאנחנו הולכים לראות זה מה קורה אם יש לנו ראוט מסוים ב-Backend, אנחנו מדברים על ה-Backend, שהוא פתוח לכולם זאת אומרת גם יוזרים אנונימיים יכולים לגלוש אליו אנחנו לא צריכים להירשם או להיכנס בשביל לגלוש לראוט הזה יש לנו את צד הבאק יש לנו את צד הפרונט ובואו נניח שאותו ראוט שמותר לנו לגלוש אליו שזה דרך אגב גם מה שאנחנו עשינו בפרויקט

  12. 03:18

    הזה לא התעסקנו עם כניסה והרשמה וכולי והצלחנו לגלוש לראוט בשביל לקבל את המוצרים אז בואו נניח שיש לנו ראוט כזה api product ב-Backend, אנחנו מדברים תמיד על ה-Back, ואנחנו רוצים לגלוש אליו ולקבל את המוצרים.

  13. 03:35

    אוקיי, אם הוא פתוח לכולם, אז אנחנו גולשים ומקבלים בחזרה JSON של המוצרים, אין שום בעיה. כאשר יש לנו ראוט כזה, אין פה שום קשר ל-JWT.

  14. 03:47

    אנחנו יכולים להירשם, אבל וואלה, השרת לא מצפה שנביא לו שום דבר מעבר לגלישה פשוטה. כמובן שיש המון ראוטים כאלה.

  15. 03:57

    זאת דוגמה מאוד מאוד פשוטה שזה מה שעשינו עד היום. עכשיו, מה קורה אם יש לנו איזשהו ראוט בבקאנד אבל הוא פתוח רק למשתמשים שעשו לוגד אין.

  16. 04:09

    אתה חייב לבצע לוג אין בשביל להיכנס לראוט הזה. הנה הבקאנד, הנה הפרונט אנד, ובוא נניח שהראוט הזה זה ראוט של אמפלואיז.

  17. 04:20

    אם אתה רוצה לראות את רשימת העובדים, אתה חייב לעשות לוג אין. זה לא משהו שעשינו אותו עד היום, למרות שבדוגמה שאנחנו עובדים איתה כן הצלחנו לראות את העובדים בלי לבצע הרשמה, אבל אנחנו הולכים לשנות את זה.

  18. 04:34

    אז בואו נניח לצורך הדוגמה הזאת שבשביל לקבל את רשימת העובדים, זה ה-Route API employees, ב-Backend אנחנו חייבים לבצע או הרשמה או כניסה, כלומר להיות לוגדיים.

  19. 04:47

    אז איך כל המנגנון עכשיו מתנהל מבחינת ה-Backend וה-Frontend כאשר אנחנו עובדים בטכניקה שנקראת JWT? ה-Backend אשר לנו ראוט נוסף לא משנה מה הראוט ויכול להיות api outh register זה יכול להיות api/register לא משנה כרגע קראתי לו api outh register הבק אנד מכיל ראוט כזה

  20. 05:14

    אנחנו לא כותבים בקורס הזה בק אנד ולכן אנחנו בעצם לא יודעים שזה מה שקורה מאחורי הקלעים ולכן חשוב שנבין שאכן הבק אנד מספק אפשרות כזאת to register ואז מה בעצם הפרונט-אנד צריך לשלוח לאותו ראוט בשביל הרשמה?

  21. 05:35

    הפרונט-אנד צריך לקבל את כל הפרטים של אותו יוזר. כשהוא רוצה לבצע הרשמה אז הוא צריך לקבל מה שהבק-אנד רוצה. נניח שם פרטי ושם משפחה ואימייל וכתובת ותעודת זהות וסיסמה ואולי תחביבים ותמונה ולא משנה מה.

  22. 05:55

    מה שהבק-אנד מחייב אותי, אני צריך כמובן לדעת את זה לפי הדוקומנטציה אולי ולארגן יוזר כזה ולשלוח לו את היוזר. אוקיי, מה ה-Backend עושה? מן הסתם הוא שומר את הפרטים בדאטאבייס, זה בסדר.

  23. 06:11

    אבל מה הוא מחזיר לי בחזרה? ה-Backend מחזיר בחזרה, שימו לב, משהו שנקרא טוקן. טוקן זאת סך הכל מכרוזת, מכרוזת די ארוכה.

  24. 06:25

    המכרוזת הזאת בנויה בפורמט מאוד מיוחד שזה בעצם הפטנט של JWT - Json Web Token. טוקן זה אותה מכרוזת מיוחדת שמחזירים לנו. אז מה יש בתוך המכרוזת הזאת?

  25. 06:39

    מכרוזת ארוכה, מקודדת, כמעט אי אפשר לקרוא אותה, ומה שיש בתוכה זה כמה דברים.

לקורס המלא: קורס ריאקט אונליין

ההרצאה הקודמת: רידקס - Using Redux Logger Middleware

ההרצאה הבאה: יצירת User Mode בריאקט

הרצאות קשורות מקורסים אחרים

  • משתמשים מקומיים - חלק 1
  • יצירת משתמשים ב-AD
  • אימות עם סמס - MFA
  • אופיס 365 Multi-Factor Authentication

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס NodeJS