f8d3cbdd59
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API contracts, docs, client examples, and the unit/integration/compatibility test suite for local client and tooling labs without a real vCenter.
33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
**Language / Язык:** [English](../../domains/session.md) | [Русский](session.md)
|
|
|
|
# Session
|
|
|
|
Устойчивая идентичность сессии, общая для REST и SOAP:
|
|
[`app/vsphere/security/session.py`](../../../app/vsphere/security/session.py).
|
|
|
|
## Эндпоинты
|
|
|
|
| Метод | Путь | Заметки |
|
|
|---|---|---|
|
|
| POST | `/api/session` | Basic auth → JSON-строка session id + заголовок/cookie `vmware-api-session-id` |
|
|
| GET | `/api/session` | HTTP 200; заголовки `x-vmware-session-user` / `x-vmware-session-roles` |
|
|
| DELETE | `/api/session` | Инвалидирует сессию, очищает cookie |
|
|
| POST/GET/DELETE | `/rest/com/vmware/cis/session` | Legacy-эквиваленты `{ "value": … }` |
|
|
| POST | SOAP `SessionManager.Login` | Возвращает тот же session id; ставит cookie `vmware_soap_session` |
|
|
| POST | SOAP `SessionManager.Logout` | Удаляет сессию |
|
|
|
|
## Основные моменты
|
|
|
|
- Сессии — непрозрачные 32-символьные hex-токены в `vsphere_sessions` со
|
|
**скользящим TTL 2 часа** — каждый аутентифицированный вызов продлевает
|
|
`expires_at`.
|
|
- Четыре лабораторные учётки (`vsphere_credentials`, scrypt-хеш) идемпотентно
|
|
обеспечиваются при первом login и каждым профилем seed
|
|
(`ensure_default_credentials`).
|
|
- `require_session` резолвит сессию из заголовка или cookie
|
|
`vmware-api-session-id`; отсутствует/истекла → HTTP 401.
|
|
- Роли привязываются к сессии при lookup (`vsphere_credentials.roles`) и
|
|
управляют [Авторизацией](authz.md).
|
|
|
|
Полные примеры запросов — [Аутентификация](../authentication.md).
|