Gå til innhold

Følg med på OAuth-token i Konti Connect

Integrasjoner som bruker OAuth (f.eks. Visma Business NXT via Visma Connect) lagrer et access token + refresh token i wv_Integration (VismaConnectOAuthService.cs:291, dbscript.sql:6484). Konti Connect-listen viser en visuell indikator når en integrasjon har OAuth-token lagret, og varsler med gul farge når tokenet utløper om mindre enn 7 dager.

Selve rotering / re-autorisering gjøres i dag ikke fra UI-et i Konti Connect — det finnes ingen "Re-autoriser"-knapp i hverken listen, detaljvisningen eller editoren. Denne siden beskriver hvordan du oppdager at et token nærmer seg utløp, og hva du må gjøre når det skjer.

Tilgang

Hvem Hva trengs
Rolle Administrator (modulen er admin-only)
Modul Konti Connect — moduleId: 27 (konti-connect-routing.module.ts:18)

Modulen er beskyttet av ActivateService + ModuleGuard på alle ruter (/konti-connect/integrations, /new, /:id, /:id/edit).

Hvor du ser OAuth-status

På integrasjonslisten (/konti-connect/integrations) viser hvert kort/listerad en chip når integrasjonen har lagret et OAuth-token (integration-list.component.html:254):

Tilstand Hvordan ser den ut
Token gyldig Grønn chip (chip-success) med tekst "OAuth" + hengelås-ikon (bi-shield-lock) og grønn hake (bi-check-circle-fill)
Token utløper innen 7 dager Gul chip (chip-warning) med samme tekst, men varseltrekant (bi-exclamation-triangle-fill)
Ingen OAuth-token lagret Ingen chip vises

Logikken som styrer varselet ligger i isTokenExpiringSoon(...) (integration-list.component.ts:674) — den sammenligner oAuthTokenExpiresAt mot dagens dato og returnerer true når det er mindre enn 7 dager igjen.

Merk: Selve tokenet sendes aldri til UI. Endepunktene returnerer IntegrationSafeResponse, som lister opp hvilke felter klienten får se — OAuthAccessToken og OAuthRefreshToken er ikke blant dem. Statusen chipen leser, hasOAuthToken, regnes ut på serveren før tokenet forkastes, og følges av utløpsdatoen oAuthTokenExpiresAt (IntegrationSafeResponse.cs).

Hva detaljvisningen viser

Detaljvisningen (/konti-connect/integrations/:id) har fanene Oversikt, Konfigurasjon, Historikk og — avhengig av integrasjonstype — Bilagslogg, Nye og endrede timer, Nye bilag til bokføring, Nye bilag til Business NXT og Bilagshistorikk (integration-detail.component.html:40). Det er ingen Auth-fane og ingen "Re-autoriser"-knapp i denne visningen.

Konfigurasjon-fanen viser kun innholdet av ConfigurationJson som read-only JSON — ikke felter for å starte ny OAuth-flyt.

Slik håndterer du et utløpt eller snart-utløpt token

  1. Åpne Konti Connect → Integrasjoner og se etter gule OAuth-chiper i listen.
  2. Hvis integrasjonen har feilet med 401 / Unauthorized i kjøringsloggen, åpne integrasjonen og bytt til Historikk-fanen for å bekrefte feilårsaken.
  3. Sjekk hva slags integrasjon det er:
    • Visma Business NXT (Visma Connect) — backend har VismaConnectOAuthService som støtter Authorization Code Grant med PKCE og refresh token-flyt (VismaConnectOAuthService.cs:30). I praksis må re-autorisering i dag bestilles fra Konti (drift), siden det ikke finnes en UI-knapp som kaller GetAuthorizationUrl.
    • Andre OAuth-integrasjoner (Microsoft Graph, Abax m.fl.) — disse bruker ConfigurationJson (klient-ID, klient-hemmelighet, tenant) som settes i editoren. Når hemmeligheten roteres hos leverandøren, åpne integrasjonen med blyantikonet ("Rediger") og oppdater verdiene i Konfigurasjon-fanen i editoren (integration-editor.component.html:375-391).
  4. Etter at tokenet er fornyet, trykk play-ikonet på integrasjonsraden ("Kjør") for å bekrefte at synkroniseringen virker (integration-list.component.html:258).
  5. Verifiser at OAuth-chipen blir grønn igjen og at Sist kjørt-tidspunktet oppdateres.

editoren med "Konfigurasjon (JSON)"-feltet åpent, slik at admin ser hvor klient-hemmelighet oppdateres

Vanlige problemer

Problem Forklaring / hva du sjekker
OAuth-chip vises ikke på integrasjonen hasOAuthToken er false — det er aldri lagret et token. Integrasjonen kjører enten uten OAuth (API-nøkkel i ConfigurationJson) eller har aldri vært autorisert.
Chipen er gul ("Utløper snart") oAuthTokenExpiresAt er mindre enn 7 dager unna (integration-list.component.ts:674). Forbered re-autorisering før den blir rød i loggen.
Integrasjonen feiler med 401 selv om chipen er grønn Tokenet er lagret, men kan være tilbakekalt hos leverandøren, eller scope kan ha endret seg. Sjekk Historikk-fanen for konkret feilmelding.
Jeg finner ingen "Re-autoriser"-knapp Det finnes ingen slik knapp i UI-et i dag. Visma Business NXT-flyten ligger som backend-tjeneste men er ikke eksponert via knapp i Konti Connect. Kontakt Konti for re-autorisering inntil videre.

Sikkerhetshensyn

  • OAuthAccessToken og OAuthRefreshToken lagres i wv_Integration og sendes aldri til klienten — UI får kun hasOAuthToken (boolean) og oAuthTokenExpiresAt (dato). Dette er en positivliste: IntegrationSafeResponse bestemmer hvilke felter som i det hele tatt kan nå nettleseren, så en ny kolonne i wv_Integration blir ikke sendt ut før noen legger den til der med vilje.
  • Hemmeligheter i ConfigurationJson (passord, API-nøkler, JWT-token) blankes til null i svaret før det forlater serveren — feltnavnet beholdes, kun verdien fjernes — og ClientSecret lagres kryptert i AuthenticationJson framfor i konfigurasjonen. Editoren viser derfor slike felter som tomme når du åpner en eksisterende integrasjon — la dem stå tomme for å beholde den lagrede verdien, og skriv inn en ny verdi kun når du faktisk roterer hemmeligheten.
  • Unntak fra "tom betyr behold": for hemmeligheter inne i en liste (for eksempel flere leverandører i samme konfigurasjon) kan serveren av og til ikke med sikkerhet avgjøre hvilket lagret element et endret listeelement svarer til. Da avvises lagringen med en feilmelding i stedet for å gjette. I de fleste tilfeller løses dette ved å skrive inn hemmeligheten på nytt for det aktuelle elementet — men hvis to eller flere lagrede listeelementer har helt likt innhold bortsett fra hemmeligheten, holder ikke det alene: fjern duplikatet (eller gi elementene et felt som skiller dem, f.eks. et unikt navn) i en egen lagring før du fortsetter.
  • Behandle redigeringen av en integrasjon som en sensitiv handling og rapporter mistanke om lekkasje til Konti.

Relaterte sider