Protect recipe API with bearer token
This commit is contained in:
@@ -330,6 +330,18 @@ hex вместо Base64. Узкий тест выявил проблему; ко
|
||||
Контрольный запрос с `PLAN/lekar.png` через `POST /gemini` на localhost ВМ:
|
||||
HTTP 200.
|
||||
|
||||
## Защита recipe API
|
||||
|
||||
По команде пользователя добавлена Bearer-защита endpoint `POST /recipe`.
|
||||
Приложение сравнивает заголовок `Authorization` со значением
|
||||
`RECIPE_API_TOKEN` из EnvironmentFile; при отсутствии или неверном токене
|
||||
возвращается HTTP 401. Health endpoint остаётся доступен без авторизации.
|
||||
|
||||
Добавлен `recipe_service/.gitignore`, исключающий `.env`, `*.env`,
|
||||
`__pycache__` и `*.pyc`. В `.env.example` добавлено только имя настройки без
|
||||
секретного значения. Реальный случайный токен будет храниться только на ВМ в
|
||||
`/etc/recipe/recipe.env`; в git и HISTORY он не записывается.
|
||||
|
||||
Ответ модели:
|
||||
|
||||
```json
|
||||
@@ -467,3 +479,20 @@ S. по 1т 1/р в день
|
||||
`thoughtsTokenCount` в ответе отсутствует, что подтверждает отсутствие
|
||||
отдельно тарифицируемых reasoning-токенов в этом запросе. Usage: prompt 1119,
|
||||
image 1102, text 17, candidate output 34, total 1153.
|
||||
|
||||
## Bearer-защита recipe API
|
||||
|
||||
Добавлена Bearer-защита `POST /recipe`: без заголовка или с неверным значением
|
||||
`Authorization: Bearer ...` сервис возвращает HTTP 401. `/health` остаётся
|
||||
доступен без авторизации.
|
||||
|
||||
Случайный токен установлен на ВМ 213 в `/etc/recipe/recipe.env` с правами
|
||||
`0640` и владельцем `root:recipe`; значение токена не записывалось в git или
|
||||
HISTORY. Добавлен `recipe_service/.gitignore` для `.env`, `*.env`,
|
||||
`__pycache__` и `*.pyc`.
|
||||
|
||||
Синтаксис `recipe_service/app.py`, `git diff --check` и локальная проверка Flask
|
||||
прошли. После перезапуска `recipe.service` запрос без токена получил HTTP 401.
|
||||
Авторизованный запрос дошёл до Gemini, но получил HTTP 502: `API key not valid`.
|
||||
Следовательно, Bearer-защита работает, а `GEMINI_API_KEY` в серверном env-файле
|
||||
недействителен и требует замены.
|
||||
|
||||
Reference in New Issue
Block a user