Files
inecs 6033967e6a Initial commit: stateful OpenStack API laboratory simulator.
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm
packaging, API contract packs, and pytest/Pulumi coverage labs.
2026-07-18 04:26:48 +03:00

81 lines
2.1 KiB
Markdown

**Language / Язык:** [English](../authentication.md) | [Русский](authentication.md)
# Аутентификация
Симулятор реализует **Keystone v3** password-аутентификацию и project scoping
(лабораторное подмножество).
## Password auth
```http
POST /v3/auth/tokens
Content-Type: application/json
{
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "admin",
"domain": {"name": "Default"},
"password": "secret"
}
}
},
"scope": {
"project": {"name": "demo", "domain": {"name": "Default"}}
}
}
}
```
Ответ:
- Заголовок **`X-Subject-Token`** — используйте как **`X-Auth-Token`** в следующих запросах
- Тело `token.catalog` — endpoints сервисов (порты соответствуют [ports.md](ports.md))
## Seed-принципалы
Пароль для всех пользователей: **`secret`**. Домен: **`Default`**.
### Minimal seed
| Пользователь | Проекты | Роль |
|---|---|---|
| `admin` | `admin`, `demo` | admin |
| `demo` | `demo` | member |
### Demo cloud
| Пользователь | Типичные проекты |
|---|---|
| `admin` | все |
| `ops` | production, staging |
| `developer` | development, staging |
| `demo` / `auditor` | demo / production |
## Unscoped / ошибки
- Нет токена → `401 Unauthorized`
- Неверный пароль → `401`
- Project-scoped API без project scope → `401` с понятным сообщением
## openstacksdk / CLI
```bash
export OS_AUTH_URL=http://127.0.0.1:5000/v3
export OS_USERNAME=admin
export OS_PASSWORD=secret
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
openstack server list
openstack network list
```
Против Helm Ingress задайте `OS_AUTH_URL=https://os-sim.example.com/v3`
(и доверьте сертификат или используйте `--insecure` в лаборатории).