Sistema di autenticazione
Questa guida spiega come utilizzare il sistema di autenticazione utente di LibreChat, che offre accessi sicuri e semplici tramite email e social. Imparerai come configurare la registrazione, l'accesso, il ripristino della password e altro ancora.
Generale
Per una rapida panoramica, consulta la guida per l'utente fornita qui: Authentication
Ecco una panoramica della configurazione generale.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Abilita o disabilita SOLO l'accesso tramite email. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Abilita o disabilita la registrazione via email per i nuovi utenti. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Consenti agli utenti di connettersi a LibreChat tramite vari social network. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Abilita o disabilita la registrazione di nuovi utenti tramite vari social network. | ALLOW_SOCIAL_REGISTRATION=false |
Nota: OpenID e SAML non supportano la possibilità di disabilitare solo la registrazione.
Suggerimenti rapidi:
- Anche con la registrazione disabilitata, puoi aggiungere utenti direttamente al database utilizzando lo script create-user descritto di seguito.
- Per eliminare un utente, puoi utilizzare lo script delete-user descritto anche di seguito.
Scadenza della sessione e token di aggiornamento
- Valori predefiniti: scadenza sessione: 15 minuti, scadenza token di aggiornamento: 7 giorni
- Per maggiori informazioni: GitHub PR #927 - Refresh Token
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tempo di scadenza della sessione. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Tempo di scadenza del token di aggiornamento. | 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 e Refresh Secret
- Dovresti utilizzare nuovi valori sicuri. Gli esempi forniti sono chiavi a 32 byte (64 caratteri in esadecimale).
- Usa questo strumento per generarne alcune rapidamente: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Chiave segreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Chiave segreta per il refresh dei JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Sistema di moderazione automatizzato (opzionale)
Il sistema di moderazione automatizzato è abilitato per impostazione predefinita. Utilizza un meccanismo di punteggio per tracciare le violazioni degli utenti. Man mano che gli utenti compiono azioni come accessi eccessivi, registrazioni o invio di messaggi, accumulano punteggi di violazione. Al raggiungimento di una soglia prestabilita, l'utente e il suo indirizzo IP vengono temporaneamente bannati. Questo sistema garantisce la sicurezza della piattaforma monitorando e penalizzando le attività rapide o sospette.
Per configurare il sistema di moderazione, consulta la guida alla configurazione.
Nota: Se desideri che questo funzioni in modalità di sviluppo, dovrai creare un file chiamato
.env.developmentnella directory principale e impostareDOMAIN_CLIENTsuhttp://localhost:3090o su qualsiasi porta fornita da vite durante l'esecuzione dinpm run frontend-dev
Script di gestione utenti
Crea User Script
Lo script create-user ti consente di aggiungere utenti direttamente al database, anche quando la registrazione è disabilitata. Ecco come utilizzarlo:
-
Per il
docker-compose.ymlpredefinito (se utilizzidocker compose upper avviare l'app):docker compose exec api npm run create-user -
Per il
deploy-compose.yml(se hai seguito la Guida Docker per Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user" -
Per lo sviluppo locale (dalla root del progetto):
npm run create-user
Segui le istruzioni per inserire l'email e la password del nuovo utente.
Script di eliminazione utente
Per eliminare un utente, è possibile utilizzare lo script delete-user:
-
Per il
docker-compose.ymlpredefinito (se utilizzidocker compose upper avviare l'app):docker compose exec api npm run delete-user [email protected] -
Per il
deploy-compose.yml(se hai seguito la Guida Docker per Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]" -
Per lo sviluppo locale (dalla root del progetto):
npm run delete-user [email protected]
Sostituisci [email protected] con l'email dell'utente che desideri eliminare.
Com’è questa guida?