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.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Bật hoặc tắt CHỈ đăng nhập bằng email. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Bậ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_LOGIN | boolean | Cho 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_REGISTRATION | boolean | Bậ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.
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
- Để biết thêm thông tin: GitHub PR #927 - Refresh Token
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Thời gian hết hạn phiên. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (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 dataJWT 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
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Khóa bí mật JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (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.developmenttrong thư mục gốc và đặtDOMAIN_CLIENTthànhhttp://localhost:3090hoặc bất kỳ cổng nào được vite cung cấp khi chạynpm 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:
-
Đối với
docker-compose.ymlmặc định (nếu bạn sử dụngdocker compose upđể khởi chạy ứng dụng):docker compose exec api npm run create-user -
Đố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" -
Đố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:
-
Đối với
docker-compose.ymlmặc định (nếu bạn sử dụngdocker compose upđể khởi chạy ứng dụng):docker compose exec api npm run delete-user [email protected] -
Đố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]" -
Đố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?