Reference¶
Fejlkoder¶
| HTTP | Betydning |
|---|---|
| 400 | Ugyldig X-VDX-AuthorizationId |
| 401 | Manglende/ugyldig JWT, eller manglende påkrævede claims |
| 403 | Lokal bruger inaktiv/slettet i VDX, eller autorisation tilhører ikke brugeren |
| 404 | Gruppe ikke fundet (/v1/user/group, /v1/user/group/parents) |
| 429 | Rate limit overskredet (100 requests/minut pr. IP) |
| 500 | Uventet serverfejl |
Health-endpoints er undtaget rate limiting: /health/live, /health/ready, /health/startup.
Typiske 401-beskeder¶
(External brugere på profil- og gruppe-endpoints.)
Autorisationsskift — specifikke fejl¶
| HTTP | Besked |
|---|---|
| 400 | { "message": "Invalid X-VDX-AuthorizationId" } |
| 403 | { "message": "Authorization does not belong to user" } |
Anbefalet klient-adfærd¶
| Status | Kontekst | Handling |
|---|---|---|
401 |
Efter login / løbende | Forsøg token-refresh; ellers logud |
403 |
GET /v1/user efter login |
Logud — bruger deaktiveret eller ingen adgang |
403 |
Autorisationsskift | Afvis skift, behold eksisterende kontekst |
404 |
Gruppe-endpoints | Vis "gruppe ikke fundet", log til support |
429 |
Alle | Backoff og retry med delay |
500 |
Profil-kald | Fail closed — logud, vis fejlbesked |
Se Best practices for fail-closed princip og Kodeeksempler: Fejlhåndtering.
Se også JWT-claims og Autorisationsskift.
JWT-claims¶
Access token udstedes af VDX Keycloak efter succesfuldt login. API'et validerer JWT (signatur, audience, lifetime) og læser claims til brugeropløsning.
| Claim | Påkrævet |
|---|---|
dk:medcom:email |
Altid (eneste obligatoriske claim på /v1/user/authorizations) |
dk:medcom:organisation_id |
/v1/user, /v1/user/group, /v1/user/group/parents |
dk:medcom:video:role |
External brugere på profil- og gruppe-endpoints |
dk:medcom:user_type |
Valgfri (default external hvis mangler) |
sid |
Valgfri (session-id; genereres hvis mangler) |
azp |
Valgfri (applikationsidentitet — Keycloak client id) |
Audience¶
JWT aud skal matche det forventede audience for miljøet. Stage default: organisation-audience. Bekræft værdi ved adgangsanmodning hos MedCom.
Roller¶
Roller fra dk:medcom:video:role (kan være multi-valued eller komma-separeret) mappes til roles-feltet i /v1/user-responsen. Brug responsen til adgangstjek — ikke rå claims alene.
Typiske management-roller:
vdx-adminmanagement-adminmanagement-readonly
Avancerede external user-scenarier¶
For scenarier med dk:medcom:organisation_data (organisations-træer fra IdP) eller auto-gruppeoprettelse for ukendte external brugere, kontakt MedCom på vdx@medcom.dk — disse er typisk forhåndsaftalt pr. integration.
Se også Autentificering, Fejlkoder og UserProfile-modellen.
Flow-diagrammer¶
Mønster A — backend-til-API (anbefalet)¶
sequenceDiagram
participant Browser
participant WebApp as WebApp backend
participant Keycloak
participant AuthAPI as VDXAuthAPI
Note over Browser,AuthAPI: 1) Login
Browser->>WebApp: GET /login
WebApp->>Keycloak: redirect (PKCE: code_challenge)
Keycloak->>Browser: Login-side
Browser->>Keycloak: Credentials
Keycloak->>WebApp: redirect callback (code)
WebApp->>Keycloak: POST token (code_verifier)
Keycloak->>WebApp: access_token + refresh_token
WebApp->>AuthAPI: GET /v1/user (Bearer)
AuthAPI->>WebApp: Brugerprofil (kontekst, roles)
WebApp->>Browser: Sæt auth cookie + redirect til app
Note over Browser,AuthAPI: 2) Efterfølgende requests (cache 30s i memory)
Browser->>WebApp: GET /sider-i-din-app
WebApp->>AuthAPI: GET /v1/user (Bearer + evt. X-VDX-AuthorizationId)
AuthAPI->>WebApp: Brugerprofil
WebApp->>Browser: Render side
Note over Browser,AuthAPI: 3) Autorisationsskift
Browser->>WebApp: Vælg autorisation (id)
WebApp->>AuthAPI: GET /v1/user (X-VDX-AuthorizationId: id)
AuthAPI->>WebApp: Profil i ny kontekst (isAuthorization=true)
WebApp->>Browser: Persister valgt autorisation (cookie/session)
Note over Browser,AuthAPI: 4) Slip autorisation
Browser->>WebApp: Slip autorisation
WebApp->>AuthAPI: GET /v1/user (uden header)
AuthAPI->>WebApp: Basis-profil (egen organisation)
WebApp->>Browser: Fjern persisteret autorisation
Mønster B — browser-til-API (CORS-baseret)¶
sequenceDiagram
participant Browser
participant Keycloak
participant AuthAPI as VDXAuthAPI
Browser->>Keycloak: PKCE login (oidc-bibliotek)
Keycloak->>Browser: access_token + refresh_token
Browser->>AuthAPI: GET /v1/user (Bearer)
AuthAPI->>Browser: Brugerprofil
Browser->>AuthAPI: GET /v1/user/authorizations
AuthAPI->>Browser: Autorisationsliste
Note over Browser,AuthAPI: Ved autorisationsskift sættes X-VDX-AuthorizationId
Browser->>AuthAPI: GET /v1/user (med header)
AuthAPI->>Browser: Opdateret profil i ny kontekst
Se også Login-flow, Integrationsmønstre og Autorisationsskift.