O Auth0 pode ser usado como um provedor OpenID Connect para o LibreChat. Ao usar o Auth0 com a reutilização de tokens ativada (OPENID_REUSE_TOKENS=true), você deve configurar a variável de ambiente OPENID_AUDIENCE para evitar problemas de autenticação.
O Auth0 não permite URLs http://localhost em aplicações de produção. Para desenvolvimento/testes locais, você precisará usar HTTPS. Você pode usar serviços como:
ngrok: ngrok http 3080 (fornece um túnel HTTPS para o localhost)
Caddy: Servidor proxy HTTPS local
localtunnel: Semelhante ao ngrok
Exemplo com ngrok:
ngrok http 3080# This will give you a URL like: https://abc123.ngrok.io
Esta etapa é obrigatória ao usar OPENID_REUSE_TOKENS=true. Sem ela, o Auth0 retornará tokens opacos que não podem ser validados pelo LibreChat, causando loops de atualização infinitos.
Vá para o Auth0 Dashboard → Applications → APIs
Clique em "Create API"
Configure a API:
Nome: LibreChat API (ou o nome de sua preferência)
Identificador: https://api.librechat.ai (ou seu identificador de preferência)
Nota: Este é apenas um identificador único, não uma URL real. Ele não precisa estar acessível.
Padrões comuns: https://api.yourdomain.com, https://librechat.yourdomain.com, etc.
Adicione as seguintes variáveis de ambiente ao seu arquivo .env:
# OpenID Connect Configuration# Domain from Basic Information (add https:// prefix)OPENID_ISSUER=https://dev-abc123.us.auth0.com# Client ID from Basic InformationOPENID_CLIENT_ID=your_long_alphanumeric_client_id# Client Secret from Basic Information (click to reveal)OPENID_CLIENT_SECRET=your_client_secret_from_basic_information# Callback URL (must match what's configured in Auth0)OPENID_CALLBACK_URL=/oauth/openid/callback# Token ConfigurationOPENID_REUSE_TOKENS=trueOPENID_SCOPE=openid profile email offline_access# IMPORTANT: Your Auth0 API identifier (from Step 3)OPENID_AUDIENCE=https://api.librechat.ai# Security Settings (recommended)OPENID_USE_PKCE=true# Session Configuration (generate a secure random string)OPENID_SESSION_SECRET=your-secure-session-secret-32-chars-or-more# Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000)# OPENID_MAX_LOGOUT_URL_LENGTH=2000# Optional: Custom button appearanceOPENID_BUTTON_LABEL=Continue with Auth0# OPENID_IMAGE_URL=https://path-to-auth0-logo.png# If using ngrok for testing, also update:# DOMAIN_CLIENT=https://your-domain.ngrok.io# DOMAIN_SERVER=https://your-domain.ngrok.io
O LibreChat inclui o parâmetro audience nas solicitações de autorização, usando o primeiro valor não vazio quando múltiplos públicos separados por vírgula são configurados.
O Auth0 reconhece o audience como uma API registrada
O Auth0 emite tokens de acesso JWT que podem ser validados
O LibreChat valida tokens com sucesso e a autenticação funciona corretamente
O identificador da sua API Auth0. Obrigatório ao usar OPENID_REUSE_TOKENS=true com Auth0 para evitar problemas com tokens opacos. Valores separados por vírgula são aceitos para validação JWT; solicitações de autorização usam o primeiro valor não vazio.