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?
HTTP Security Headers
Configure LibreChat's baseline HTTP security headers and nonce-based Content Security Policy
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.