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

Hệ thống xác thực

Hướng dẫn này giải thích cách sử dụng hệ thống xác thực người dùng của LibreChat, cung cấp tính năng đăng nhập qua email và mạng xã hội an toàn, dễ dàng. Bạn sẽ học cách thiết lập đăng ký, đăng nhập, đặt lại mật khẩu và nhiều tính năng khác.

Tổng quan

Để có cái nhìn tổng quan nhanh, hãy tham khảo hướng dẫn sử dụng được cung cấp tại đây: Authentication

Dưới đây là tổng quan về cấu hình chung.

KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanBật hoặc tắt CHỈ đăng nhập bằng email.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanBật hoặc tắt tính năng đăng ký bằng Email cho người dùng mới.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanCho phép người dùng kết nối với LibreChat bằng nhiều mạng xã hội khác nhau.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanBật hoặc tắt tính năng đăng ký người dùng mới bằng các mạng xã hội khác nhau.ALLOW_SOCIAL_REGISTRATION=false

Lưu ý: OpenID và SAML không hỗ trợ khả năng chỉ vô hiệu hóa đăng ký.

Mẹo nhanh:

  • Ngay cả khi tính năng đăng ký đã bị vô hiệu hóa, bạn vẫn có thể thêm người dùng trực tiếp vào cơ sở dữ liệu bằng cách sử dụng tập lệnh create-user được trình bày chi tiết dưới đây.
  • Để xóa người dùng, bạn có thể sử dụng tập lệnh delete-user cũng được trình bày chi tiết bên dưới.
Màn hình đăng ký người dùngMàn hình đăng ký người dùng

Hết hạn phiên và Refresh Token

  • Các giá trị mặc định: session expiry: 15 minutes, refresh token expiry: 7 days
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Thời gian hết hạn phiên.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Thời gian hết hạn của refresh token.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 và Refresh Secret

  • Bạn nên sử dụng các giá trị bảo mật mới. Các ví dụ được đưa ra là các khóa 32-byte (64 ký tự ở dạng hex).
    • Sử dụng công cụ này để tạo nhanh một số khóa: JWT Keys
KeyTypeDescriptionExample
JWT_SECRETstring (hex)Khóa bí mật JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)Khóa bí mật làm mới JWT.JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Hệ thống kiểm duyệt tự động (tùy chọn)

Hệ thống Kiểm duyệt Tự động được bật theo mặc định. Nó sử dụng cơ chế chấm điểm để theo dõi các vi phạm của người dùng. Khi người dùng thực hiện các hành động như đăng nhập, đăng ký hoặc gửi tin nhắn quá mức, họ sẽ tích lũy điểm vi phạm. Khi đạt đến ngưỡng đã thiết lập, người dùng và địa chỉ IP của họ sẽ bị cấm tạm thời. Hệ thống này đảm bảo tính bảo mật của nền tảng bằng cách giám sát và xử phạt các hoạt động nhanh hoặc đáng ngờ.

Để thiết lập hệ thống mod, hãy xem qua hướng dẫn thiết lập.

Lưu ý: Nếu bạn muốn tính năng này hoạt động ở chế độ phát triển (development mode), bạn sẽ cần tạo một tệp có tên là .env.development trong thư mục gốc và đặt DOMAIN_CLIENT thành http://localhost:3090 hoặc bất kỳ cổng nào được vite cung cấp khi chạy npm run frontend-dev

Các tập lệnh quản lý người dùng

Tạo User Script

Script create-user cho phép bạn thêm người dùng trực tiếp vào cơ sở dữ liệu, ngay cả khi tính năng đăng ký đã bị vô hiệu hóa. Dưới đây là cách sử dụng:

  1. Đối với docker-compose.yml mặc định (nếu bạn sử dụng docker compose up để khởi chạy ứng dụng):

    docker compose exec api npm run create-user
  2. Đối với deploy-compose.yml (nếu bạn đã làm theo Hướng dẫn Docker trên Ubuntu):

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user"
  3. Đối với phát triển cục bộ (từ thư mục gốc của dự án):

    npm run create-user

Làm theo các gợi ý để nhập email và mật khẩu của người dùng mới.

Tập lệnh xóa người dùng

Để xóa một người dùng, bạn có thể sử dụng tập lệnh delete-user:

  1. Đối với docker-compose.yml mặc định (nếu bạn sử dụng docker compose up để khởi chạy ứng dụng):

    docker compose exec api npm run delete-user [email protected]
  2. Đối với deploy-compose.yml (nếu bạn đã làm theo Hướng dẫn Docker trên Ubuntu):

    docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]"
  3. Đối với phát triển cục bộ (từ thư mục gốc của dự án):

    npm run delete-user [email protected]

Thay thế [email protected] bằng email của người dùng mà bạn muốn xóa.

Hướng dẫn này thế nào?