API Références

Authentification

Sécurisez vos requêtes API avec notre système d'authentification basé sur des headers.

Introduction

L'API CloudPaie utilise un système d'authentification basé sur des headers HTTP pour sécuriser l'accès aux endpoints. Chaque requête doit inclure des headers spécifiques qui permettent de vérifier l'identité de l'appelant et de s'assurer que la requête n'a pas été altérée.

Headers d'authentification

Toutes les requêtes à l'API CloudPaie doivent inclure les headers d'authentification suivants:

Headers requis
X-ID
Identifiant de l'API fourni dans le logiciel CloudPaie, encodé en base-64
Requis
X-SIGNATURE
HMAC256 de la chaîne concaténée (id-timestamp)
Requis
X-TIME
Timestamp actuel (en secondes depuis l'époque Unix)
Requis
La signature HMAC256 doit être générée en utilisant votre clé API secrète comme clé de chiffrement et la chaîne concaténée de "id-apikey-timestamp" comme message.

Génération de la signature

La signature est un élément crucial du processus d'authentification. Elle est générée en utilisant l'algorithme HMAC-SHA256 avec votre clé API secrète comme clé de chiffrement et une chaîne concaténée comme message.

Processus de génération de la signature
  1. Concaténez votre ID API et le timestamp actuel avec des tirets: id-timestamp
  2. Utilisez cette chaîne comme message pour l'algorithme HMAC-SHA256
  3. Utilisez votre clé API secrète comme clé de chiffrement
  4. Le résultat est votre signature, qui doit être incluse dans le header X-SIGNATURE

Exemples d'implémentation

JavaScript
Utilisation de crypto-js pour générer la signature
// Nécessite la bibliothèque crypto-js
// npm install crypto-js

import CryptoJS from 'crypto-js';

function generateAuthHeaders() {
  const apiId = 'votre_api_id';
  const apiKey = 'votre_api_key';
  const timestamp = Math.floor(Date.now() / 1000); //secondes
  
  // Encodage de l'ID en base-64
  const encodedId = btoa(apiId);

  // Création du message à signer
  const message = `${apiId}-${timestamp}`;

  // Retourne les headers d'authentification
  return {
    'X-ID': encodedId,
    'X-SIGNATURE': signature,
    'X-TIME': timestamp.toString()
  };
}

// Exemple d'utilisation avec fetch
async function callApi(endpoint, data) {
  const headers = {
    'Content-Type': 'application/json',
    ...generateAuthHeaders()
  };
  
  try {
    const response = await fetch(`https://api.cloudpaie.com/v1/${endpoint}`, {
      method: 'POST',
      headers,
      body: JSON.stringify(data)
    });
    
    return await response.json();
  } catch (error) {
    console.error('Erreur API:', error);
    throw error;
  }
}

Bonnes pratiques

  • Ne partagez jamais votre clé API secrète. Elle doit être stockée de manière sécurisée.
  • Utilisez HTTPS pour toutes les communications avec l'API.
  • Régénérez régulièrement vos clés API pour maintenir la sécurité.
  • Implémentez une gestion des erreurs robuste pour traiter les problèmes d'authentification.
  • Vérifiez que votre horloge système est synchronisée pour éviter les problèmes liés au timestamp.

Erreurs d'authentification

Codes d'erreur courants
401 Unauthorized
Authentification échouée. Vérifiez vos identifiants.
Headers invalides ou manquants
403 Forbidden
Accès refusé à la ressource demandée.
Permissions insuffisantes
419 Authentication Timeout
Le timestamp est trop ancien ou futur.
Problème de synchronisation