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

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.

KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanHabilitar ou desabilitar APENAS o login por e-mail.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanHabilitar ou desabilitar o registro de novos usuários por e-mail.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermitir que usuários se conectem ao LibreChat com várias redes sociais.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanHabilite 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.
Tela de registro de usuárioTela de registro de usuário

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
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Tempo de expiração da sessão.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (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 data

JWT 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
KeyTypeDescriptionExample
JWT_SECRETstring (hex)Chave secreta JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (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.development no diretório raiz e definir DOMAIN_CLIENT como http://localhost:3090 ou qualquer porta fornecida pelo vite ao executar npm 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:

  1. Para o docker-compose.yml padrão (se você usar docker compose up para iniciar o aplicativo):

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

  1. Para o docker-compose.yml padrão (se você usar docker compose up para iniciar o aplicativo):

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