Documentation
Documentation / Get started

Authentication

Bangré attend un JWT bearer dans l'en-tete Authorization. Toutes les routes acceptent l'anonyme sauf celles qui touchent a la persistance (conversations, espace admin, manager).

Principe

Le frontend de reference utilise NextAuth, qui signe lui-meme un JWT HS256 a partir de la cle JWT_SECRET partagee entre Next.js et FastAPI. En integration server-to-server, votre IdP (ou un petit script avec jsonwebtoken) emet le meme format de token avec la meme cle.

Sans token, le chat fonctionne mais la conversation n'est pas persistee et conversation_id vaut null dans l'evenement final.

Structure du JWT

sub
stringrequired
Identifiant utilisateur stable, typiquement l'email.
email
stringrequired
Email du compte. Sert de cle pour les conversations.
role
enumrequired
Une valeur parmi user, manager, admin.
iat
intrequired
Timestamp Unix d'emission.
exp
intrequired
Timestamp Unix d'expiration. 24 h max recommandes.
iss
stringrequired
Doit valoir knowb.
import jwt from "jsonwebtoken";

const token = jwt.sign(
  {
    sub: "alice@org.bf",
    email: "alice@org.bf",
    role: "user",
    iss: "knowb",
  },
  process.env.JWT_SECRET!,
  { algorithm: "HS256", expiresIn: "1h" },
);

Envoyer le token

Ajoute l'en-tete Authorization: Bearer <jwt> sur chaque requete privee.

http
POST /api/v1/chat-rag/stream HTTP/1.1
Host: api.knowb.bf
Authorization: Bearer eyJhbGciOi...
Content-Type: application/json

{ "message": "..." }

Codes d'erreur

  • 401 Unauthorized : token absent, mal forme, signature invalide, expire.
  • 403 Forbidden : role insuffisant (par exemple user qui appelle une route admin).

Rotation du secret

Rotation
Une rotation de JWT_SECRET invalide tous les tokens emis. Coordonne la rotation cote Next.js et cote FastAPI au meme moment. Pour une rotation progressive, accepte deux secrets simultanement pendant la fenetre de transition (a implementer cote backend).