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

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.

KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanWłącz lub wyłącz TYLKO logowanie przez e-mail.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanWłącz lub wyłącz rejestrację nowych użytkowników przez Email.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanZezwalaj użytkownikom na łączenie się z LibreChat za pomocą różnych sieci społecznościowych.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanWłą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.
Ekran rejestracji użytkownikaEkran rejestracji użytkownika

Wygasanie sesji i token odświeżania

KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Czas wygaśnięcia sesji.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (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 data

JWT 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
KeyTypeDescriptionExample
JWT_SECRETstring (hex)Klucz tajny JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (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.development w katalogu głównym i ustawić DOMAIN_CLIENT na http://localhost:3090 lub inny port udostępniony przez vite podczas uruchamiania npm 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ć:

  1. Dla domyślnego docker-compose.yml (jeśli używasz docker compose up, aby uruchomić aplikację):

    docker compose exec api npm run create-user
  2. 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"
  3. 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:

  1. Dla domyślnego docker-compose.yml (jeśli używasz docker compose up, aby uruchomić aplikację):

    docker compose exec api npm run delete-user [email protected]
  2. 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]"
  3. 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?