טוקן - C# & Angular

אנונימי123

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

ממש אשמח!!
תודה!
 

Yehuda Kremer

משתמש פעיל
הנדסת תוכנה
D I G I T A L
קודם, לגבי הכותרת:
  • אני מניח שהכוונה ב"טוקן" לJWT
  • חשוב להבהיר שהשימוש בטוקן זה אינו דווקא בשפת C# אלא בכל Backend שמטפל בבקשות HTTP
שימוש בJWT ב.net (לדוגמה בMVC) ניתן לממש במספר שיטות, וניתן למצוא מספר רב של מדריכים מפורטים.

לדוגמה המדריך הזה: ASP.NET CORE Token Authentication and Authorization using JWT (No Cookies) – Part 1
במדריך מופיעה התמונה הבאה:
LoginDemo1-r-700.png


בתמונה זו מתואר מסלול end to end של השימוש בtoken,
חשוב לציין שלא מתוארים תהלכי יצירת/מחיקה/רענון (בקיצ'ר "ניהול") הtoken.

הייתי מתאר תהליך end to end סטנדרטי (כולל יצירת הToken) כך:
  1. יצרתי משתמש ושמרתי אותו בטבלת users
  2. כשהמשתמש מבצע login, אני יוצר לו token (יש לכך ספרייה nuget שיוצרת את הtoken, ראה ב"הערות נוספות") ושומר אצלי בטבלת users-tokens, כמו"כ אני נותן למשתמש את הToken שיצרתי עבורו (מעביר לו את הtoken בheader שבresponse)
  3. מכאן מתבצע התהליך שמתואר בתמונה לעיל, לכל בקשת HTTP שהמשתמש עושה, הוא נותן לי גם את הtoken שיצרתי עבורו,
  4. בגלל שToken הוא ייחודי למשתמש, אני יכול לזהות את המשתמש באמצעות הtoken הזה גם בבקשות HTTP עתידיות (נגיד ביום למחרת) וכך אני חוסך מהמשתמש לבצע Login נוסף בעתיד.
הערות נוספות:
  1. ישנם שימושים נוספים והגדרות רבות שניתן לבצע בשימוש בJWT בMVC, תיארתי שימוש סופר בסיסי:)
  2. ב.net אפשר להשתמש לדוגמה בספרייה System.IdentityModel.Tokens.Jwt על מנת ליצור/"להקצאות" ול"פענח" את הtoken
  3. לגבי הclient (אנגולר), פשוט מצרפים את הtoken בכל פנייה לשרת (בheader ב"Authorization"), במקרים מסוימים שומרים את הtoken בlocalstorage בדפדפן לצורך שימוש עתידי
 
נערך לאחרונה ב:

סמרקט

מהמשתמשים המובילים!
הנדסת תוכנה
D I G I T A L
  1. כשהמשתמש מבצע login, אני יוצר לו token (יש לכך ספרייה nuget שיוצרת את הtoken, ראה ב"הערות נוספות") ושומר אצלי בטבלת users-tokens, כמו"כ אני נותן למשתמש את הToken שיצרתי עבורו (מעביר לו את הtoken בheader שבresponse)

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

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

אנונימי123

משתמש מקצוען
אם לא בשרת אז איפה שומרים?
אשמח לקצת תיאוריה בנושא...


הפוסט היה מחכים , תודה :)
אם אני לא טועה...
אז שומרים אותו בלוקלסטורג' או בקוקיז...
וכשניגשים לשרת שולחים אותו ב hedears של כל בקשה.
והשרת מפענח אותו ומזהה את היוזר.

בהצלחה :)
 

מפתחת Net

משתמש צעיר
D I G I T A L
אבל הוא חייב להיות איפשהו שמור..
אם הוא לא שמור הוא אמור להעלם אחרי כל הרצה..
ואם יש לך דוגמא של קוד איך שולחים hedears באנגולר ואיך מקבלים ב C# זה יעזור לי ...
 

סמרקט

מהמשתמשים המובילים!
הנדסת תוכנה
D I G I T A L
אבל הוא חייב להיות איפשהו שמור..
אם הוא לא שמור הוא אמור להעלם אחרי כל הרצה..
ואם יש לך דוגמא של קוד איך שולחים hedears באנגולר ואיך מקבלים ב C# זה יעזור לי ...
הטוקן נשמר רק בקליינט. הקליינט מצרף אותו בכל קריאה (כ-cookie או ב-Autorization header).
הטוקן הוא פיסת מידע חתומה דיגיטלית והרעיון הוא שלא מוודאים את תקינותו מול מידע קיים ב-db, אלא השרת מפענח אותו בכל קריאה מחדש כדי לוודא שלא עבר שינוי מאז שנוצר.

תקראי קצת על jwt, יש על זה הרבה חומר.
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קל

א שִׁיר הַמַּעֲלוֹת מִמַּעֲמַקִּים קְרָאתִיךָ יְהוָה:ב אֲדֹנָי שִׁמְעָה בְקוֹלִי תִּהְיֶינָה אָזְנֶיךָ קַשֻּׁבוֹת לְקוֹל תַּחֲנוּנָי:ג אִם עֲוֹנוֹת תִּשְׁמָר יָהּ אֲדֹנָי מִי יַעֲמֹד:ד כִּי עִמְּךָ הַסְּלִיחָה לְמַעַן תִּוָּרֵא:ה קִוִּיתִי יְהוָה קִוְּתָה נַפְשִׁי וְלִדְבָרוֹ הוֹחָלְתִּי:ו נַפְשִׁי לַאדֹנָי מִשֹּׁמְרִים לַבֹּקֶר שֹׁמְרִים לַבֹּקֶר:ז יַחֵל יִשְׂרָאֵל אֶל יְהוָה כִּי עִם יְהוָה הַחֶסֶד וְהַרְבֵּה עִמּוֹ פְדוּת:ח וְהוּא יִפְדֶּה אֶת יִשְׂרָאֵל מִכֹּל עֲוֹנֹתָיו:
נקרא  22  פעמים

אתגר AI

ממה זה עשוי...? • אתגר 16

לוח מודעות

למעלה