From fd66b39bb688470db55991630d32d63ef8353279 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Tue, 18 Aug 2026 12:00:00 +0000 Subject: [PATCH] docs(issues): #0103 - a wiki login without a group ends in silence Decision sorb, after diagnosing why @apo could not reach the wiki. apo logs in fine; the account exists since 2026-08-16 and was used again today. It is in no group, and wiki-anwender has zero members, so the wiki is effectively admin-only and every non-admin who ever tried met the same wall. Three deliberate settings compose into a dead end: OIDC self-registration creates the account, autoEnrollGroups is empty so it gets no group, and Guests was stripped to no permissions while the only rule for home belongs to wiki-anwender. Default deny then applies to every path including the start page - the user sees nothing rather than a reason, and at the current log level nothing records the attempt either. Same class as the mrtc outage: healthy, green, unusable, silent. The issue asks for a decision rather than assuming one: auto-enroll into wiki-anwender (the population is already curated by the invitation token, and betrieb/* stays admin-only through default deny), or keep per-person curation and make the dead end speak. Acceptance is a real login, not a config diff. Co-Authored-By: Claude Opus 5 --- STATUS.md | 5 +- ...103-wiki-zugang-ohne-gruppe-endet-stumm.md | 88 +++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md diff --git a/STATUS.md b/STATUS.md index a1ec78a..20e6de4 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,9 +2,9 @@ -## Issues (62 open, 34 closed) +## Issues (63 open, 34 closed) -Verteilung: M1 16 · M2 16 · M3 4 · M4 11 · M5 15 +Verteilung: M1 17 · M2 16 · M3 4 · M4 11 · M5 15 | Issue | Status | Meilenstein | Priorität | Title | |---|---|---|---|---| @@ -70,6 +70,7 @@ Verteilung: M1 16 · M2 16 · M3 4 · M4 11 · M5 15 | [0100](docs/issues/0100-threadnet-web-13-asset-pfade-tragen-weiterhin-element-themes-e.md) | open | M4 | low | Asset-Pfade tragen weiterhin "element" (themes/element/…) | | [0101](docs/issues/0101-threadnet-call-4-kaputtes-paket-0-19-2-threadnet-6-in-der-regi.md) | open | M4 | low | Kaputtes Paket 0.19.2-threadnet.6 in der Registry — Herkunft ungeklärt | | [0102](docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md) | open | M1 | medium | DMARC der Plattform-Zone `axion1337.chat` steht auf p=none — und gehört IONOS, nicht uns | +| [0103](docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md) | open | M1 | medium | Wiki: Anmeldung ohne Gruppe endet stumm — `wiki-anwender` hat null Mitglieder | ## Active design docs (0) diff --git a/docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md b/docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md new file mode 100644 index 0000000..01d8cac --- /dev/null +++ b/docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md @@ -0,0 +1,88 @@ +--- +type: issue +id: "0103" +status: open +created: 2026-08-18 +milestone: M1 +priority: medium +projekt: gitops +related: + - "docs/issues/0049-wikijs-oidc-rollen-abschottung.md" + - "docs/adr/0014-wikijs-loest-docusaurus-ab.md" +--- +# Wiki: Anmeldung ohne Gruppe endet stumm — `wiki-anwender` hat null Mitglieder + +> Aufgefallen 2026-08-18, weil `@apo` nicht ins Wiki kam. Die Einzelfrage ist ein +> Handgriff; das Issue führt den Teil, der bleibt. + +## Befund (gemessen am laufenden System) + +`@apo` **meldet sich erfolgreich an** und landet in keiner Gruppe: + +| Prüfung | Ergebnis | +|---|---| +| Wiki-Nutzer für apo | vorhanden (id 6), angelegt 2026-08-16, letzter Login 2026-08-18 17:21 | +| Identität belegt | OIDC-Subjekt `2fafe38b…` = apos `upstream_oauth_links`-Eintrag in MAS | +| Gruppen dieses Nutzers | **keine** | +| Gruppe `wiki-anwender` (id 4) | existiert, **0 Mitglieder** | +| Gruppe `authentik Admins` (id 3) | 1 Mitglied (sorB) | + +Die Gruppen-Übernahme selbst funktioniert — sonst wäre sorB nicht automatisch in +`authentik Admins` gelandet. Es fehlt die Mitgliedschaft, sonst nichts. + +## Warum daraus Stille wird + +Drei bewusste Einzelentscheidungen ergeben zusammen eine Sackgasse: + +1. `selfRegistration: True` auf der OIDC-Strategy — der erste Login **legt ein + Konto an**, ohne dass jemand etwas tun muss. +2. `autoEnrollGroups: []` — dieses Konto bekommt **keine** Gruppe. +3. `Guests` wurde per Konfig-Job auf `permissions: []`, `pageRules: []` gesetzt, + und die einzige Regel für `home` gilt nur für `wiki-anwender` (#0049). + +Ergebnis: Für einen Nutzer ohne Gruppe greift **auf jedem Pfad** Default-Deny, die +Startseite eingeschlossen. Er sieht kein „du brauchst eine Freigabe", sondern nichts. +Betrieblich ist es genauso still: Bei der aktuellen Log-Stufe steht in den +Wiki-Logs nur der Git-Sync — ein Login ohne Gruppe hinterlässt keine Zeile, kein +Zähler, keine Meldung. Niemand erfährt, dass jemand vor der Tür stand. + +**Das betrifft nicht nur apo.** `wiki-anwender` hat null Mitglieder: Das Wiki ist +derzeit faktisch Admin-only, und jeder Nicht-Admin, der es je versucht hat, hat +dasselbe erlebt. + +Dieselbe Klasse wie der `mrtc`-Ausfall: alles grün, Dienst gesund, benutzen kann +es keiner — und nichts meldet es. + +## Zu entscheiden + +**Empfehlung: `autoEnrollGroups` auf `wiki-anwender` setzen** (eine Zeile in +`apps/production/wikijs-config.py`, der Job ist idempotent und re-runnable). +Begründung: Wer sich über Authentik anmelden kann, ist bereits kuratiert — der +Zugang setzt einen Einladungstoken voraus. Die Kuratierung findet dort statt, nicht +noch einmal im Wiki. `/anwender` ist ausdrücklich die Anwenderfläche, und `betrieb/*` +bleibt über Default-Deny weiterhin admin-only; die Abschottung aus #0049 bleibt also +erhalten, sie verschiebt nur ihre Grenze auf die Stelle, die sie wirklich trennt. + +**Alternative, falls die Kuratierung pro Person gewollt ist:** Mitgliedschaft +bleibt Handarbeit in Authentik — dann muss aber die Sackgasse sprechen, sonst +wiederholt sich der Fall bei jedem neuen Nutzer. + +Beides schließt sich nicht aus; die Rückmeldung ist auch bei Auto-Enrollment +sinnvoll, weil sie den Fall „Gruppe später entzogen" abdeckt. + +## Acceptance + +- Ein Nutzer ohne Sonderrechte, der sich neu anmeldet, **kommt an die Anwenderdoku + heran oder erfährt im Klartext, was ihm fehlt** — nachgewiesen an einem echten + Login, nicht an der Konfiguration. +- `betrieb/*` bleibt für ihn gesperrt (Gegenprobe, sonst ist die Abschottung + aufgeweicht statt verschoben). +- Der Fall „angemeldet, aber ohne Gruppe" ist **erkennbar**: mindestens eine + Logzeile oder ein Zähler, damit der nächste Fall nicht wieder erst auffällt, + wenn sich jemand beschwert. +- `@apo` kommt rein (die auslösende Frage — kein Ersatz für die Punkte oben). + +## Sofortmaßnahme, unabhängig davon + +apo in Authentik der Gruppe `wiki-anwender` hinzufügen; greift beim nächsten Login +automatisch, ohne Eingriff im Wiki. Das ist eine Rechtevergabe und liegt bei sorb.