Itgenoda219 op Exact Online: Error "Old refresh token used." bij verbinden

Voer de volgende stappen uit om een “Old refresh token used” melding op te lossen:

  • Vraag of Invantive namens jullie een ontheffing wil aanvragen.
  • Vermeld hierbij client ID en Exact Online land.
  • De doorlooptijd is normaliter 1 werkdag.

Achtergrond

Onder andere Exact Online maakt gebruik van OAuth2 voor de authenticatie van gebruikers. OAuth2 werkt op basis van applicaties (“clients”) die toegang willen hebben tot data op een platform. Elke applicatie / client heeft zijn eigen instellingen. Een deel van de instellingen kan een applicatie-eigenaar instellen via het Exact Online Apps Center. Een deel van de instellingen kan alleen Exact Online zelf instellen.

De Invantive producten ondersteunen een aantal mechanismen voor OAuth2 authenticatie op Exact Online:

  • Implicit Grant Flow: voor gebruik op apparaten die niet onder controle van de applicatie-eigenaar staan. Geen client secret nodig, maar wel elke tien minuten opnieuw aanmelden en in geval van Exact Online helaas ook elke tien minuten opnieuw de TOTP-verificatiecode opnieuw aflezen en invullen.
  • Code Grant Flow: voor gebruik op apparaten die onder controle van de applicatie-eigenaar staan. Vereist een applicatiespecifiek geheim “client secret” plus een langer geldig wachtwoord, het “refresh token”. Met het client secret en het refresh token kan een kort geldig wachtwoord gegenereerd worden, het “acces token”.
  • Authorization Code Grant Flow: deze flow wordt niet op Exact Online aangeboden momenteel en komt alleen voor op andere ondersteunde platformen.
  • Client Credentials Flow: deze flow wordt niet op Exact Online aangeboden momenteel en komt alleen voor op andere ondersteunde platformen.

On-premise Producten

De grotere en intensievere gebruikers van Invantive SQL draaien vaak de Invantive producten op eigen apparatuur. De programmatuur draait vaak “unattnended”, bijvoorbeeld gedurende de nacht, bijvoorbeeld met Invantive Data Hub. Er is dan geen persoon aanwezig om de verificatiecode in te voeren of het wachtwoord.

Deze bedrijven moeten zelf een applicatie (client) registreren omdat de OAuth2 security guidelines het delen van de client secret tussen Invantive en deze gebruiker afraden (met goede reden). Het komt nog veel voor dat 3rd party apps het client secret delen met gebruikers, maar vanuit ons informatiebeveiligingsbeleid is dat niet acceptabel.

De registratie van een client gebeurt via het Exact Online App Center. We raden aan om het woord “Invantive” op te nemen in de clientnaam. De meestgebruikte redirect URL is https://clientredirect.invantive.com, maar een eigen redirect URL is ook mogelijk zolang het maar HTTPS is. Na opslaan van de client wordt de unieke ID van de applicatie getoond, de zogenaamde “client ID”. Ook komt het client secret beschikbaar.

Via pre-authenticatie op Invantive Cloud kan de inhoud van een settings*.xml bestand gegenereerd worden. Hierin zit een redirect URL, client secret en een refresh token. Het settings*.xml bestand bevat alle informatie die nodig is om gegevens op te halen uit Exact Online. Behandel het daarom met als een wachtwoord en zorg voor bijvoorbeeld fysieke serverbeveiliging en sterke wachtwoorden voor toegang.

De Invantive SQL engine onder Invantive Data Hub zal het refresh token en client secret omzetten in een access token. Dit token kan gedurende 10 minuten gebruikt worden en vervalt daarna. Dat is identiek aan de Implicit Grant Flow eerder genoemd. Met het refresh token en client secret kan weer een nieuw access token aangevraagd worden. Als onderdeel hiervan kan een nieuw refresh token teruggegeven worden. Echter, Exact stond ook het gebruik van alle voorgaande refresh tokens toe voor het genereren van het access token.

Echter, sinds enkele jaren heeft Exact een verandering doorgevoerd in haar implementatie van de Code Grant Flow. Bij het uitreiken van een nieuw access token en nieuw refresh token vervielen alle voorgaande refresh tokens qua geldigheid. Recentelijk is daar blijkbaar het criterium aan toegevoegd dat het access token ook 1x gebruikt moet zijn om gegevens op te halen.

Echter, als men met meerdere parallel lopende processen via dezelfde Exact Online gebruiker en client applicatie data wil ophalen, dan moeten tussentijds, doorlopend en 100% betrouwbaar deze aanmeldgegevens geactualiseerd worden.

Old refresh token

In de grotere enterprise opstellingen is dit niet voor een realistisch bedrag realiseerbaar, bijvoorbeeld door de benodigde beveiligingsmaatregelen om dergelijke gevoelige gegevens te transporteren. Maar ook omdat niet alle nodes of processen elkaar kennen of mogen kennen.

Om die reden is het mogelijk om bij Exact een ontheffing aan te vragen voor specifieke client ID’s. Deze ontheffing zorgt er voor dat de oude refresh tokens als voorheen bruikbaar blijven.

Om dit probleem op te lossen: vraag of Invantive namens jullie een ontheffing wil aanvragen.

Op dit moment loopt een discussie over het gebruik van de oude refresh tokens. Naar verwachting biedt het huidige algoritme voor het vervangen van access en refresh tokens te weinig mogelijkheden om dit risico op een veilige manier op te vangen. Een security-aanpak waarbij de security maar deels verbeterd wordt en daardoor elders concessies gedaan moeten worden aan de beveiliging wordt niet wenselijk geacht.

Meer informatie over de melding “Old refresh token used” is te vinden in Exact Online foutmelding: Old refresh token used.

Terzijde: TOTP-Verificatiecode bij Implicit Grant Flow

De Implicit Grant Flow wordt veel gebruikt in combinatie met Invantive Query Tool en Invantive Control for Excel.

Helaas wordt het beleidsmatig niet toegestaan om de TOTP-verificatiecode voor 30 dagen het zwijgen op te leggen zoals op de Exact Online site. Alhoewel er negatieve consequenties zijn voor het beveiligingsniveau zijn er wel een aantal workarounds zoals beschreven in: