feat(astroklient-demo): własny klucz podpisu sesji (LOG-34)
SESSION_SECRET w sekrecie astrololo-demo — WŁASNY, nie ten z pełnej aplikacji: demo i produkcja nie mają powodu uznawać nawzajem swoich sesji. W runbooku zapisana różnica wobec pełnej wersji: demo nie ma własnego wolumenu, więc nie ma licznika sesji. Zdalne unieważnienie robi się przez DEMO_USERS — usunięcie konta albo zmiana hasła natychmiast ubija jego otwarte sesje. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -86,9 +86,20 @@ python scripts/make_user.py klientB
|
||||
|
||||
```bash
|
||||
kubectl -n astrololo create secret generic astrololo-demo \
|
||||
--from-literal=DEMO_USERS='klientA:scrypt$…,klientB:scrypt$…'
|
||||
--from-literal=DEMO_USERS='klientA:scrypt$…,klientB:scrypt$…' \
|
||||
--from-literal=SESSION_SECRET="$(openssl rand -hex 32)"
|
||||
```
|
||||
|
||||
`SESSION_SECRET` podpisuje ciasteczka sesji (LOG-34). **Pod bez niego celowo nie
|
||||
wstanie.** Jest WŁASNY, nie ten z pełnej aplikacji: demo i produkcja nie mają
|
||||
powodu uznawać nawzajem swoich sesji.
|
||||
|
||||
> **Zdalne unieważnienie w demo działa inaczej niż w pełnej wersji.** Demo nie ma
|
||||
> własnego wolumenu, więc nie ma gdzie trzymać licznika sesji. Zamiast tego:
|
||||
> usunięcie konta z `DEMO_USERS` albo zmiana jego hasła **natychmiast ubija jego
|
||||
> otwarte sesje** — bo odcisk poświadczenia wpisany w ciasteczko przestaje pasować.
|
||||
> Rotacja `SESSION_SECRET` wylogowuje wszystkich naraz.
|
||||
|
||||
### Dodanie konta później
|
||||
|
||||
```bash
|
||||
|
||||
@@ -53,6 +53,13 @@ spec:
|
||||
secretKeyRef: { name: astrololo-link, key: LINK_KEY_PRESENTATION_LOGIC }
|
||||
- name: LINK_ENCRYPTION_REQUIRED
|
||||
value: "true"
|
||||
# Klucz podpisu ciasteczek sesji (LOG-34). WYMAGANY — pod bez niego
|
||||
# celowo nie wstaje. WŁASNY, nie ten z pełnej aplikacji: demo i produkcja
|
||||
# nie mają powodu uznawać nawzajem swoich sesji, a wspólny klucz
|
||||
# znaczyłby, że sesja z demo bywa ważna tam, gdzie nie powinna.
|
||||
- name: SESSION_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef: { name: astrololo-demo, key: SESSION_SECRET }
|
||||
# Za Ingressem bezpośrednim rozmówcą jest pod Traefika. Bez tego limit
|
||||
# liczyłby WSZYSTKICH do jednego wiadra i pierwsza osoba, która go
|
||||
# wyklika, odcięłaby pozostałe.
|
||||
|
||||
Reference in New Issue
Block a user