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.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Habilitar o deshabilitar SOLO el inicio de sesión por correo electrónico. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Habilitar o deshabilitar el registro por correo electrónico de nuevos usuarios. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Permitir a los usuarios conectarse a LibreChat con varias redes sociales. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Habilitar 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.
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
- Para más información: GitHub PR #927 - Refresh Token
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tiempo de expiración de la sesión. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (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 dataJWT 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
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Clave secreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (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.developmenten el directorio raíz y establecerDOMAIN_CLIENTenhttp://localhost:3090o en cualquier puerto que proporcione vite al ejecutarnpm run frontend-dev
Scripts de gestión de usuarios
Crear script de usuario
El script create-user le permite añadir usuarios directamente a la base de datos, incluso cuando el registro está deshabilitado. Aquí le explicamos cómo usarlo:
-
Para el
docker-compose.ymlpredeterminado (si utilizadocker compose uppara iniciar la aplicación):docker compose exec api npm run create-user -
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" -
Para el desarrollo local (desde la raíz del proyecto):
npm run create-user
Sigue las instrucciones para ingresar el correo electrónico y la contraseña del nuevo usuario.
Script para eliminar usuario
Para eliminar un usuario, puedes usar el script delete-user:
-
Para el
docker-compose.ymlpredeterminado (si utilizadocker compose uppara iniciar la aplicación):docker compose exec api npm run delete-user [email protected] -
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]" -
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?
Saldo
Configurar saldos de crédito de tokens para usuarios en LibreChat
Configuración de correo electrónico
Esta guía explica cómo configurar la verificación de correo electrónico segura y el restablecimiento de contraseña. Puede configurarlo para que funcione con varios servicios de correo electrónico, incluidos Gmail, Mailgun y servidores de correo personalizados.