Auth0 może być używany jako dostawca OpenID Connect dla LibreChat. W przypadku korzystania z Auth0 z włączoną funkcją ponownego użycia tokenów (OPENID_REUSE_TOKENS=true), należy skonfigurować zmienną środowiskową OPENID_AUDIENCE, aby zapobiec problemom z uwierzytelnianiem.
Auth0 nie zezwala na adresy URL http://localhost w aplikacjach produkcyjnych. Do lokalnego programowania/testowania konieczne będzie użycie HTTPS. Możesz skorzystać z usług takich jak:
ngrok: ngrok http 3080 (zapewnia tunel HTTPS do localhost)
Caddy: Lokalny serwer proxy HTTPS
localtunnel: Podobne do ngrok
Przykład z ngrok:
ngrok http 3080# This will give you a URL like: https://abc123.ngrok.io
Ten krok jest wymagany w przypadku korzystania z OPENID_REUSE_TOKENS=true. Bez niego Auth0 będzie zwracać nieprzejrzyste tokeny, których LibreChat nie może zweryfikować, co spowoduje nieskończone pętle odświeżania.
Przejdź do Auth0 Dashboard → Applications → APIs
Kliknij "Create API"
Skonfiguruj API:
Nazwa: LibreChat API (lub preferowana przez Ciebie nazwa)
Identyfikator: https://api.librechat.ai (lub preferowany przez Ciebie identyfikator)
Uwaga: Jest to tylko unikalny identyfikator, a nie rzeczywisty URL. Nie musi on być dostępny.
Typowe wzorce: https://api.yourdomain.com, https://librechat.yourdomain.com itp.
Dodaj następujące zmienne środowiskowe do swojego pliku .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
LibreChat uwzględnia parametr audience w żądaniach autoryzacji, używając pierwszej niepustej wartości, gdy skonfigurowano wiele odbiorców oddzielonych przecinkami.
Auth0 rozpoznaje odbiorcę (audience) jako zarejestrowane API
Auth0 wydaje tokeny dostępu JWT, które można zweryfikować
LibreChat pomyślnie weryfikuje tokeny, a uwierzytelnianie działa poprawnie
Identyfikator Twojego API Auth0. Wymagany podczas używania OPENID_REUSE_TOKENS=true z Auth0, aby zapobiec problemom z nieprzejrzystymi tokenami. Akceptowane są wartości rozdzielone przecinkami dla walidacji JWT; żądania autoryzacji używają pierwszej niepustej wartości.