Autorisation Machine-to-Machine
Authentifiez vos services backend ou scripts daemon sans interaction utilisateur.
Quand utiliser ce flux ?
Utilisez le Flux Client Credentials quand :
- Vous avez un service backend (daemon, tâche cron, outil CLI)
- Aucun utilisateur humain n'est présent pour se connecter
- L'application accède à ses propres ressources, pas aux données d'un utilisateur spécifique
Note : Ce flux contourne l'écran de connexion. L'application s'authentifie directement en utilisant son client_id et client_secret.
Prérequis
- Créez un Client Confidentiel dans le tableau de bord SyAuth (sélectionnez « Machine-to-Machine » ou « Application Web Classique »).
- Assurez-vous d'avoir le
client_idet leclient_secret. - Activez le type de grant
client_credentialspour votre application (si applicable).
Étape 1 : Demander un Access Token
Faites une requête POST directement vers le point de token :
- curl
- Python
- Node.js
curl -X POST https://api.syauth.com/e/v1/oauth/token/ \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=VOTRE_CLIENT_ID" \
-d "client_secret=VOTRE_CLIENT_SECRET" \
-d "scope=openid"
import requests
response = requests.post("https://api.syauth.com/e/v1/oauth/token/", data={
"grant_type": "client_credentials",
"client_id": "VOTRE_CLIENT_ID",
"client_secret": "VOTRE_CLIENT_SECRET",
"scope": "openid"
})
tokens = response.json()
print(tokens['access_token'])
const response = await fetch('https://api.syauth.com/e/v1/oauth/token/', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: 'VOTRE_CLIENT_ID',
client_secret: 'VOTRE_CLIENT_SECRET',
scope: 'openid'
})
});
const tokens = await response.json();
console.log(tokens.access_token);
Étape 2 : Utiliser le Token
La réponse contiendra un access_token (mais généralement pas de refresh_token, car vous pouvez simplement en demander un nouveau à tout moment en utilisant les identifiants client).
{
"access_token": "eyJhbG...",
"token_type": "Bearer",
"expires_in": 3600
}
Utilisez ce token pour appeler les APIs protégées :
curl https://api.syauth.com/e/v1/oauth/userinfo/ \
-H "Authorization: Bearer ACCESS_TOKEN"
Notes de Sécurité Importantes
- ⚠️ N'EXPOSEZ JAMAIS votre
client_secretdans le code frontend (React, Vue, applications mobiles). Ce flux est strictement réservé aux backends sécurisés. - Si votre
client_secretest compromis, faites-en une rotation immédiatement dans le tableau de bord.