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

Sistema de autenticación

Esta guía explica cómo utilizar el sistema de autenticación de usuarios de LibreChat, el cual ofrece inicios de sesión seguros y sencillos mediante correo electrónico y redes sociales. Aprenderá a configurar el registro, el inicio de sesión, el restablecimiento de contraseña y más.

General

Para una descripción general rápida, consulte la guía del usuario proporcionada aquí: Authentication

Aquí tienes una descripción general de la configuración general.

KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanHabilitar o deshabilitar SOLO el inicio de sesión por correo electrónico.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanHabilitar o deshabilitar el registro por correo electrónico de nuevos usuarios.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermitir que los usuarios se conecten a LibreChat con varias redes sociales.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanHabilitar o deshabilitar el registro de nuevos usuarios mediante varias redes sociales.ALLOW_SOCIAL_REGISTRATION=false

Nota: OpenID y SAML no admiten la capacidad de deshabilitar solo el registro.

Consejos rápidos:

  • Incluso con el registro deshabilitado, puede agregar usuarios directamente a la base de datos utilizando el script create-user detallado a continuación.
  • Para eliminar un usuario, puede utilizar el script delete-user que también se detalla a continuación.
Pantalla de registro de usuarioPantalla de registro de usuario

Expiración de sesión y token de actualización

  • Valores predeterminados: expiración de la sesión: 15 minutos, expiración del token de actualización: 7 días
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Tiempo de expiración de la sesión.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Tiempo de caducidad del token de actualización.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 y Refresh Secret

  • Debe utilizar nuevos valores seguros. Los ejemplos proporcionados son claves de 32 bytes (64 caracteres en hexadecimal).
    • Utilice esta herramienta para generar algunas rápidamente: JWT Keys
KeyTypeDescriptionExample
JWT_SECRETstring (hex)Clave secreta JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Clave secreta de actualización JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Sistema de moderación automatizado (opcional)

El Sistema de Moderación Automatizado está habilitado de forma predeterminada. Utiliza un mecanismo de puntuación para realizar un seguimiento de las infracciones de los usuarios. A medida que los usuarios realizan acciones como inicios de sesión, registros o envío de mensajes excesivos, acumulan puntuaciones de infracción. Al alcanzar un umbral establecido, el usuario y su IP son bloqueados temporalmente. Este sistema garantiza la seguridad de la plataforma mediante la supervisión y penalización de actividades rápidas o sospechosas.

Para configurar el sistema de moderación, revisa la guía de configuración.

Nota: Si deseas que esto funcione en modo de desarrollo, deberás crear un archivo llamado .env.development en el directorio raíz y establecer DOMAIN_CLIENT en http://localhost:3090 o en el puerto que proporcione vite al ejecutar npm run frontend-dev

Scripts de gestión de usuarios

Crear User Script

El script create-user le permite agregar usuarios directamente a la base de datos, incluso cuando el registro está deshabilitado. Así es como se utiliza:

  1. Para el docker-compose.yml predeterminado (si utiliza docker compose up para iniciar la aplicación):

    docker compose exec api npm run create-user
  2. Para el deploy-compose.yml (si seguiste la Guía de Docker en Ubuntu):

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user"
  3. Para el desarrollo local (desde la raíz del proyecto):

    npm run create-user

Siga las instrucciones para ingresar el correo electrónico y la contraseña del nuevo usuario.

Script para eliminar usuarios

Para eliminar un usuario, puedes usar el script delete-user:

  1. Para el docker-compose.yml predeterminado (si utiliza docker compose up para iniciar la aplicación):

    docker compose exec api npm run delete-user [email protected]
  2. Para el deploy-compose.yml (si seguiste la Guía de Docker en Ubuntu):

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]"
  3. Para el desarrollo local (desde la raíz del proyecto):

    npm run delete-user [email protected]

Reemplace [email protected] con el correo electrónico del usuario que desea eliminar.

¿Qué te parece esta guía?