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.