Skip to Content

Identifiants M2M (Client Credentials)

Le grant OAuth2 client_credentials permet aux services backend, aux scripts automatisés et aux cron jobs d’obtenir des access tokens sans interaction humaine. Ces tokens M2M (Machine-to-Machine) sont utilisés pour authentifier les appels API de service à service.


Comment ça Fonctionne

  1. Le service envoie ses identifiants (client ID + secret) à l’endpoint token d’Auris
  2. Auris vérifie les identifiants et contrôle les scopes demandés
  3. Auris émet un access token JWT de courte durée avec les scopes accordés
  4. Le service inclut le token dans l’en-tête Authorization: Bearer lors des appels API

Aucun utilisateur n’est impliqué — le service lui-même est le “principal” authentifié.


Configuration dans la Console

Crée une Application M2M

Va dans Console → Applications → Nouvelle Application et sélectionne Machine-to-Machine (M2M).

Assigne les Scopes

Dans l’onglet Permissions, assigne les scopes que ce service peut demander. Utilise le principe du moindre privilège — accorde uniquement les scopes nécessaires.

Copie les Identifiants

Depuis l’onglet Identifiants, copie :

  • Client ID
  • Client Secret (affiché une seule fois — conserve-le de manière sécurisée)

Implémentation

const AURIS_DOMAIN = 'https://auth.votredomaine.com' const CLIENT_ID = 'votre-client-id' const CLIENT_SECRET = process.env.AURIS_CLIENT_SECRET async function getM2MToken(scopes = []) { const response = await fetch(`${AURIS_DOMAIN}/api/auth/token`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'client_credentials', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, scope: scopes.join(' '), }), }) if (!response.ok) { throw new Error(`Requête de token échouée : ${response.status}`) } return response.json() } // Utilisation const { access_token, expires_in } = await getM2MToken(['read:users', 'write:logs']) // Appelle une API protégée const users = await fetch('https://api.votredomaine.com/users', { headers: { 'Authorization': `Bearer ${access_token}` }, }).then(r => r.json())

Mise en Cache des Tokens

Les tokens M2M ont une durée de vie courte (par défaut 1 heure). Mets-les en cache et réutilise-les jusqu’à expiration au lieu de demander un nouveau token à chaque appel API :

let cachedToken = null let tokenExpiresAt = 0 async function getToken() { if (cachedToken && Date.now() < tokenExpiresAt - 60_000) { return cachedToken // Réutilise le token mis en cache } const { access_token, expires_in } = await getM2MToken(['read:users']) cachedToken = access_token tokenExpiresAt = Date.now() + expires_in * 1000 return cachedToken }

Guides Associés