# Erfaring: Authentik OIDC-integrasjon ## 1. `profile.sub` er IKKE Authentik sin PostgreSQL-UUID Authentik sin OIDC `sub`-claim er en **SHA256-hash**, ikke UUID-kolonnen fra `authentik_core_user`. Eksempel: | Felt | Verdi | |---|---| | Authentik DB `uuid` | `0ac94e00-015b-4e78-9f32-269fa6ce3f44` | | OIDC `sub` claim | `6af61f43c6647a237cbb381ee7788376a9bc20299c2c06281d9954d763e854f0` | Bruk **alltid** `sub`-verdien fra OIDC som nøkkel i `users.authentik_id`. For å finne den riktige verdien for en bruker: logg inn og les `profile.sub` fra callback, eller sjekk JWT-tokenet. ## 2. `@auth/sveltekit` sin `user.id` er IKKE `profile.sub` `@auth/sveltekit` genererer sin egen interne UUID for `user.id` i JWT. Denne overlever ikke mellom sesjoner og matcher ingenting i vår database. For å bruke Authentik `sub` som bruker-ID: ```typescript callbacks: { jwt({ token, user, profile }) { if (user) token.id = user.id; if (profile?.sub) token.authentik_sub = profile.sub; return token; }, session({ session, token }) { if (session.user) { // Bruk Authentik sub, IKKE token.id session.user.id = (token.authentik_sub ?? token.id) as string; } return session; } } ``` `profile` er kun tilgjengelig i JWT-callbacken ved innlogging (ikke ved token-refresh), derfor må `authentik_sub` lagres i tokenet. **Referanse:** `frontend/src/auth.ts` ## 3. Redirect-URI i Authentik `@auth/sveltekit` bruker callback-URL `https:///auth/callback/`. For oss: `https://sidelinja.org/auth/callback/authentik`. Denne MÅ være registrert som redirect-URI i Authentik sin OAuth2-provider. Verifiser via: ```sql SELECT _redirect_uris FROM authentik_providers_oauth2_oauth2provider WHERE client_id = ''; ``` **Tips:** Legg til en regex-variant for lokal utvikling: `http://localhost:\d+/auth/callback/authentik` med `matching_mode: "regex"`.