Aller au contenu principal

Authentification

L'API téo utilise OAuth 2.0 pour sécuriser les accès. Cette page explique comment obtenir et utiliser un token d'authentification.

Fonctionnement

Vos identifiants

Après en avoir fait la demande au support client, vous recevrez :

IdentifiantDescription
CLIENT_IDIdentifiant unique de votre application
CLIENT_SECRETClé secrète (à ne jamais exposer publiquement)
TEO_IDIdentifiant de l'instance téo à laquelle accéder
Sécurité

Ne partagez jamais votre CLIENT_SECRET. Ne le commitez pas dans votre code source et ne l'exposez pas côté client (navigateur).

Obtenir un Access Token

Requête

POST https://auth.teoapp.fr/oauth2/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic {credentials_base64}

grant_type=client_credentials&scope=target-entity:{TEO_ID}

Le header Authorization contient vos identifiants encodés en Base64 au format CLIENT_ID:CLIENT_SECRET.

Exemples

# Encoder les credentials
CREDENTIALS=$(echo -n "votre_client_id:votre_client_secret" | base64)

# Obtenir le token
curl -X POST https://auth.teoapp.fr/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Basic $CREDENTIALS" \
-d "grant_type=client_credentials&scope=target-entity:votre_teo_id"

Réponse

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 599,
"scope": "target-entity:votre_teo_id",
"token_type": "Bearer"
}
ChampDescription
access_tokenLe token JWT à utiliser pour vos appels API
expires_inDurée de validité en secondes (10 minutes)
token_typeToujours Bearer

Utiliser le token

Ajoutez le token dans le header Authorization de toutes vos requêtes :

GET https://teoapp.fr/api/production/dossiers
Authorization: Bearer {access_token}
Accept: application/ld+json
Bonne pratique

Réutilisez le même token jusqu'à son expiration plutôt que d'en demander un nouveau à chaque requête.

Gestion de l'expiration

Le token expire après 10 minutes. Voici comment gérer le renouvellement automatique :

let tokenCache = { token: null, expiresAt: 0 };

async function getToken() {
// Renouveler 1 minute avant expiration
if (tokenCache.token && Date.now() < tokenCache.expiresAt - 60000) {
return tokenCache.token;
}

const response = await fetchNewToken();

tokenCache = {
token: response.access_token,
expiresAt: Date.now() + response.expires_in * 1000
};

return tokenCache.token;
}

Erreurs courantes

ErreurCauseSolution
invalid_clientIdentifiants incorrectsVérifiez CLIENT_ID et CLIENT_SECRET
invalid_scopeTEO_ID invalideVérifiez l'identifiant de votre instance
expired_tokenToken expiréDemandez un nouveau token

Pour plus de détails, consultez la page Gestion des erreurs.