docs: закрытие продуктовых рисков и новый LDD baseline

This commit is contained in:
2026-10-28 13:26:43 +03:00
parent 71fa3284a0
commit 9dcba8ce0c
16 changed files with 584 additions and 212 deletions

View File

@@ -32,8 +32,11 @@ flowchart LR
id -.->|JWKS| pr
```
- Браузер никогда не получает JWT: токен живёт в HTTP-сессии web-сервиса
(`lms.token`), а в браузер уходит только cookie сессии (`HttpOnly`, 30 дней).
- Браузер никогда не получает JWT: access-токен живёт в HTTP-сессии web-сервиса
(`lms.token`), а в браузер уходит только cookie сессии `LMS_SESSION`
(`HttpOnly`, `SameSite=Lax`, 7 дней sliding). Access-токен — 15 минут,
обновляется автоматически за 2 минуты до истечения по refresh-токену;
cookie `Max-Age` перевыпускается на каждом ответе.
- Все REST-запросы web проксирует на gateway, добавляя `Authorization: Bearer`.
- Gateway проверяет подпись токена по JWKS identity и передаёт вниз заголовки
`X-Account-Id`, `X-Account-Login`, `X-Account-Role`.
@@ -139,12 +142,13 @@ flowchart TD
n -->|да| p["Контроллер → сервис → БД"]
```
- Роли: `ADMIN`, `STUDENT`; конвертер ролей читает claim `role` как `ROLE_<role>`.
- Публичные пути: `/actuator/**`, `/api/v1/auth/{health,setup,login,jwks.json}`,
- Роли: `ADMIN`, `TEACHER`, `STUDENT`; конвертер ролей читает claim `role` как `ROLE_<role>`.
- Публичные пути: `/actuator/**`, `/api/v1/auth/{health,setup,login,refresh,jwks.json}`,
`/api/v1/content/tree`, `/api/v1/content/{chapter}/{section}/{article}`.
`/api/v1/content/assets/**` gateway пропускает без JWT (legacy/публичные
`/api/v1/content/assets/**` gateway пропускает без JWT (публичные
`ALL`-активы), но academic проверяет видимость статьи и для курсовых или
ролевых активов требует токен.
ролевых активов требует токен. Файл без привязки к статье — `404` всем,
кроме админа (secure-by-default).
- RSA-ключи identity хранятся в таблице `settings` и публикуются в JWKS.
## 5. Рендеринг страниц и защита форм (web)