
مثال وتوضيح لتطبيق HMAC
مثال توضيحي لتنفيذ HMAC (رمز مصادقة الرسالة القائم على التجزئة) باستخدام Flask بلغة Python.
رمز مصادقة الرسالة القائم على التجزئة (HMAC) يوفر لكل من الخادم والعميل مفتاحًا خاصًا لا يعرفه إلا ذلك الخادم وذلك العميل فقط. يقوم العميل بإنشاء HMAC فريد، أو تجزئة، لكل طلب إلى الخادم عن طريق تجزئة بيانات الطلب مع المفاتيح الخاصة وإرسالها كجزء من الطلب. ما يجعل HMAC أكثر أمانًا من رمز مصادقة الرسالة (MAC) هو أن المفتاح والرسالة يتم تجزئتهما في خطوتين منفصلتين.

عندما يرسل العميل طلبًا إلى الخادم، يتضمن الرؤوس التالية:
X-Authorization-Content-HMAC: تجزئة HMAC (URI الطلب بالكامل، الطابع الزمني الحالي لـ Unix (UTC)، ومفتاح HMAC السري)
X-Authorization-Timestamp: الطابع الزمني الحالي لـ Unix (UTC) للعميل
(request)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980
[ عملية طلب العميل ]
عندما يستجيب الخادم لطلب صالح، يتضمن الرؤوس التالية:
X-Response-Content-HMAC: تجزئة HMAC (نص الاستجابة بالكامل، الطابع الزمني الحالي لـ Unix (UTC)، ومفتاح HMAC السري)
X-Response-Content-TimeStamp: الطابع الزمني الحالي لـ Unix (UTC)
(response)
HTTP/2 200 OK
Date: Fri, 29 Mar 2024 06:50:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 52
X-Response-Content-HMAC: 529c33aac3e33bf2a95d534f8b3ac61dee2ed79232d729e571dc669417a1a2ae
X-Response-Content-TimeStamp: 1711663027
Connection: close
{"result": "ok", "users": "test", "sub": 2840345654}
[ عملية الاستجابة ]
Server response HMAC verification successful
--------------
Response timestamp: 2024-03-29T09:25:31
Current time: 2024-03-29T09:25:31
Time difference: 0
X-Authorization-Timestamp) الذي أرسله العميل في رأس الطلب مع وقت الخادم الحالي. إذا وقع الطابع الزمني خارج إطار زمني معين، يمكن للخادم تجاهل الطلب.إذا وجدت هذا مفيدًا، فيرجى منح "نجمة" 🌟 لدعم المزيد من التحسينات.