Sistema de Autenticação
Este guia explica como usar o sistema de autenticação de usuário do LibreChat, que oferece logins seguros e fáceis por e-mail e redes sociais. Você aprenderá a configurar o cadastro, login, redefinição de senha e muito mais.
Geral
Para uma visão geral rápida, consulte o guia do usuário fornecido aqui: Authentication
Aqui está uma visão geral da configuração geral.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Habilitar ou desabilitar APENAS o login por e-mail. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Habilitar ou desabilitar o registro de novos usuários por e-mail. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Permitir que usuários se conectem ao LibreChat com várias redes sociais. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Habilite ou desabilite o registro de novos usuários usando várias redes sociais. | ALLOW_SOCIAL_REGISTRATION=false |
Nota: OpenID e SAML não oferecem suporte à capacidade de desabilitar apenas o registro.
Dicas Rápidas:
- Mesmo com o registro desativado, você pode adicionar usuários diretamente ao banco de dados usando o script create-user detalhado abaixo.
- Para excluir um usuário, você pode usar o script delete-user, também detalhado abaixo.
Expiração de Sessão e Token de Atualização
- Valores padrão: expiração da sessão: 15 minutos, expiração do token de atualização: 7 dias
- Para mais informações: GitHub PR #927 - Refresh Token
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tempo de expiração da sessão. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Tempo de expiração do token de atualização. | 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
- Você deve usar novos valores seguros. Os exemplos fornecidos são chaves de 32 bytes (64 caracteres em hexadecimal).
- Use esta ferramenta para gerar algumas rapidamente: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Chave secreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Chave secreta de atualização JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Sistema de Moderação Automatizado (opcional)
O Automated Moderation System está habilitado por padrão. Ele utiliza um mecanismo de pontuação para rastrear violações dos usuários. À medida que os usuários realizam ações como excesso de logins, registros ou envio de mensagens, eles acumulam pontuações de violação. Ao atingir um limite definido, o usuário e seu IP são banidos temporariamente. Este sistema garante a segurança da plataforma ao monitorar e penalizar atividades rápidas ou suspeitas.
Para configurar o sistema de moderação, revise o guia de configuração.
Observação: Se você deseja que isso funcione no modo de desenvolvimento, será necessário criar um arquivo chamado
.env.developmentno diretório raiz e definirDOMAIN_CLIENTcomohttp://localhost:3090ou qualquer porta fornecida pelo vite ao executarnpm run frontend-dev
Scripts de Gerenciamento de Usuários
Criar Script de Usuário
O script create-user permite que você adicione usuários diretamente ao banco de dados, mesmo quando o registro estiver desativado. Veja como usá-lo:
-
Para o
docker-compose.ymlpadrão (se você usardocker compose uppara iniciar o aplicativo):docker compose exec api npm run create-user -
Para o
deploy-compose.yml(se você seguiu o Guia do Docker no Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run create-user" -
Para desenvolvimento local (a partir da raiz do projeto):
npm run create-user
Siga as instruções para inserir o e-mail e a senha do novo usuário.
Script para Excluir Usuário
Para excluir um usuário, você pode usar o script delete-user:
-
Para o
docker-compose.ymlpadrão (se você usardocker compose uppara iniciar o aplicativo):docker compose exec api npm run delete-user [email protected] -
Para o
deploy-compose.yml(se você seguiu o Guia do Docker no Ubuntu):docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run delete-user [email protected]" -
Para desenvolvimento local (a partir da raiz do projeto):
npm run delete-user [email protected]
Substitua [email protected] pelo e-mail do usuário que você deseja excluir.
Como está este guia?
Saldo
Configure saldos de créditos de tokens para usuários no LibreChat
Configuração de e-mail
Este guia explica como configurar a verificação de e-mail/redefinição de senha segura. Você pode configurá-lo para funcionar com vários serviços de e-mail, incluindo Gmail, Mailgun e servidores de e-mail personalizados.