Auto-recovery van Exact Online refresh tokens voor datacontainers

Go to English version

Leer in onderstaande uitleg meer over de autorisaties op specifiek Exact Online en hoe Invantive Cloud u helpt bij het eenvoudig oplossen en voorkomen van autorisatieproblemen vanuit de website.

Onderstaande uitleg gaat specifiek over het Exact Online platform en is niet van toepassing op andere platformen. De uitleg is toepasselijk voor alle Exact Online landen.

Honderden of een paar Exact Online administraties naar Power BI

Met Invantive Cloud is een eenvoudige en krachtige online software-omgeving om een paar of honderden Exact Online administraties te ontsluiten richting Power BI, Power Query voor Excel, Azure Data Factory of bijvoorbeeld naar Python, Ruby of Google Functions. Ruim 1.000 Exact Online tabellen zijn beschikbaar uit zowel de XML als REST-API’s dankzij Invantive SQL, wat het meest uitgebreide en flexibele assortiment aan mogelijkheden voor kleine en grote gebruikers oplevert in één Exact Online database.

Pull-principe

Exact Online is intensief bezig de beveiliging van haar platform op een hoger niveau te brengen, maar het ontwerp van de keuzes is niet altijd optimaal voor gebruik in bedrijfskritische toepassingen. Dit leidt regelmatig tot storingen bij het inlezen van Exact Online data in Microsoft Power BI (zowel Microsoft Power BI Desktop als PowerBI.com) met de Invantive Cloud connector op basis van OData.

In tegenstelling tot veel andere oplossingen is de Invantive Cloud connector gebaseerd op het pull-principe: de verwerking vindt pas plaats zodra gegevens opgevraagd worden. Dit leidt tot vrijwel real-time data op Exact Online, ook voor zelfs duizenden administraties. En voorkomt dankzij uitgebreide SQL-optimalisaties dat Exact Online onnodig belast wordt. Pas zodra data vaker opgevraagd wordt uit Exact Online wordt gebruik gemaakt van slimme zogenaamde “caches” voor een hogere verwerkingssnelheid.

Nadeel van het pull-principe is dat elke verstoring in de hele keten tot/met Exact Online qua dienstverlening meteen zichtbaar is voor eindgebruikers. Invantive SQL biedt daarom veel unieke features om dergelijke storingen onder de motorkap op te lossen en toch zoveel mogelijk real-time data te bieden. Op termijn zal mogelijkerwijs een faciliteit geboden worden waarbij Invantive Cloud vooraf klaarzet zodat de impact van eventuele instabiliteit van het Exact Online ecosysteem op de processen verkleind wordt.

Storingen op de loer bij het laden van Exact Online

Bij het laden van de database uit Exact Online wordt gebruik gemaakt van zogenaamde “refresh tokens”; dat zijn applicatiespecifieke wachtwoorden die het resultaat zijn van het doorlopen van de zogenaamde “Code Grant Flow” volgens de OAuth-specificaties. De levensduur van een refresh token is op Exact Online extreem kort in tegenstelling tot de reguliere langdurige geldigheid (zie RFC6749 section 6).

Bovendien vereist Exact Online een rotatie van refresh tokens uit een cirkel met maar één element; de OAuth-specificatie noemt dat “challenging”.

Het refresh token wordt gebruikt om een kort-geldig wachtwoord te verkrijgen; het zogenaamde “access token”. Het access token is in die zin vergelijkbaar met het zogenaamde “ticket” van Kerberos, dat bijvoorbeeld gebruikt kan worden voor bedrijfsnetwerken met onder andere Windows en UNIX.

Het access token heeft een korte levensduur, meestal tussen enkele minuten en een uur. Op Exact Online is dat maximaal 10 minuten. Dit is anders dan bij Kerberos; op Kerberos behelst een ticket meestal een sessie. Voor efficiënt gebruik op het web is een sessie echter onhandig; vandaar de voor Exact Online vaste levensduur van maximaal 10 minuten.

Op dit moment (oktober 2021) vindt een uitrol plaats achtereenvolgens per Exact Online land waarbij niet vaker dan eens per 9,5 minuten een nieuw kort-geldig wachtwoord verkregen kan worden. Bij een hogere verversingsfrequentie is het eenvoudig om een ongeldig refresh token te verkrijgen (zie Itgeneor362 Voor toegang tot de OAuth-gegevensbron is een geldig access token vereist. Het access token kon niet worden verkregen). Dit scenario is te herkennen aan het eenmalig optreden van de foutmelding:

itgeneor364
Access to the OAuth data source requires a valid access token.
The access token could not be acquired. Exact Online requires at least 9,5 minutes between each request for a new access token.
Please try again in … seconds.
Please log on to Invantive Cloud and renew the authorization on the data container with alias ‘eol’ of the database ‘…’.

Al met al liggen er doorlopend potentiële storingen op de loer zoals “Old refresh token used” en “Token is not allowed, because of invalid or empty chainId”.

Refresh Token Storingen Herstellen

Momenteel (oktober 2021) treedt bij circa 1 op de 1.000 autorisaties een probleem op. Het wegnemen van de oorzaken ligt vaak buiten de invloedssfeer van Invantive, maar we pogen met telkens slimmere algoritmes de frequentie en de impact beperkt te houden, zonder dat de prestaties er significant onder leiden.

In de Invantive Bridge Online Monitoring en in Power BI kan daardoor een foutmelding ontstaan over de refresh tokens. De volgende foutcodes geven aan dat handmatig ingrijpen nodig is omdat de ketting van geldige refresh tokens is doorbroken:

itgeneor361
Exact Online requires at least 9,5 minutes between each request for a new acces token.

itgeneor362
Only one refresh token can be active on Exact Online for a combination of client ID and user. The lifetime of a refresh token on use is 10 minutes. The request for data was made using an expired refresh token or refresh token that was not activated by a subsequent API call.
Please renew authorisation in the user interface.

itgenoda494
An obsoleted refresh token can not be used on Exact Online.
Please generate a new refresh token and make sure to keep the chain intact.

Een dergelijke storing is handmatig eenvoudig te herstellen via de Invantive Cloud website. De stappen voor het herstellen van een fout in de refresh tokens op Exact Online staan beschreven op Eenvoudiger autorisaties vernieuwen op Invantive Cloud (itgenscr652, itgeneor559 of itgeneor562), maar de basis is het kiezen van het cijfer dat het aantal databases die reparatie behoeven weergeeft:

Storingen voorkomen van Exact Online refresh tokens

Het herstellen van de autorisatie op Exact Online zoals beschreven vereist een handmatige stap. In een beperkt aantal toepassingen kan dat een onacceptabel continuïteitsrisico zijn, bijvoorbeeld doordat er storing is in de keten die herhaaldelijk zorgt voor autorisatieproblemen.

Voor dergelijke noodscenario’s kan Invantive Cloud met de zogenaamde “Auto Recovery” de omgeving herstellen op basis van de gegevens van een gebruiker. Deze gebruikersgegevens worden gebruikt om indien nodig de autorisatie volledig te doorlopen en zo een volledig nieuw refresh token samen te stellen (zie RFC 6749, section 4.1).

Invantive Cloud legt hiervoor de gebruikersnaam, wachtwoord en het zogenaamde TOTP-secret vast achter Invantive Data Guard in een versleutelde omgeving. De versleuteling is op basis van een organisatiespecifieke sleutel zoals beschreven in, maar zelfs dan nog brengt het opbergen van gevoelige gegevens altijd risico’s en is een afweging tussen beveiliging en robuustheid.

Bij gebruik van auto-recovery raden we de volgende maatregelen aan om risico’s te verkleinen:

  • Gebruik - net zoals bij de reguliere rapportage - een aparte Exact Online gebruiker met alleen de benodigde rechten.
  • Gebruik een sterk wachtwoord voor deze gebruiker.
  • Neem kennis van enkele adviezen rondom Exact Online op Hardening Exact Online security for applications.

Om de risico’s verder te verkleinen worden ingevoerde gegevens voor auto-recovery na 30 dagen verwijderd. Het is nodig om ze elke 30 dagen opnieuw in te voeren als de auto-recovery in stand moet blijven. In een volgende release zal dit interval variabel instelbaar gemaakt worden tussen zinvolle onder- en bovengrenzen.

De auto-recovery kan ingesteld worden via deze meest rechtse knop op de datacontainer, net zoals het vernieuwen van autorisaties via de linkerknop:

Auto-recover Exact Online refresh token

Na selectie van de knop kunnen de aanmeldgegevens van de aangewezen Exact Online gebruiker ingevuld worden:

Exact Online user credentials

Het TOTP-secret wordt gebruikt om automatisch de verificatiecode te bepalen. Uitleg over het opvragen van het TOTP-secret is te vinden in Omzeil Exact Online 2FA om te voorkomen dat u elke tien minuten uw pincode moet invoeren.