--- name: project-dummy-jwt-secret description: Hartverdrahtetes Demo-JWT-Secret PLATO_DEMO_JWT_SECRET_2025 ist als Auth zu ersetzen — Speicherorte und Risiko. metadata: node_type: memory type: project originSessionId: 9259f85f-e34d-4327-89e2-534bbfbc48c2 --- In Backend UND Frontend ist das gleiche JWT-Secret `PLATO_DEMO_JWT_SECRET_2025` hartverdrahtet. Das Frontend signiert seine eigenen Tokens (Issuer = Client), Backend akzeptiert sie mit HS256. Wer das Bundle hat, kann sich ein Token für beliebige User basteln. **Fundstellen (Stand 2026-05-21):** - BE: `libs/command/command-be/src/lib/auth/dummy-auth-contants.ts` - BE (Duplikat im `dummy-for-development/`-Ordner): `libs/command/command-be/src/lib/auth/dummy-for-development/dummy-auth-contants.ts` - BE Strategy (vorgeblich "prod"): `libs/command/command-be/src/lib/auth/jwt.strategy.ts:13` — Kommentar `// fest verdrahtet` - BE Dummy-Strategy: `libs/command/command-be/src/lib/auth/dummy-for-development/dummy-jwt-strategy.ts` - BE Dummy-Token-Controller: `libs/command/command-be/src/lib/auth/dummy-for-development/dummy-jwt-token.controller.ts` - FE: `libs/common/frontend-common/src/lib/be-sync/dummy-jwt-creator.ts:2` - FE-Aufrufer: `plato-web-client.ts:20`, `sqlite-upload-client.ts:3` - Controller-Guard: `libs/command/command-be/src/lib/command.controller.ts:23,35` mit `@UseGuards(AuthGuard('jwt'))` **Why:** Das ist die laufende Aufräum-Linie für DEV — soll durch echte IdP-Anbindung an [[project-idp-witglobal]] ersetzt werden. Marcus hat in dieser Session zuerst die Token-/Layout-/Crypto-Themen abgearbeitet (Commits `94d19a5`, `ee57b86` auf `development`), Auth-Hardening steht als nächster Block an. **How to apply:** Beim Umbau alle Fundstellen rauswerfen (Konstante, beide Strategies, Dummy-Controller, FE-Token-Creator, Imports). Replace mit `passport-jwt` + JWKS-Verifikation gegen `https://login-dev.witglobal.net/pf/JWKS`, `issuer`-Check, `audience`-Check (`KONZ-PlaTo-Customer-DEV`). FE postet kein selbstsigniertes Token mehr, sondern den IdP-Access-Token.