synops/docs/erfaringer/authentik_oidc.md
vegard 69997c6e87 Rydd sidelinja-referanser: generiske AI-nivåer + synops.no-domener
AI-aliaser: sidelinja/rutine → synops/low, sidelinja/resonering →
synops/high. Fire nivåer i LiteLLM: low/medium/high/extreme.
Oppdatert i: LiteLLM config, PG ai_job_routing, all Rust-kode
(maskinrommet + 5 CLI-verktøy).

Domener: sidelinja.org → synops.no i fallback-URLer, health-sjekker,
LiveKit WSS, bandwidth-logger, docs/erfaringer, docs/setup,
reference/server-state, .env.example.

Docker container-navn (sidelinja-*) beholdes — styrt av
COMPOSE_PROJECT_NAME i /srv/synops/.env, endres separat ved behov.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:22:22 +00:00

1.9 KiB

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:

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://<domain>/auth/callback/<provider-id>. For oss: https://ws.synops.no/auth/callback/authentik.

Denne MÅ være registrert som redirect-URI i Authentik sin OAuth2-provider. Verifiser via:

SELECT _redirect_uris FROM authentik_providers_oauth2_oauth2provider
WHERE client_id = '<din client_id>';

Tips: Legg til en regex-variant for lokal utvikling: http://localhost:\d+/auth/callback/authentik med matching_mode: "regex".