⚠️ Cet article est en cours de rédaction. Certaines informations sont susceptibles d'évoluer avant la date de migration.
À partir du 6 juillet 2026, les tokens générés par l'ancien système d'authentification seront invalidés et il ne sera plus possible de générer un token d'accès à l'API Axeptio via username et password. Les endpoints d'authentification actuels seront dépréciés. Tout appel à l'API Axeptio présentant un token généré par l'ancien système sera rejeté — que ce soit depuis du code, un script, ou un outil comme Postman. Si c'est votre cas, mettez à jour votre méthode d'authentification en suivant les étapes ci-dessous.
Qui est concerné ?
Cet article vous concerne si vous appelez l'API Axeptio directement — depuis du code, un script, vos intégrations, un outil comme Postman, ou tout autre client HTTP.
Si vous utilisez uniquement l'administration Axeptio et n'appelez pas l'API directement, aucune action n'est requise de votre part.
Pourquoi ce changement ?
Axeptio migre son système d'authentification vers Frontegg. Cette migration pose les fondations techniques nécessaires aux nouvelles fonctionnalités à venir : MFA, Social login, SSO et logs d'audit. Elle permet également d'offrir une gestion des accès API plus robuste et plus fine.
Ce qui se passe si vous ne migrez pas
À partir du 6 juillet 2026, tout appel à l'API Axeptio utilisant l'ancien système d'authentification sera rejeté. Vos bandeaux de consentement déjà publiés ne sont pas affectés — seules les intégrations programmatiques cessent de fonctionner.
Ce qui change
Le endpoint pour obtenir un Bearer token change, ainsi que les credentials associés, mais la façon de transmettre le token dans vos requêtes reste la même — un header Authorization: Bearer. Ce qui change en pratique : vous obtenez désormais un token de courte durée auprès de Frontegg en échange d'un Client ID et d'un Secret, plutôt qu'un token longue durée via votre username et votre password.
Avant | Après | |
Endpoint | POST /auth/local/signin | POST /identity/resources/auth/v2/api-token |
Credentials | username + password | clientId + secret |
Durée de vie | Longue durée | 1 heure — à rafraîchir automatiquement |
Transmission | Authorization: Bearer | Authorization: Bearer (inchangé) |
Présentation globale du flow
Générer un accès API dans l'administration Axeptio. Vous obtenez un Client ID et un Secret qui identifient votre intégration.
Demander un token à Frontegg en présentant votre Client ID et votre Secret. Vous recevez en retour un
access_token, valide pendant 1 heure.Appeler l'API Axeptio en incluant ce token dans le header
Authorization: Bearerde chaque requête.Rafraîchir le token avant son expiration via le endpoint dédié, sans avoir à ressaisir le Client ID et le Secret.
1. Générer un accès API dans l'administration Axeptio
Connectez-vous à l'administration Axeptio.
Allez dans Paramètres → Accès API.
Copiez votre Client ID et votre Secret.
Conservez votre secret en lieu sûr — il ne peut pas être récupéré après génération. Ne l'écrivez jamais en dur dans votre code : stockez-le dans une variable d'environnement.
2. Demander un token à Frontegg
Appelez le endpoint Frontegg avec votre Client ID et votre Secret. Vous recevez en retour un access_token, valide pendant 1 heure, et un refresh_token pour le renouveler.
curl -X POST https://<FRONTEGG_URL>/identity/resources/auth/v2/api-token \
-H "Content-Type: application/json" \
-d '{ "clientId": "<CLIENT_ID>", "secret": "<SECRET>" }'
Réponse :
{
"access_token": "eyJ...",
"refresh_token": "dGhp...",
"expires_in": 3600
}
3. Appeler l'API Axeptio
Incluez l'access_token dans le header Authorization de chaque requête.
curl https://api.axept.io/v1/<ENDPOINT> \
-H "Authorization: Bearer <ACCESS_TOKEN>"
4. Rafraîchir le token avant expiration
Le token expire après 1 heure. Avant chaque appel, vérifiez s'il est encore valide et rafraîchissez-le si nécessaire — sans avoir à ressaisir le Client ID et le Secret.
curl -X POST https://<FRONTEGG_URL>/identity/resources/auth/v2/api-token/token/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<REFRESH_TOKEN>" }'
Exemples de code complets
TypeScript / Node.js
const FRONTEGG_URL = process.env.FRONTEGG_URL;
interface FronteggTokenResponse {
access_token: string;
refresh_token: string;
expires_in: number;
}
async function getAccessToken(clientId: string, secret: string): Promise<FronteggTokenResponse> {
const res = await fetch(`${FRONTEGG_URL}/identity/resources/auth/v2/api-token`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientId, secret }),
});
if (!res.ok) throw new Error(`Token fetch failed: ${res.status}`);
return res.json();
}
async function refreshAccessToken(refreshToken: string): Promise<FronteggTokenResponse> {
const res = await fetch(`${FRONTEGG_URL}/identity/resources/auth/v2/api-token/token/refresh`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ refreshToken }),
});
if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
return res.json();
}
async function callAxeptioApi(accessToken: string, path: string) {
const res = await fetch(`https://api.axept.io/v1${path}`, {
headers: { Authorization: `Bearer ${accessToken}` },
});
if (!res.ok) throw new Error(`API call failed: ${res.status}`);
return res.json();
}
// Utilisation avec rafraîchissement automatique
let token = await getAccessToken(CLIENT_ID, SECRET);
let expiresAt = Date.now() + token.expires_in * 1000;
async function apiCall(path: string) {
// Rafraîchit 60 s avant expiration pour éviter les rejets en cas de latence réseau
if (Date.now() > expiresAt - 60_000) {
token = await refreshAccessToken(token.refresh_token);
expiresAt = Date.now() + token.expires_in * 1000;
}
return callAxeptioApi(token.access_token, path);
}
Python
import time
import requests
FRONTEGG_URL = "https://<FRONTEGG_URL>"
AXEPTIO_API = "https://api.axept.io/v1"
def get_access_token(client_id: str, secret: str) -> dict:
res = requests.post(
f"{FRONTEGG_URL}/identity/resources/auth/v2/api-token",
json={"clientId": client_id, "secret": secret},
)
res.raise_for_status()
return res.json()
def refresh_access_token(refresh_token: str) -> dict:
res = requests.post(
f"{FRONTEGG_URL}/identity/resources/auth/v2/api-token/token/refresh",
json={"refreshToken": refresh_token},
)
res.raise_for_status()
return res.json()
def call_axeptio_api(access_token: str, path: str) -> dict:
res = requests.get(
f"{AXEPTIO_API}{path}",
headers={"Authorization": f"Bearer {access_token}"},
)
res.raise_for_status()
return res.json()
# Utilisation avec rafraîchissement automatique
token = get_access_token(CLIENT_ID, SECRET)
expires_at = time.time() + token["expires_in"]
def api_call(path: str) -> dict:
global token, expires_at
if time.time() > expires_at - 60: # 60 s de marge pour éviter les rejets en cas de latence réseau
token = refresh_access_token(token["refresh_token"])
expires_at = time.time() + token["expires_in"]
return call_axeptio_api(token["access_token"], path)
Référence
La liste complète des endpoints disponibles est documentée dans le Swagger Axeptio.
Besoin d'aide ?
Si vos appels échouent après la migration, si vos credentials ne sont pas visibles dans l'administration Axeptio, ou pour toute autre question, n'hésitez pas à contacter notre équipe support.
