A second way in: signing in through an identity provider
OpenID Connect, off unless four settings are present. It is a second way to the same token the password login mints — every route and the WebSocket still know only a signed JWT — which is why it fits in one file and needs no new dependency: Node imports a JWK itself, so checking an ID token is a signature and five claims. Authorization Code with PKCE, exchanged on the server so the client secret stays there. The browser comes home with a one-time ticket rather than the token, because a token in a redirect URL sits in the history, in the proxy's log and in the referrer of the next request. Somebody the app has not seen gets an account; an account that already exists under that name is linked to the identity rather than duplicated, by subject from then on. Never an administrator. An account made this way has no password here, and the interface stops offering one — but an admin can still set one, which is the way back in if the provider is ever gone. The suite signs in at a provider of its own that signs real RS256 tokens, and holds down the four ways the journey must fail as well as the way it must work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c86c63922a
commit
43a98b0972
17 files changed
+1271
-44
No files matched your search
@@ -22,6 +22,11 @@ Diese Punkte sind Entscheidungen von Marc, keine offenen Fragen:
|
||||
- **Keine öffentliche Registrierung.** Konten legt ein Administrator an. Ein
|
||||
Admin darf anlegen, löschen und Passwörter zurücksetzen – aber **keine**
|
||||
weiteren Admins ernennen und **keine** fremden Konten umbenennen.
|
||||
- **OIDC ist die zweite Anmeldeart, nicht die einzige.** Wer sich beim Anbieter
|
||||
anmelden darf, bekommt hier ein Konto (Marcs Entscheidung, 18.08.2026) – aber
|
||||
**nie** Admin-Rechte, die werden weiter nur in der App vergeben. Der
|
||||
Passwort-Login bleibt immer erreichbar, sonst sperrt ein kaputter Anbieter
|
||||
alle aus. Ohne `INKNOTE_OIDC_*` in der `.env` ist davon nichts zu sehen.
|
||||
- **Bundle-Größe bleibt, wie sie ist.** Bewusst so entschieden.
|
||||
- **Dashboard und Seitenleiste sind vertagt.** Die offenen Befunde dazu sind
|
||||
bekannt; nicht ungefragt damit anfangen.
|
||||
|
||||
Reference in new issue
Block a user