Skip to content

feat(web): open access to any authenticated user, remove ZPA#132

Merged
obcode merged 1 commit into
mainfrom
feat/open-access-remove-zpa
Jul 22, 2026
Merged

feat(web): open access to any authenticated user, remove ZPA#132
obcode merged 1 commit into
mainfrom
feat/open-access-remove-zpa

Conversation

@obcode

@obcode obcode commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Was

Kein Login-Allowlist mehr: der Auth-Proxy (oauth2-proxy, auf hm.edu beschränkt) ist die einzige Zugangsgrenze. Jede authentifizierte Kennung kommt rein und arbeitet strikt als eigener Nutzer (Owner-Isolation unverändert). Kolleg:innen müssen nicht mehr von Hand eingetragen werden.

Die ZPA-Anbindung (Prüfungsamt) wird komplett entfernt, samt der Studierenden-Seite, die sie speiste. Deren Per-E-Mail-Lookup erlaubte jedem eingeloggten Nutzer, personenbezogene Daten (Name, Matrikelnummer, Geschlecht, Studiengang) zu beliebigen HM-Mails zu ziehen — genau der Grund, aus dem die Allowlist existierte. Ohne ZPA entfällt dieses Risiko, daher ist das Öffnen des Zugangs unbedenklich.

Änderungen

  • auth.go: Allowlist-Check raus; User aus X-Remote-User + X-Remote-Displayname. Nur fehlender Header ist noch 401.
  • Entfernt: web/zpa/, web/app/students.go, web/graph/students.graphqls+resolver, web/bootstrap/seed.go, web/db/users.go (die users-Collection war ausschließlich die Allowlist).
  • app.go/bootstrap.go: GetUserByEmail, zpa-Feld/-Param, seedUsers, EnsureUserIndexes weg; gqlgen neu generiert.
  • Tests neu geschrieben; Doku + Deploy-Config (seedusers/zpa) bereinigt.

Kompatibilität

Kein Breaking-Change-Marker: bestehende Configs laufen weiter, übrig gebliebene auth.seedusers/zpa.*-Keys werden ignoriert. Die verwaiste users-Collection kann bei Gelegenheit aus Mongo gedroppt werden.

Checks

gofmt · go vet ./... · go vet -tags=integration ./... · go test ./... · golangci-lint run — alle grün.

⚠️ Koordiniert mit dem glabs.gui-PR (Studierenden-Seite entfernt, Codegen neu gezogen). Beide zusammen mergen.

🤖 Generated with Claude Code

There is no login allowlist anymore. The auth proxy (oauth2-proxy, restricted
to the hm.edu domain) is the sole access boundary: anyone it authenticates is
let in and acts strictly as their own user (per-user isolation is unchanged).
This drops the users collection, the auth.seedusers seeding, and the 403
"not on the allowlist" path — a colleague no longer has to be added by hand.

The ZPA (Prüfungsamt) integration is removed entirely, along with the students
page it fed. Its per-email lookup let any logged-in user pull personal exam-
office data (name, Matrikelnummer, gender, study programme) for arbitrary HM
emails — the reason the allowlist existed. Removing ZPA removes that exposure,
so opening access is safe.

Existing configs keep working: leftover auth.seedusers / zpa.* keys are simply
ignored. The now-unused users collection can be dropped from Mongo at leisure.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@obcode
obcode merged commit 02c9890 into main Jul 22, 2026
8 checks passed
@obcode
obcode deleted the feat/open-access-remove-zpa branch July 22, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant