39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
---
|
|||
|
|
type: issue
|
||
|
|
id: "0043"
|
||
|
|
status: open
|
||
|
|
created: 2026-08-11
|
||
|
|
milestone: M5
|
||
|
|
priority: medium
|
||
|
|
area: security
|
||
|
|
related: [docs/adr/0011-enrollment-localpart-kollision-verweigern.md]
|
||
|
|
---
|
||
|
|
# Invitation-Flow: case-insensitive Eindeutigkeitsprüfung im Prompt-Stage
|
||
|
|
|
||
|
|
> Offener Rest aus [ADR-0011](../adr/0011-enrollment-localpart-kollision-verweigern.md); GitLab-seitig als [gitops#61](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/61) verfolgt.
|
||
|
|
|
||
|
|
## Problem / Motivation
|
||
|
|
|
||
|
|
Die Kontoübernahme über kollidierende Localparts ist geschlossen — MAS steht auf
|
||
|
|
`on_conflict: fail` (ADR-0011, live nach MAS-Neustart). Das ist die harte
|
||
|
|
Sicherheitsgrenze, aber sie greift erst **beim Login**: Ein Nutzer, der bei der
|
||
|
|
Registrierung einen bereits vergebenen Namen (oder eine Schreibweise-Variante wie
|
||
|
|
`boje` neben `Boje`) wählt, bekommt kein Feedback im Flow, sondern läuft später in
|
||
|
|
einen fehlgeschlagenen Login. Authentiks eigene Eindeutigkeit ist case-sensitive
|
||
|
|
und deckt Kollisionen mit bestehenden Matrix-Konten nicht ab.
|
||
|
|
|
||
|
|
## Acceptance
|
||
|
|
|
||
|
|
- Der `matrix-invitation`-Flow prüft im Prompt-Stage den gewünschten
|
||
|
|
Benutzernamen **case-insensitive** gegen bestehende Konten und weist eine
|
||
|
|
Kollision schon bei der Registrierung sichtbar ab.
|
||
|
|
- Als Blueprint reproduzierbar (`apps/authentik/authentik-blueprints.yaml`), nicht
|
||
|
|
nur als Klick im Admin-UI.
|
||
|
|
- Gegenprobe: Registrierung mit einem existierenden Namen in abweichender
|
||
|
|
Schreibweise scheitert im Flow, nicht erst beim Login.
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
Rein defensive Ergänzung / UX — der Übernahme-Vektor selbst ist bereits zu.
|
||
|
|
Deshalb M5 (Härtung, nicht Reparatur) und `priority: medium`.
|