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
|
```bash
|
||||||
kubectl -n astrololo create secret generic astrololo-demo \
|
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
|
### Dodanie konta później
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -53,6 +53,13 @@ spec:
|
|||||||
secretKeyRef: { name: astrololo-link, key: LINK_KEY_PRESENTATION_LOGIC }
|
secretKeyRef: { name: astrololo-link, key: LINK_KEY_PRESENTATION_LOGIC }
|
||||||
- name: LINK_ENCRYPTION_REQUIRED
|
- name: LINK_ENCRYPTION_REQUIRED
|
||||||
value: "true"
|
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
|
# Za Ingressem bezpośrednim rozmówcą jest pod Traefika. Bez tego limit
|
||||||
# liczyłby WSZYSTKICH do jednego wiadra i pierwsza osoba, która go
|
# liczyłby WSZYSTKICH do jednego wiadra i pierwsza osoba, która go
|
||||||
# wyklika, odcięłaby pozostałe.
|
# wyklika, odcięłaby pozostałe.
|
||||||
|
|||||||
Reference in New Issue
Block a user