ask bashmohandes
All answers

ممكن حضرتك تقولي ب طريقه مختصرة ال jwt ايه لازمته ؟

Anonymous · Around November 2018

Mohamed ElsherifMohamed Elsherif

سيبك من ال JWT دلوقتي خلينا نفهم يعني ايه Access Token، ناخد مثال بسيط، انت دلوقتي لو داخل مكان و الأمن على الباب سألك انت مين، حتقوله اسمك فلان الفلاني، انت كده عملت Identification بس طبعاً ده مش ينفع أغلب الأحوال فحيقولك ممكن أشوف تحقيق الشخصية، و ده في لغتنا بتوع ال security بنسميه Challenge بنقدمه لتحقيق الشخصية بتاعك اللي هو مثلاً بطاقتك او رخصتك او باسورد مثلاً و دي بنسميها Credentials، هو حيبص فيهم و يتأكد من صحتهم لو مثلاً فيه علامات مائية عليهم و بعدين يرجعهم لك و بكده هو عمل Authentication و قرر انه يدخلك المكان او لا ده حسب اللائحة بتاعته و ده هو ال Authorization.

في المثال ده رجل الأمن اعتمد على تحقيق شخصية صادر من جهة هو بيثق فيها ضمنياً، اللي هي مثلاً الداخلية او الحكومة بشكل عام، و لما اتأكد من صحة تحقيق الشخصية فهو اعتمد على ثقته في الجهة دي في تحقيق شخصيتك بناء على ثبات صحة ال Credentials اللي معاك و اللي صادرة منهم.

في العالم الرقمي الموضوع مشابه جداً، انت بتروح تستخدم خدمة ما، مثلاً عاوز تدخل موقع StackOverflow و حتلاقيه بيطلب منك تحقيق شخصية برضه و حيقولك انا بقبل Google, Microsoft, Facebook، و غيرهم من ال Identity Providers لما حتستخدم أي واحد فيهم، ال Identity provider ده حيديك Access Token فيه معلومات عنك بنسميها Claims زي اسمك ايه، عنوان البريد الإلكتروني بتاعك ايه و هكذا، و بعدين بيحط عليه امضاء إلكتروني Digital Signature باستخدام ال Private Key بتاعه اللي مفيش جهة تانية في الدنيا عندها المفتاح ده غيره هو لما بتاخد ال Access Token ده و تروح بيه StackOverflow حيستخدم ال Public Key المتاح على موقع ال Identity Provider و ده الناس كلها تقدر تشوفه و باستخدامه حيقدر يتحقق من صحة التوقيع الإلكتروني على ال Access Token و بعدين يقرا البيانات اللي فيه اللي هي ال Claims و يعرف انت مين.

و على أساس لائحته يقرر يسمحلك او لأ.

التوقيع الإلكتروني مش مجرد حاجة بتتزود و خلاص، يعني ما ينفعش حد ياخد Access Token موقع بالفعل و يغير البيانات اللي فيه و يفضل سليم، لأن التوقيع بيتحسب من محتويات ال Token نفسه، فلو اي حاجة اتغيرت في ال Token فالتوقيع مش حيطبق و حيتكشف أثناء تحقيق صحة التوقيع في الجهة اللي بتقدملها ال Token.

ال JWT هو مجرد Format علشان تمثل بيه البيانات اللي جوة ال Token باستخدام JSON و بيبقى متقسم ل ٣ أجزاء، Header, Payload & Signature، كل جزء بيبقى عبارة عن JSON object او document فيها بيانات مختلفة.