Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Système d'authentification

Ce guide explique comment utiliser le système d'authentification des utilisateurs de LibreChat, qui propose des connexions sécurisées et simples par e-mail et réseaux sociaux. Vous apprendrez à configurer l'inscription, la connexion, la réinitialisation de mot de passe, et plus encore.

Général

Pour un aperçu rapide, consultez le guide de l'utilisateur fourni ici : Authentication

Voici un aperçu de la configuration générale.

KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanActiver ou désactiver UNIQUEMENT la connexion par e-mail.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanActiver ou désactiver l'inscription par e-mail des nouveaux utilisateurs.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermettre aux utilisateurs de se connecter à LibreChat avec divers réseaux sociaux.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanActiver ou désactiver l'inscription de nouveaux utilisateurs via divers réseaux sociaux.ALLOW_SOCIAL_REGISTRATION=false

Note : OpenID et SAML ne prennent pas en charge la possibilité de désactiver uniquement l'inscription.

Conseils rapides :

  • Même si l'inscription est désactivée, vous pouvez ajouter des utilisateurs directement dans la base de données en utilisant le script create-user détaillé ci-dessous.
  • Pour supprimer un utilisateur, vous pouvez utiliser le script delete-user également détaillé ci-dessous.
Écran d'inscription utilisateurÉcran d'inscription utilisateur

Expiration de session et jeton de rafraîchissement

  • Valeurs par défaut : expiration de la session : 15 minutes, expiration du jeton de rafraîchissement : 7 jours
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Délai d'expiration de la session.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Délai d'expiration du jeton d'actualisation.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
sequenceDiagram
    Client->>Server: Login request with credentials
    Server->>Passport: Use authentication strategy (e.g., 'local', 'google', etc.)
    Passport-->>Server: User object or false/error
    Note over Server: If valid user...
    Server->>Server: Generate access and refresh tokens
    Server->>Database: Store hashed refresh token
    Server-->>Client: Access token and refresh token
    Client->>Client: Store access token in HTTP Header and refresh token in HttpOnly cookie
    Client->>Server: Request with access token from HTTP Header
    Server-->>Client: Requested data
    Note over Client,Server: Access token expires
    Client->>Server: Request with expired access token
    Server-->>Client: Unauthorized
    Client->>Server: Request with refresh token from HttpOnly cookie
    Server->>Database: Retrieve hashed refresh token
    Server->>Server: Compare hash of provided refresh token with stored hash
    Note over Server: If hashes match...
    Server-->>Client: New access token and refresh token
    Client->>Server: Retry request with new access token
    Server-->>Client: Requested data

JWT Secret et Refresh Secret

  • Vous devriez utiliser de nouvelles valeurs sécurisées. Les exemples fournis sont des clés de 32 octets (64 caractères en hexadécimal).
    • Utilisez cet outil pour en générer rapidement : Clés JWT
KeyTypeDescriptionExample
JWT_SECRETstring (hex)Clé secrète JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Clé secrète de rafraîchissement JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Système de modération automatisé (optionnel)

Le système de modération automatisé est activé par défaut. Il utilise un mécanisme de notation pour suivre les violations des utilisateurs. À mesure que les utilisateurs effectuent des actions telles que des connexions, des inscriptions ou des envois de messages excessifs, ils accumulent des scores de violation. Une fois un seuil défini atteint, l'utilisateur et son adresse IP sont temporairement bannis. Ce système garantit la sécurité de la plateforme en surveillant et en pénalisant les activités rapides ou suspectes.

Pour configurer le système de modération, consultez le guide de configuration.

Veuillez noter : Si vous souhaitez que cela fonctionne en mode développement, vous devrez créer un fichier nommé .env.development dans le répertoire racine et définir DOMAIN_CLIENT sur http://localhost:3090 ou sur le port fourni par vite lors de l'exécution de npm run frontend-dev

Scripts de gestion des utilisateurs

Créer un script utilisateur

Le script create-user vous permet d'ajouter des utilisateurs directement dans la base de données, même lorsque l'inscription est désactivée. Voici comment l'utiliser :

  1. Pour le docker-compose.yml par défaut (si vous utilisez docker compose up pour démarrer l'application) :

    docker compose exec api npm run create-user
  2. Pour le deploy-compose.yml (si vous avez suivi le Guide Docker Ubuntu) :

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user"
  3. Pour le développement local (depuis la racine du projet) :

    npm run create-user

Suivez les instructions pour saisir l'e-mail et le mot de passe du nouvel utilisateur.

Script de suppression d'utilisateur

Pour supprimer un utilisateur, vous pouvez utiliser le script delete-user :

  1. Pour le docker-compose.yml par défaut (si vous utilisez docker compose up pour démarrer l'application) :

    docker compose exec api npm run delete-user [email protected]
  2. Pour le deploy-compose.yml (si vous avez suivi le Guide Docker Ubuntu) :

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]"
  3. Pour le développement local (depuis la racine du projet) :

    npm run delete-user [email protected]

Remplacez [email protected] par l'adresse e-mail de l'utilisateur que vous souhaitez supprimer.

Que pensez-vous de ce guide ?