Recommandations JWT

Il faut utiliser des clés RSA pour la signature.

Il faut instaurer une rotation rĂ©guliĂšre et automatique des clĂ©s. Les clĂ©s publiques doivent ĂȘtre publiĂ©es automatiquement Ă©galement.

Etant donnĂ© que la rotation doit avoir une durĂ©e plus longue que la durĂ©e de vie des tokens, il faut rĂ©duire la durĂ©e de vie des tokens. (E.g. : l’implĂ©mentation OpenID Connect de Google semble appliquer une rotation de 3 Ă  4 jours mais je recommanderais une durĂ©e encore plus courte)

Pour réduire les risques, utilisez de nombreuses clés.

IdĂ©alement, les clĂ©s secrĂštes ne devraient ĂȘtre manipulĂ©es que par des services dĂ©diĂ©s hautement sĂ©curisĂ©s avec des mĂ©canismes de monitoring avancĂ©s type HSM (Hardware Security Module) ou KMS (Key Management Service).

Azure / AWS / GCP KMS

Exemple d'utilisation NodeJS / AWS

Hashicorp's Vault Transit keys

...et non pas en simple KV Secret Engine

​https://www.vaultproject.io/api/secret/transit#sign-data

JWT comme mécanisme complémentaire

Les tokens JWT peuvent ĂȘtre utilisĂ©s comme mĂ©canisme complĂ©mentaire d’un mĂ©canisme de token classique. On peut wrapper des tokens dans un token JWT afin de vĂ©rifier rapidement leur validitĂ© et leur expiration avant de le vĂ©rifier auprĂšs d’une base de donnĂ©es ou d’un tiers.