Files
management/docs/issues/0049-wikijs-oidc-rollen-abschottung.md
T

2.1 KiB

type, id, status, created, milestone, priority, area, related
type id status created milestone priority area related
issue 0049 done 2026-08-12 M4 medium security
docs/adr/0014-wikijs-loest-docusaurus-ab.md
docs/issues/0048-wikijs-in-der-suite-deployen.md

Wiki.js: Authentik-OIDC + Rollen und Abschottung

Problem / Motivation

Der Kern der Wiki.js-Entscheidung (ADR-0014): Zugang und Sichtbarkeit nach Authentik-Gruppe, was Docusaurus nicht konnte.

Acceptance

  • Authentik-OIDC als Login-Provider in Wiki.js (Gruppen-Claim gemappt) — nativer Wiki.js-Login, kein Forward-Auth. Authentik-Provider mit Redirect-URI https://wiki.axion1337.chat/login/<providerKey>/callback; Anwender und Admin rufen dieselbe URL auf, die Rolle entscheidet über Sicht/Bearbeiten.
  • Rollen über Gruppen:
    • Admins: schreiben (read+write) Betriebs- und Anwenderhandbücher.
    • Normale Nutzer: nur lesen — kein Schreiben.
  • Abschottung: Anwender sehen die Betriebsdoku nicht (Pfad-/Seiten-Regeln pro Gruppe, /betrieb/* nur für die Betriebs-Gruppe). Betrieb darf Anwenderdoku lesen.
  • Verifiziert: Anwender-Konto sieht /betrieb nicht (nicht 403 mit sichtbarem Link, sondern gar nicht in Navigation/Suche); Nicht-Admin kann nichts editieren; Admin kann beides bearbeiten.

Notes

⚠️ Braucht die konkreten Authentik-Gruppen von sorb: welche Gruppe = Betrieb, welche = Anwender, welche = Admin (Vorschlag: authentik Admins schreibt, wiki-betrieb liest Betrieb+Anwender, wiki-anwender liest nur Anwender). Zugangs- /Gruppenvergabe macht sorb selbst.

Erledigt 2026-08-13

Nativer Authentik-OIDC-Login live (hideLocal, Break-Glass /login?all). Rollen umgesetzt — statt der 3-Gruppen-Skizze gilt sorbs Vereinfachung „Betrieb = Admin": authentik Admins schreibt alles, wiki-anwender liest nur anwender/* + Startseite. Abschottung end-to-end verifiziert: ein Test-Konto nur in wiki-anwender bekommt auf JEDE betrieb/*-Seite HTTP 403 (Wiki.js checkAccess: match && !deny → Default-Deny), home + anwender/* liefern 200; Navigation/Suche filtern per checkAccess mit; Guests komplett gesperrt. → erledigt.