Aller au contenu principal

Gestion des Tokens

Découvrez les tokens d'accès, les refresh tokens et la gestion du cycle de vie des tokens.


Types de Tokens

Access Token (Token d'Accès)

PropriétéDescription
ButAutoriser les requêtes API
FormatJWT (JSON Web Token)
Durée de vie1 heure (configurable)
UtilisationAuthorization: Bearer <token>

Refresh Token

PropriétéDescription
ButObtenir de nouveaux tokens d'accès
FormatChaîne opaque
Durée de vie30 jours (configurable)
UtilisationÉchange contre un nouveau token d'accès

ID Token

PropriétéDescription
ButContient les claims d'identité de l'utilisateur
FormatJWT
Durée de vieIdentique au token d'accès
UtilisationRécupérer les informations utilisateur

Réponse Token

Quand vous échangez un code d'autorisation contre des tokens :

{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "def50200a1b2c3d4e5f6...",
"id_token": "eyJhbGciOiJSUzI1NiIs...",
"scope": "openid profile email"
}

Claims de l'Access Token

Payload JWT décodé :

{
"iss": "https://api.syauth.com/e/v1",
"sub": "user-uuid",
"aud": "votre-client-id",
"exp": 1703123456,
"iat": 1703119856,
"scope": "openid profile email",
"email": "[email protected]"
}
ClaimDescription
issÉmetteur du Token (SyAuth)
subSujet (ID utilisateur)
audAudience (votre client ID)
expTimestamp d'expiration
iatTimestamp d'émission (Issued at)
scopeScopes accordés

Rafraîchir les Tokens

Les tokens d'accès ont une courte durée de vie (généralement 1 heure). Quand ils expirent, utilisez le refresh token pour en obtenir un nouveau.

Le SDK gère automatiquement le rafraîchissement des tokens en arrière-plan avant que le token d'accès n'expire.

const { getAccessToken } = useSyAuth();

// Cette fonction garantit un token valide, en rafraîchissant si nécessaire
const token = await getAccessToken();

Révocation de Token

Quand un utilisateur se déconnecte, vous devez révoquer ses tokens.

curl -X POST https://api.syauth.com/e/v1/oauth/revoke \
-d "token=TOKEN_A_REVOQUER" \
-d "token_type_hint=access_token" \
-d "client_id=VOTRE_CLIENT_ID"

Stockage de Token

Recommandé : Cookies HttpOnly

Le SDK stocke les tokens dans des cookies HttpOnly sécurisés :

CookieFlags
syauth_access_tokenHttpOnly, Secure, SameSite=Lax
syauth_refresh_tokenHttpOnly, Secure, SameSite=Lax

Non Recommandé : localStorage

Ne stockez jamais les tokens dans localStorage car :

  • Accessible au JavaScript (vulnérable XSS)
  • Persiste à travers les sessions du navigateur
  • Pas de contrôle d'expiration

Validation de Token

Vous pouvez valider les tokens en appelant l'endpoint autorisé ou en vérifiant la signature JWT localement.

Vérifiez simplement le token en l'utilisant pour récupérer les infos utilisateur. Si le token est invalide, cela retournera 401.

curl https://api.syauth.com/e/v1/oauth/userinfo \
-H "Authorization: Bearer <access_token>"

Gestion de l'Expiration des Tokens

Gestion Automatique SDK

Le SDK gère l'expiration automatiquement :

  1. Surveille l'expiration du token
  2. Rafraîchit 5 minutes avant l'expiration
  3. Met à jour les tokens stockés de manière transparente
  4. Ré-authentifie si le rafraîchissement échoue

Gestion Personnalisée

function MyComponent() {
const { getAccessToken, isAuthenticated } = useSyAuth();

const fetchData = async () => {
// getAccessToken() retourne un token valide ou rafraîchit si nécessaire
const token = await getAccessToken();

const response = await fetch('/api/data', {
headers: {
'Authorization': `Bearer ${token}`
}
});

return response.json();
};
}

Considérations de Sécurité

RisqueAtténuation
Vol de tokenUtilisez des cookies HttpOnly, expiration courte
Rejeu de tokenValidez les claims audience et issuer
Abus de refresh tokenRotation de token à l'utilisation
Attaques XSSN'exposez jamais les tokens au JavaScript

Prochaines Étapes