**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).
