medium complexity extracted Security & Audit Confidence: 100%
3
Components
2
Shared
0
User Stories
Yes
Analyzed

Description

Session Management gives Org Admins and Global Admins (within their scope) visibility into and control over active user sessions across the platform. It lists each session's user, role, device hint, last-active timestamp, and origin product (Mobile App or Admin Web Portal), and provides one-click revocation to terminate compromised or unwanted sessions immediately. The feature consumes session state exposed by the Authentication Module through a stable contract, never reaching into the module's internals. Revocations propagate by invalidating refresh tokens so that the next access-token refresh fails cleanly, ending the session without disruptive global sign-outs of unrelated users.

Sources & reasoning

Session Management is taxonomy-required at line 380 and operationally grounded by the auth model at lines 152 and 205, which explicitly call out admin-initiated revocation and refresh-token rotation. Not in MVP scope at lines 244-247, so target_release resolves to Core Product per rule 3.

  • Session Management | Session Management Page [ui] | Session Service [service] | Session Store [data]
  • Issues short-lived access tokens plus rotating refresh tokens; sessions survive silently across token expiry and end cleanly when the refresh chain is broken.
  • Session revocation (sign-out, forced expiry, admin-initiated)

Analysis

Business Value

Session management is the operational lever that makes the rest of the security model actionable. Without it, an Org Admin who suspects a compromised account or a peer mentor who has left the organization has no way to force a sign-out - they can only deactivate the account and wait for tokens to expire. Visible session control closes that gap and is a standard expectation for any platform handling sensitive personal data. It also supports the workforce realities of the peer-mentor model: volunteers leave, devices are lost, certifications expire, and coordinators sometimes need to revoke access immediately rather than at the next natural session boundary. Pairing session control with audit logging gives organizations the tooling they need to demonstrate to Bufdir and to their members that access to data is actively governed.

Implementation Notes

Implementation uses the user_sessions store populated by the Authentication Module and exposes a Session Service in the admin portal that queries and revokes sessions through the auth module's stable API contract - no direct reads of auth-internal tables. The Session Management Page provides filtering by user, role, product, and last-active time, with bulk-revoke for incident response. Revocation must work uniformly for mobile (token rotation invalidated, app falls back to login on next refresh) and admin portal (HTTP-only cookie session invalidated server-side). Every revoke action writes an audit entry through the Audit Service. Tenant scoping ensures Org Admins see only their own organization's sessions; Global Admins see cross-org sessions only via the explicit support-access flag.

Quality Assurance

Organization Administrator (primary) · Global Administrator (same flow, when time-bounded support access is granted)
1
Scenarios
6
UAT Steps
18
A11y Annotations
3
Role Boundaries
Organization Administrator

Organization Administrator

Quick UAT

  1. Logg inn i Admin-portalen som Organisasjonsadministrator og åpne Sikkerhet og revisjon → Øktadministrasjon.
  2. Søk opp en bruker i din organisasjon som har minst én aktiv økt, og åpne brukerens øktliste.
  3. Velg en aktiv økt og inspiser enhet, IP, sist aktiv-tidspunkt og innloggingsmetode.
  4. Trykk Tilbakekall økt og bekreft i dialogen.
  5. Bekreft at økten forsvinner fra Aktive økter-listen og at en oppføring vises i revisjonsloggen.
  6. Åpne Øktpolicy, sett maksimal øktvarighet til 8 timer og lagre.

Quick UAT — Accessibility

  1. Logg inn i Admin-portalen som Organisasjonsadministrator og åpne Sikkerhet og revisjon → Øktadministrasjon.
    • Screen reader Sideoverskrift 'Øktadministrasjon' annonseres; navigasjonslandemerke og hovedinnhold er identifiserbare.
    • Keyboard / focus Sidebar-element nås med Tab; Enter åpner siden.
    • Focus visibility Synlig fokusring følger aktiv navigasjon.
  2. Søk opp en bruker i din organisasjon som har minst én aktiv økt, og åpne brukerens øktliste.
    • Screen reader Søkefeltet annonseres med label 'Søk bruker'; antall treff annonseres når listen oppdateres.
    • Keyboard / focus Søkefelt nås med Tab; piltaster navigerer resultatrader; Enter åpner brukerens øktliste.
    • Live region 'X aktive økter funnet for brukeren.'
  3. Velg en aktiv økt og inspiser enhet, IP, sist aktiv-tidspunkt og innloggingsmetode.
    • Screen reader Hver tabellrad annonserer kolonneoverskrift + verdi (Enhet, IP, Sist aktiv, Metode).
    • Keyboard / focus Piltaster navigerer tabellrader; Enter eller mellomrom utvider raddetaljer.
    • Focus visibility Synlig fokusring på valgt rad; ekspandert detaljpanel mottar fokus.
  4. Trykk Tilbakekall økt og bekreft i dialogen.
    • Screen reader Dialog annonseres som modal; standardfokus på Avbryt, ikke på destruktiv handling.
    • Focus visibility Bekreftelsesdialog mottar fokus; fokus fanges i dialog til den lukkes.
    • Touch target ≥ 24×24 CSS px på Tilbakekall- og Bekreft-knapper.
  5. Bekreft at økten forsvinner fra Aktive økter-listen og at en oppføring vises i revisjonsloggen.
    • Live region 'Økten ble tilbakekalt. Brukeren er logget ut fra enheten.'
    • Contrast Statusbadge 'Tilbakekalt' bruker både ikon og tekst, ikke kun farge (4.5:1).
  6. Åpne Øktpolicy, sett maksimal øktvarighet til 8 timer og lagre.
    • Keyboard / focus Tallfelt og enhetsvelger nås sekvensielt; Enter på Lagre sender skjemaet.
    • Focus visibility Feltlabel 'Maks øktvarighet (timer)' programmatisk knyttet til input; valideringsfeil knyttes via aria-describedby.
    • Live region 'Øktpolicy lagret.'
    • Zoom Skjemaet er brukbart ved 200 % zoom uten horisontal scroll.

Role Boundaries

3 role(s) must NOT access this feature
  • Peer Mentor (Likeperson)

    Logger ikke inn i Admin-portalen. Deep-link til /admin/security/sessions returnerer 403 og menyen finnes ikke i mobilappen.

  • Coordinator (Koordinator)

    Logger ikke inn i Admin-portalen. Deep-link til /admin/security/sessions returnerer 403.

  • Global Administrator

    Uten aktiv tidsbegrenset support-tilgang er Øktadministrasjon for målorganisasjonen ikke tilgjengelig; deep-link returnerer 403 og handlinger logges som avvist i revisjonsloggen.

Expected End State

Den valgte økten er fjernet fra Aktive økter-listen, brukerens enhet er logget ut ved neste API-kall, og en revisjonsoppføring med admin-identitet, tidsstempel og berørt bruker er skrevet til organisasjonens audit log. Eventuelle policyendringer er lagret per organisasjon.

User Stories

No user stories have been generated for this feature yet.