System uwierzytelniania
Ten przewodnik wyjaśnia, jak korzystać z systemu uwierzytelniania użytkowników LibreChat, który oferuje bezpieczne i łatwe logowanie przez e-mail oraz media społecznościowe. Dowiesz się, jak skonfigurować rejestrację, logowanie, resetowanie hasła i inne funkcje.
Ogólne
Aby uzyskać szybki przegląd, zapoznaj się z przewodnikiem użytkownika dostępnym tutaj: Authentication
Oto przegląd ogólnej konfiguracji.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Włącz lub wyłącz TYLKO logowanie przez e-mail. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Włącz lub wyłącz rejestrację nowych użytkowników przez Email. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Zezwalaj użytkownikom na łączenie się z LibreChat za pomocą różnych sieci społecznościowych. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Włącz lub wyłącz rejestrację nowych użytkowników przy użyciu różnych sieci społecznościowych. | ALLOW_SOCIAL_REGISTRATION=false |
Uwaga: OpenID i SAML nie obsługują możliwości wyłączenia samej rejestracji.
Szybkie wskazówki:
- Nawet przy wyłączonej rejestracji możesz dodawać użytkowników bezpośrednio do bazy danych, korzystając ze skryptu create-user opisanego poniżej.
- Aby usunąć użytkownika, możesz użyć skryptu delete-user, który został również szczegółowo opisany poniżej.
Wygasanie sesji i token odświeżania
- Wartości domyślne: wygaśnięcie sesji: 15 minut, wygaśnięcie tokena odświeżania: 7 dni
- Więcej informacji: GitHub PR #927 - Refresh Token
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Czas wygaśnięcia sesji. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Czas wygaśnięcia tokena odświeżania. | 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 i Refresh Secret
- Powinieneś użyć nowych, bezpiecznych wartości. Podane przykłady to 32-bajtowe klucze (64 znaki w formacie szesnastkowym).
- Użyj tego narzędzia, aby szybko wygenerować kilka: Klucze JWT
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Klucz tajny JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Klucz tajny odświeżania JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Zautomatyzowany system moderacji (opcjonalnie)
Zautomatyzowany system moderacji (Automated Moderation System) jest domyślnie włączony. Wykorzystuje on mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłanie wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.
Aby skonfigurować system modów, zapoznaj się z przewodnikiem konfiguracji.
Uwaga: Jeśli chcesz, aby to działało w trybie deweloperskim, musisz utworzyć plik o nazwie
.env.developmentw katalogu głównym i ustawićDOMAIN_CLIENTnahttp://localhost:3090lub inny port udostępniony przez vite podczas uruchamianianpm run frontend-dev
Skrypty zarządzania użytkownikami
Utwórz skrypt użytkownika
Skrypt create-user umożliwia dodawanie użytkowników bezpośrednio do bazy danych, nawet gdy rejestracja jest wyłączona. Oto jak go użyć:
-
Dla domyślnego
docker-compose.yml(jeśli używaszdocker compose up, aby uruchomić aplikację):docker compose exec api npm run create-user -
Dla
deploy-compose.yml(jeśli postępowałeś zgodnie z Przewodnikiem Docker dla Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user" -
Do lokalnego programowania (z katalogu głównego projektu):
npm run create-user
Postępuj zgodnie z instrukcjami, aby wprowadzić adres e-mail i hasło nowego użytkownika.
Skrypt usuwania użytkownika
Aby usunąć użytkownika, możesz użyć skryptu delete-user:
-
Dla domyślnego
docker-compose.yml(jeśli używaszdocker compose up, aby uruchomić aplikację):docker compose exec api npm run delete-user [email protected] -
Dla
deploy-compose.yml(jeśli postępowałeś zgodnie z Przewodnikiem Docker dla Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]" -
Do lokalnego programowania (z katalogu głównego projektu):
npm run delete-user [email protected]
Zastąp [email protected] adresem e-mail użytkownika, którego chcesz usunąć.
Jaka jest ta instrukcja?
Saldo
Skonfiguruj salda kredytów tokenów dla użytkowników w LibreChat
Konfiguracja poczty e-mail
Ten przewodnik wyjaśnia, jak skonfigurować bezpieczną weryfikację adresu e-mail oraz resetowanie hasła. Możesz skonfigurować to tak, aby działało z różnymi usługami pocztowymi, w tym Gmail, Mailgun oraz własnymi serwerami pocztowymi.