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
substringrequired
Identifiant utilisateur stable, typiquement l'email.
emailstringrequired
Email du compte. Sert de cle pour les conversations.
roleenumrequired
Une valeur parmi
user, manager, admin.iatintrequired
Timestamp Unix d'emission.
expintrequired
Timestamp Unix d'expiration. 24 h max recommandes.
issstringrequired
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
userqui 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).