# 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

{% embed url="<https://azure.microsoft.com/en-us/services/key-vault/>" %}

{% embed url="<https://aws.amazon.com/kms/>" %}

{% embed url="<https://cloud.google.com/security-key-management>" %}

### Exemple d'utilisation NodeJS / AWS

{% embed url="<https://github.com/jonathankeebler/jwt-kms>" %}

### Hashicorp's Vault Transit keys

*...et non pas en simple KV Secret Engine*

<https://www.vaultproject.io/api/secret/transit#sign-data><br>

### 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide-api-rest.marmicode.fr/securite-des-apis-rest/j.w.t./recommandations-jwt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
