2.4 KiB
2.4 KiB
Auth для Tunnel-метода
Bearer JWT (HS256), HMAC signing secret в /etc/stats-gateway/jwt.key.
Claims
sub— client-id (bergamot-laptop,bergamot-phone, ...)scope—tunnel(только этот scope разрешён для Tunnel-метода)iat,exp— стандартные UNIX timestampsjti— random hex для аудита/revocation
Выпуск нового токена
На gitea-узле от пользователя с доступом к jwt.key:
sudo -u stats /usr/local/bin/stats-issue-token --sub <client-id> --days <N>
(Helper-скрипт issue-token.sh устанавливается на сервер в Task 11 как Go-binary stats-issue-token.)
Локальный путь во время разработки — experiments/grpc-tunnel/issue-token.sh. Семантика идентична Go-варианту.
Revocation
Опции (по убыванию агрессивности):
- Polite revocation (один client) — добавить
jtiотзываемого токена в/etc/stats-gateway/revoked.txt(формат: один jti на строку,#в начале строки — комментарий). Сервис подгружает на каждом запросе. - Mass revocation (все клиенты) —
openssl rand -hex 32 > /etc/stats-gateway/jwt.key,systemctl restart stats-gateway. Затем переиздать токены живым клиентам и раздать оффлайн.
Polite revocation реализуется в Task 11 (через LoadRevokedFile). Для старта — только rotation.
Ротация secret
Раз в год минимум. Перед сменой:
- Выпустить новые токены клиентам с новым ключом (НЕ deploy ещё на сервер)
- Раздать токены оффлайн (мессенджер, не plain SMS)
- Заменить ключ на сервере, restart
- Старые токены немедленно невалидны
Storage клиентского токена
На клиенте — ~/.psp/token mode 600. CLI читает только этот файл (см. psp-stats-cli connect --token-file).
Не коммитить токены в репозитории, не передавать через email/Slack без e2e.