daynamic.title_categories.blog_categories
daynamic.title_categories.tags
البومات الصور
nano.all.videoList
daynamic.title_categories.title_tags
daynamic.msg_no_data.لاتوجد بيانات لعرضها
daynamic.title_categories.title_links
Posted in أخبار لغات البرمجة وأطر العمل on Oct 26, 2023
ماهو JWT ا "JSON Web Token" في flutter
الــ JWT باختصار لـ "JSON Web Token"، وده بروتوكول للتحقق من صحة معلومات المستخدم اللى بيدخل على الموقع أو التطبيق تبعك.
كيف بيتم التحقق من صحة معلومات المستخدم هذاه؟ يعني مثلاً لو المستخدم دخل اسم المستخدم وكلمة السر الصح، كيف بتتأكد إنه ذه المستخدم اللى يدخل ونقوله اهلا وسهلا على الموقع وتظهرله بياناته الخاصة؟
الحل اللى يرسلة JWT هذا انه بيعمل توكن (Token)، يعني بيولد قيمة مشفرة بتحتوي على بيانات المستخدم اللى مدخلها (زي الاسم والايميل)، وهذه التوكن بيتبعث للمستخدم كرد على الطلب اللى اتعمل من عنده. ولو المستخدم حابب يستخدم أي معلومة بتتعلق بحسابه، ممكن يضيف التوكن هذا في كل طلب يبعته للموقع، والموقع هيتأكد من صحة التوكن وبالتالي يعتبر إن المعلومات اللى مدخلها صحيحة.
* الهيكل الأساسي لـ JWT. يتكون التوكن من ثلاثة أجزاء: (Header) (Payload) (Signature). يتم إنشاء التوكن عن طريق تشفير Header والـ Payload باستخدام خوارزمية التشفير المحددة، وبعدين بيتم إضافة الـ Signature للتحقق من صحة التوكن لما يروح للسيرفر.
** بعض واهم الخصائص:
الExpiration أو انتهاء الصلاحية بيتحكم بإعطاء صلاحيات مؤقتة للمستخدم بتحديد مدة صالحية الـtoken.
الRefresh بتدعم التحديث من خلال عملية الـrefresh token، ده بيمكن JWT من إدارة الصلاحيات المؤقتة بسلاسة.
الPayload بيسمح لك بنقل بيانات مهمة بدون ما تحتاج تتصل بقاعدة البيانات مرة تانية.
الStateless وده معناه إن JWT هو نظام للمصادقة stateless يعتمد على العميل فى حفظ الحالة بدلاً من الـserver.
من الممكن أنك تعمل refresh token من خلال JWT دون الحاجة لـstore session. ولجعلها مؤمنة، بنستخدم تشفير بواسطة Base64Url ونوع التشفير HS256 Cipher يتمتع بدعم من المكتبات البرمجية المتعة مثل jjwt.
الJWT ده مفيد بشكل كبير في حالة الـ Single Sign-On، يعني لو كان عندك موقع كبير وفيه أكتر من مكان بتدخل منه للموقع، الJWT بيتيح للمستخدم إمكانية تسجيل الدخول من اى مكان بنسجل من خلاله دخول من غير ما يحتاج يدخل اسم المستخدم وكلمة السر تاني. بمعنى تاني، المستخدم بيدخل مرة واحدة بس على الموقع، وبعد كده يبقى قادر على الوصول لكل الصفحات والخدمات اللى الموقع بيقدمها، بدون ما يحتاج يسجل الدخول مرة تانية.
وبيتم استخدام الJWT بشكل واسع في حاجات كتير، زي الـ authentication والـ authorization في تطبيقات الويب والموبايل. فعلى سبيل المثال، في تطبيقات الويب، بيتم إرسال التوكن المولد من الJWT بعد تسجيل الدخول للمستخدم في هيدر كل طلب يتم إرساله إلى السيرفر، السيرفر بيستخدم التوكن ده للتأكد من صحة المستخدم ومنحه الصلاحية للوصول للموارد المحددة.