Table des matières

Authentification à une API REST par clé

Il y plusieurs façons de le faire, selon la complexité dont on a besoin. On peut simplement générer une clé d'API, garder le hash de cette clé et la comparer avec ce qui est reçu dans les requêtes.

On peut aussi avoir une clé d'API avec un secret. Le secret permet de signer la requête et on donne la clé d'API en clair pour que le fournisseur de l'API puisse retrouver le secret dans une base de données. Le fournisseur recalcule la signature et si elle est la même que celle reçu, la requête est authentifiée.

Salt

Des octets au hasard de 32-bits serait suffisant, on peut en utiliser de 64-bit. What is the optimal length for user password salt?

const SALT_FACTOR = 5;
 
bcrypt.genSalt(SALT_FACTOR, (err, salt) => { });

Secret

Sert à créer une signature, par exemple avec la requête. Voir un exemple là : Authenticating Requests Using the REST API.

On peut utiliser :

var secretKey = uuid.v4();

Note: On peut utiliser NanoID au lieu de uuid.v4.

API Key

Longueurs suggérées : octets de 32, 40 ou 64 selon l'utilisation, on aurait donc une clé de 256-bits minimalement.

Stocker le hash de la clé.

Packages node

Sources