Vanaf 6 juli 2026 worden tokens die door het oude authenticatiesysteem zijn gegenereerd ongeldig en is het niet langer mogelijk om een API-toegangstoken voor Axeptio te genereren via gebruikersnaam en wachtwoord. De huidige authenticatie-eindpunten zullen verouderd zijn. Elke oproep naar de Axeptio API met een token die door het oude systeem is gegenereerd, wordt afgewezen — of dit nu vanuit code, een script of een tool als Postman is. Mocht dit op u van toepassing zijn, werk dan uw verificatiemethode bij door de onderstaande stappen te volgen.
Op wie is dit van toepassing?
Dit artikel is van toepassing op u als u de Axeptio API rechtstreeks aanroept — vanuit code, een script, uw integraties, een tool als Postman of een ander HTTP-client.
Als u alleen het Axeptio-beheer gebruikt en de API niet rechtstreeks aanroept, is geen actie van uw zijde vereist.
Waarom deze wijziging?
Axeptio migreert zijn verificatiesysteem naar Frontegg. Deze migratie vormt de technische basis voor komende nieuwe functies: MFA, Social login, SSO en auditlogs. Het maakt ook robuuster en fijnmaziger API-toegangsbeheer mogelijk.
Wat gebeurt er als u niet migreert
Vanaf 6 juli 2026 wordt elke oproep naar de Axeptio API met het oude verificatiesysteem afgewezen. Uw al gepubliceerde toestemmingsbanners worden niet beïnvloed — alleen programmatische integraties zullen niet langer werken.
Wat verandert
Het eindpunt voor het verkrijgen van een Bearer-token verandert, evenals de bijbehorende gegevens, maar de manier waarop u het token in uw aanvragen doorgeeft, blijft hetzelfde — een Authorization: Bearer header. Wat in de praktijk verandert: u verkrijgt nu een token met korte levensduur van Frontegg in ruil voor een Client ID en Secret, in plaats van een token met lange levensduur via uw gebruikersnaam en wachtwoord.
Voor | Na | |
Eindpunt | POST /auth/local/signin | |
Gegevens | gebruikersnaam + wachtwoord | clientId + secret |
Levensduur | Lange levensduur | 1 uur — automatisch vernieuwen |
Verzending | Authorization: Bearer | Authorization: Bearer (ongewijzigd) |
Overzicht van de flow
Genereer een API-toegang in het Axeptio-beheer. U ontvangt een Client ID en Secret die uw integratie identificeren.
Vraag een token aan bij Frontegg met uw Client ID en Secret. U ontvangt een
access_tokenterug, geldig voor 1 uur.Roep de Axeptio API aan door dit token in de
Authorization: Bearerheader van elke aanvraag op te nemen.Vernieuw het token voordat het verloopt via het daarvoor bestemde eindpunt, zonder uw Client ID en Secret opnieuw in te voeren.
1. Genereer een API-toegang in het Axeptio-beheer
Dit gedeelte is beschikbaar vanaf 6 juli 2026. Het is niet mogelijk om uw gegevens van tevoren te genereren.
Meld u aan bij het Axeptio-beheer.
Ga naar Instellingen → API-toegang.
Kopieer uw Client ID en Secret.
Bewaar uw secret op een veilige plaats — het kan niet worden hersteld na generatie. Zet het nooit hardcoded in uw code: sla het op in een omgevingsvariabele.
2. Vraag een token aan bij Frontegg
Roep het Frontegg-eindpunt aan met uw Client ID en Secret. U ontvangt een access_token terug, geldig voor 1 uur, en een refresh_token om het te vernieuwen.
curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token \
-H "Content-Type: application/json" \
-d '{ "clientId": "<CLIENT_ID>", "secret": "<SECRET>" }'
Reactie:
{
"access_token": "eyJ...",
"refresh_token": "dGhp...",
"expires_in": 3600
}
3. Roep de Axeptio API aan
Voeg de access_token in de Authorization header van elke aanvraag in.
curl https://api.axept.io/v1/<ENDPOINT> \
-H "Authorization: Bearer <ACCESS_TOKEN>"
4. Vernieuw het token voordat het verloopt
Het token verloopt na 1 uur. Controleer voordat u een oproep doet of het nog geldig is en vernieuw het indien nodig — zonder uw Client ID en Secret opnieuw in te voeren.
curl -X POST https://login.axept.io/identity/resources/auth/v2/api-token/token/refresh \
-H "Content-Type: application/json" \
-d '{ "refreshToken": "<REFRESH_TOKEN>" }'
Volledige codevoorbeelden
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://login.axept.io"
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)
Naslaggids
De volledige lijst met beschikbare eindpunten is gedocumenteerd in de Axeptio Swagger.
Hulp nodig?
Mochten uw oproepen na de migratie mislukken, als uw gegevens niet zichtbaar zijn in het Axeptio-beheer, of voor andere vragen, neem dan gerust contact op met ons ondersteuningsteam.
