CentralAuth

Centralizovaný autentifikačný server s BFF (Backend for Frontend) pattern pre bezpečnú komunikáciu medzi SPA a internými API.

Prihlasiť sa Registrovať sa Admin Panel

Architektúra BFF

Frontend (SPA) CentralAuth Backend APIs localhost:5173 cauth.badcat.eu Docker network │ │ │ │ fetch('/bff/poc/api/...') │ │ ├─────────────────────────────────►│ │ │ (session cookie) │ │ │ │ GET http://poc-api:5000/... │ │ ├──────────────────────────────►│ │ │ + Authorization: Bearer JWT │ │ │ │ │ │◄──────────────────────────────┤ │◄─────────────────────────────────┤ response │ │ response │ │

Session Cookie

Frontend komunikuje s CentralAuth cez HTTP-only session cookie. Token nie je nikdy exponovaný JavaScriptu.

JWT Injection

BFF automaticky generuje JWT token a pridáva ho do requestov na interné API.

Network Isolation

Backend API sú v Docker networku bez exposed portov. Prístupné len cez BFF.

Dynamic Routing

Proxy routes sú konfigurovateľné cez Admin UI alebo API.

Ako pridať novú aplikáciu

  1. Vytvor backend API pomocou KPM
    # Vytvorí .NET API projekt s JWT autentifikáciou a deploy workflow kpm add-app orders --name "Orders Service" --deploy # Alebo len registrácia existujúcej API kpm add-app orders --skip-project --api-key "your-api-key"
  2. Nastav JWT kľúč v appsettings.json
    { "Jwt": { "Key": "rovnaký-kľúč-ako-v-centralauth", "Issuer": "CentralAuth", "Audience": "InternalApis" } }
  3. Nastav GitHub Secrets pre deploy
    BADCAT_SRV_USER = "ssh-username" BADCAT_SRV_PSW = "ssh-password" JWT_KEY = "jwt-signing-key"
  4. Push na GitHub
    git init && git add . && git commit -m "Initial" git remote add origin https://github.com/user/orders-api git push -u origin main # Spustí automatický deploy
  5. Volaj API z frontendu
    // Frontend volá API cez BFF (session cookie sa automaticky priloží) const response = await fetch('https://cauth.badcat.eu/bff/orders/api/orders', { credentials: 'include' }); const data = await response.json();

API Endpointy

Autentifikácia

POST /auth/logout # Odhlásenie GET /bff/user # Info o prihlásenom používateľovi GET /bff/ping # Health check

Admin API (vyžaduje Admin rolu)

GET /api/admin/apps # Zoznam aplikácií POST /api/admin/apps # Vytvorenie aplikácie GET /api/admin/routes # Zoznam proxy routes POST /api/admin/routes # Vytvorenie route GET /api/admin/users # Zoznam používateľov

BFF Proxy

/bff/{app-code}/* # Proxy na http://{app-code}-api:5000/* # Príklad: GET /bff/orders/api/orders # → http://orders-api:5000/api/orders POST /bff/inventory/api/items # → http://inventory-api:5000/api/items

Konfigurácia

Environment Variables (Docker)

ASPNETCORE_ENVIRONMENT=Production DbConfig__Host=mariadb DbConfig__Port=3306 DbConfig__Username=root DbConfig__Password=your-password Jwt__Key=your-64-char-jwt-key Admin__ApiKey=your-admin-api-key

CORS Origins

# V appsettings.json alebo environment Cors__Origins__0=http://localhost:5173 Cors__Origins__1=https://your-frontend.com