
Exemple d'implémentation HMAC et explication
Un exemple d'implémentation de HMAC de base (Hash-based Message Authentication Code) utilisant Flask en Python.
Le code d'authentification de message basé sur le hachage (HMAC) fournit au serveur et au client chacun une clé privée connue uniquement de ce serveur et de ce client spécifiques. Le client crée un HMAC unique, ou hachage, par requête au serveur en hachant les données de la requête avec les clés privées et en l'envoyant dans le cadre de la requête. Ce qui rend HMAC plus sécurisé que le code d'authentification de message (MAC) est que la clé et le message sont hachés en deux étapes distinctes.

Lorsqu'un client envoie une requête au serveur, il inclut les en-têtes suivants :
X-Authorization-Content-HMAC : hachage HMAC (URI complète de la requête, horodatage Unix actuel (UTC) et clé secrète HMAC)
X-Authorization-Timestamp : horodatage Unix actuel du client (UTC)
(requête)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980
[ Processus de la requête client ]
Lorsque le serveur répond à une requête valide, il inclut les en-têtes suivants :
X-Response-Content-HMAC : hachage HMAC (corps complet de la réponse, horodatage Unix actuel (UTC) et clé secrète HMAC)
X-Response-Content-TimeStamp : horodatage Unix actuel (UTC)
(réponse)
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}
[ Processus de réponse ]
Vérification HMAC de la réponse du serveur réussie
--------------
Horodatage de la réponse : 2024-03-29T09:25:31
Heure actuelle : 2024-03-29T09:25:31
Différence de temps : 0
Si vous trouvez cela utile, veuillez cliquer sur "⭐" pour soutenir les améliorations futures.