quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 56s
quality / api (push) Successful in 41s
CD / quality (push) Successful in 1m47s
CD / publish (push) Successful in 33s
2.0 KiB
2.0 KiB
Интеграция auth-portal ↔ CDN Manager
App id: cdn. Зеркало на стороне портала: auth-portal/docs/integrate-cdnmanager.md (соседний репозиторий).
Flow
Browser → CDNManager UI (нет token)
→ redirect AUTH_PORTAL_URL/?return_to=…/auth/callback
→ login
→ redirect return_to#access_token=…
→ /auth/callback сохраняет token (localStorage: cdnmanager_token)
→ API Authorization: Bearer <JWT>
Permissions
| Permission | UI |
|---|---|
cdn:dashboard:read |
/ |
cdn:nodes:read / write |
/nodes |
cdn:aliases:read / write |
/aliases (+ Retarget) |
cdn:zones:read / write |
/zones |
cdn:sync:write |
Sync / Apply |
cdn:topology:read |
/topology |
cdn:settings:admin |
/settings/* |
Env
AUTH_REQUIRED=true
AUTH_JWT_SECRET=<тот же JWT_SECRET портала>
AUTH_ISSUER=https://auth.shnt.top
AUTH_PORTAL_URL=https://auth.shnt.top
AUTH_AUDIT_INGEST_SECRET=<AUDIT_INGEST_SECRET портала>
CLOUDFLARE_API_TOKEN=
# apps/web/.env.local (dev SPA)
VITE_AUTH_ENABLED=true
VITE_AUTH_PORTAL_URL=https://auth.shnt.top
В Docker SPA обслуживается API (STATIC_DIR): достаточно server-side AUTH_* — UI читает GET /api/v1/auth/config.
В portal Admin → Apps выдайте app cdn и нужные cdn:*. URL в App Switcher: origin CDNManager (https://cdn.shnt.top).
Checklist
- Общий
JWT_SECRET/AUTH_JWT_SECRETи одинаковыйAUTH_ISSUER - Origin CDNManager в
RETURN_TO_ALLOWLISTпортала - Пользователю выдан app
cdn AUTH_REQUIRED=trueв контейнере CDNManager- Logout →
{AUTH_PORTAL_URL}/logout
Запуск на сервере: deploy-traefik.md (рекомендуется) или deploy-docker.md.