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
- Le service envoie ses identifiants (client ID + secret) à l’endpoint token d’Auris
- Auris vérifie les identifiants et contrôle les scopes demandés
- Auris émet un access token JWT de courte durée avec les scopes accordés
- Le service inclut le token dans l’en-tête
Authorization: Bearerlors 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
JavaScript
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
- Device Authorization Flow — Pour les appareils sans navigateur
- Token Exchange — Délégation et impersonation de tokens