вход переехал на доверенный заголовок Authelia вместо собственного OIDC
- пришедшего называет заголовок Remote-User от прокси, и верят ему только с адреса из перечня trusted_proxies; своего входа у сервиса не осталось — ни корня /auth, ни кук, ни срока сессии, ни секрета клиента в конфиге и в базе - учётная запись заводится первым обращением: EnsureUser в пакете хранилища, шаг схемы 202608220001 с колонкой provider_login и снятыми правилами users - cmd/oidcstub заменён на cmd/devtools с подкомандой proxy; заодно закрыт унаследованный DL3066 — пользователь образа назван числом
This commit is contained in:
@@ -41,18 +41,22 @@
|
||||
|
||||
### Кого пускают
|
||||
|
||||
Приём и опрос закрыты сессией OIDC. Что её выдаёт и чем она предъявляется —
|
||||
Кто пришёл, сервис узнаёт из заголовка `Remote-User`, который ставит обратный
|
||||
прокси, сходив к Authelia; своего входа у сервиса нет. Кому верить, задаёт
|
||||
перечень доверенных адресов в секции `[auth]`. Подробности —
|
||||
[docs/security.md](docs/security.md), «Что разграничивает доступ»; известные
|
||||
прорехи образца конфига — [docs/conventions/config.md](docs/conventions/config.md).
|
||||
|
||||
Локально провайдера нет, и войти при выдуманных адресах нельзя — вместо него
|
||||
поднимается заглушка:
|
||||
Локально прокси нет, а браузер заголовков не ставит — на место контура встаёт
|
||||
подставной прокси из оснастки:
|
||||
|
||||
```bash
|
||||
go run ./cmd/oidcstub
|
||||
go run ./cmd/devtools proxy
|
||||
```
|
||||
|
||||
Значения `[auth]` под неё стоят строками в `config.example.toml`.
|
||||
Приложение после этого открывают **по адресу прокси** — `http://localhost:9000`.
|
||||
В перечне доверенных адресов при этом должен стоять петлевой; строки под это
|
||||
стоят в `config.example.toml`.
|
||||
|
||||
## Деплой
|
||||
|
||||
@@ -68,12 +72,15 @@ inv pl -- transcriber
|
||||
|
||||
## HTTP API
|
||||
|
||||
Семь адресов приложения: `POST /api/audio` — приём записи, `GET /api/status/:id`
|
||||
— готовность задачи, `GET /auth/login`, `GET /auth/callback` и
|
||||
`POST /auth/logout` — вход через провайдера
|
||||
([access](openspec/specs/access/spec.md)), `GET /metrics` — метрики Prometheus с
|
||||
префиксом `transcriber_`, `GET /health` — проверка живости. Сверх них тем же
|
||||
портом отдаётся собственная поверхность встроенного хранилища и панель `/_/` —
|
||||
Адреса приложения живут под корнем `/app`: `POST /app/audiorecords` — приём
|
||||
записи, `GET /app/audiorecords` — страница своих записей,
|
||||
`GET /app/audiorecords/{id}` — карточка, `GET /app/audiorecords/{id}/text` —
|
||||
текст названного вида, `GET /app/me` — кто пришёл, `GET /app/config` — пределы,
|
||||
которые сервис объявляет приложению. Отдельными адресами стоят `GET /metrics` —
|
||||
метрики Prometheus с префиксом `transcriber_` — и `GET /health` — проверка
|
||||
живости. Своего входа у сервиса нет: кто пришёл, называет заголовок обратного
|
||||
прокси ([access](openspec/specs/access/spec.md)). Сверх этого тем же портом
|
||||
отдаётся собственная поверхность встроенного хранилища и панель `/_/` —
|
||||
[docs/security.md](docs/security.md), «Из чего строятся пути и ключи».
|
||||
|
||||
Контракт приёма и опроса нормативен и живёт в
|
||||
@@ -93,7 +100,7 @@ inv pl -- transcriber
|
||||
transcriber/
|
||||
├── cmd/
|
||||
│ ├── transcriber/ # Точка входа сервиса: конфиг, миграции, сборка зависимостей, запуск
|
||||
│ └── oidcstub/ # Подставной провайдер OIDC для локального входа
|
||||
│ └── devtools/ # Оснастка разработчика: подставной прокси для локального входа
|
||||
├── internal/
|
||||
│ ├── entity/ # Модели: задача, файл, результат распознавания
|
||||
│ ├── contract/ # Интерфейсы адаптеров и репозиториев, типы ошибок
|
||||
|
||||
Reference in New Issue
Block a user