Pourquoi OAuth2 plutôt qu'une clé API
Une clé API est simple mais a deux limites : pas de scope (la clé peut tout faire), pas d'expiration native (un vol expose toute la base jusqu'à rotation manuelle). OAuth2 résout les deux en émettant des access tokens à durée limitée et à scope restreint.
Les flux OAuth2 pertinents
| Flux | Cas d'usage | Quand l'utiliser |
|---|---|---|
| Client Credentials | Serveur à serveur | Intégrateur, partenaire |
| Authorization Code | App avec utilisateur | Apps mobile agence |
| PKCE | App publique sans secret | Apps mobile, SPA |
Flux Client Credentials en détail
Réponse :
Format de réponse
{"access_token": "...", "token_type": "Bearer", "expires_in": 3600, "scope": "properties:read leads:write"}
curl -X POST 'https://api.ts-immo.org/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'client_id=cid_a1b2c3' \
-d 'client_secret=cs_d4e5f6...' \
-d 'scope=properties:read leads:write'Les scopes Ts-Immo
- properties:read — lecture des biens.
- properties:write — création et modification (réservé partenaires CRM).
- medias:read — lecture des photos et médias.
- leads:read — lecture des leads remontés.
- leads:write — envoi de leads vers le CRM.
- webhooks:manage — configuration des webhooks.
Rotation et sécurité
Les client_secret peuvent être rotés à tout moment depuis app.ts-immo.org. Une période de double validité de 7 jours permet la rotation sans interruption. Les access tokens expirent toutes les heures par défaut et ne peuvent pas être étendus indéfiniment.
Stockage et bonnes pratiques
- Ne jamais commiter un client_secret dans Git.
- Stocker les secrets dans un coffre (Vault, AWS Secrets Manager, Doppler).
- Régénérer les access tokens proactivement avant expiration.
- Surveiller les logs d'accès dans le dashboard Ts-Immo.
Quand préférer la clé API simple
Pour un usage mono-client (votre propre site web), une clé API Bearer suffit largement. OAuth2 prend tout son sens quand vous distribuez l'accès à plusieurs intégrateurs ou que vous bâtissez une marketplace d'apps.