Aurora Nexus
Aurora NexusConfiguration

Auth — Aurora Nexus (MVP)

(depuis `AUTH_FLOW.md`)

Cette application est historiquement nommée Aurora RAG dans le code, mais le nom produit est Aurora Nexus.

TL;DR

  • UI (recommandé) : auth par cookie HttpOnly (pas de JWT stocké en localStorage).
  • Apps externes / scripts : auth par JWT via Authorization: Bearer <token>.
  • Endpoint de login : POST /api/auth/login
  • Swagger : http://127.0.0.1:<HOST_API_PORT>/api/docs

1) Modes d’auth (UI)

  • L’UI appelle POST /api/auth/login.
  • L’API dépose un cookie HttpOnly (nom configuré via AUTH_COOKIE_NAME, défaut aurora_token).
  • Le navigateur renvoie automatiquement ce cookie sur les appels suivants (même origine).

Variables .env usuelles :

  • NEXT_PUBLIC_AUTH_MODE=cookie
  • AUTH_COOKIE_NAME=aurora_token
  • AUTH_COOKIE_SECURE=true (à laisser à false uniquement en HTTP local)
  • AUTH_COOKIE_SAMESITE=lax
  • CORS_ALLOW_ORIGINS=... (requis si vous avez des origines différentes + cookies)

Option de compat :

  • RETURN_JWT_IN_BODY=false (recommandé) → le JSON renvoie token="cookie_only" et le cookie reste la source de vérité.
  • RETURN_JWT_IN_BODY=true → l’API renvoie aussi le JWT dans le body (moins recommandé côté navigateur).

B) Mode bearer (UI)

Ce mode est utile si vous ne pouvez pas utiliser les cookies (ex. contraintes navigateur / reverse-proxy atypique), mais implique de stocker un token côté UI.

Variable .env :

  • NEXT_PUBLIC_AUTH_MODE=bearer

2) Mode JWT (apps externes)

  1. Créer un utilisateur “service” (role user) via l’UI Admin ou /api/admin/users.
  2. Lui attribuer des permissions par source_app via /api/admin/users/{user_id}/permissions.
  3. Récupérer un JWT :
curl -sS -X POST "http://127.0.0.1:<HOST_API_PORT>/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"service@example.com","password":"***"}'
  1. Appeler les endpoints protégés :
curl -sS -X POST "http://127.0.0.1:<HOST_API_PORT>/api/query" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"query":"...","source_app":"dev","workspace":"default","language":"fr"}'

3) OAuth Google (UI)

Le flow OAuth (si activé) passe par des endpoints /api/auth/google/* et évite le JWT dans l’URL (mécanisme “one‑time code” côté UI).

Variables .env :

  • GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REDIRECT_URI
  • OAUTH_LOGIN_CODE_TTL_SECONDS

4) Notes sécurité MVP

  • Éviter d’exposer Postgres/Qdrant/MinIO/Redis publiquement : bind 127.0.0.1 + reverse-proxy uniquement pour UI/API.
  • En production, utiliser des secrets forts : JWT_SECRET, GATEWAY_INTERNAL_SECRET, LLM_CREDENTIALS_ENC_KEY.
  • Garder ALLOW_ADMIN_ENV_WRITE=false pour éviter l’écriture de secrets dans .env via API.

On this page