Kimlik Doğrulama ve Güvenlik
Libre WebUI, JWT oturumlu yerel hesaplar kullanır. Yeni kurulum her zaman bir yerel yönetici başlangıcına izin verir; sonraki yerel veya OAuth hesaplarının herkese açık kaydı varsayılan kapalıdır.
İlk Kurulum
Veritabanı boşken:
- İlk kurulum akışı gösterilir.
- İlk yerel hesap oluşturulur.
adminrolü atanır.- Sonraki kayıtlar açıkça etkinleştirilmedikçe kapalı kalır.
Mevcut veritabanları kullanıcı ve rollerini korur.
Yerel Hesaplar
- Kullanıcı adı
- 12 karakter ile 72 UTF-8 baytı arasında, büyük/küçük harf ve sayı içeren parola
- İsteğe bağlı e-posta
Parolalar saklanmadan önce bcrypt ile özetlenir. Giriş ve kayıt rotaları hız sınırlıdır.
Kayıt Onayı
Herkese açık kayıt tek başına erişim vermez. Form veya OAuth ile oluşturulan her hesap pending başlar ve girişten önce yönetici onayı ister.
Tek istisna boş veritabanındaki ilk gerçek hesaptır; atomik olarak active ve admin oluşturulur. Sonrakiler inceleme bekler.
Bekleyen kullanıcı:
- Kayıt başarılıdır fakat oturum tokenı yoktur; API
202veapprovalRequired: truedöndürür. - Doğru parola girişi
403veACCOUNT_PENDING("Your account is waiting for administrator approval") ile reddedilir; OAuth?approval=pendingile geri döner. - Her kimliği doğrulanmış istekte durum yeniden okunur, böylece oturum
activedurumundan uzun yaşayamaz.
Yönetici:
- Bekleyen onaylar kartında Hesabı etkinleştir ve reddetme görür. Reddetme silmedir; ayrı askıya alınmış durum yoktur.
- Oturum açıkken Kullanıcılar rozeti ve yeni kayıt bildirimi alır. Özet dakikada yaklaşık bir
GET /api/users/pending-approvalsile sorgulanır. PATCH /api/users/:id/approveonaylayan yöneticiyi ve zamanı kaydeder, rolü değiştirmez; hesapuserkalır ve sonraki girişte etkinleşir.
Yükseltme mevcut hesapları etkilemez. Yönetici tarafından oluşturulan hesap hemen aktiftir.
Herkese açık kaydı bilinçli açma
ENABLE_SIGNUP=true
Planlı kayıt penceresinden sonra false yapın. Mevcut kullanıcılar giriş yapabilir ve yöneticiler kapalıyken hesap oluşturabilir.
Boş veritabanı ENABLE_SIGNUP=false olsa da bir yerel yöneticiye izin verir; OAuth bu yeri alamaz. Özel uzak dağıtımda önce Cloudflare Access gibi kimlik izin listesiyle ana bilgisayarı koruyun.
Roller
| Rol | Amaç |
|---|---|
admin | Örnek, kullanıcı, sistem ayarı ve güvenilir Work çalışma zamanı yönetimi |
user | Normal sohbet, model, persona, belge ve ayar iş akışları |
Model kurma, silme, kopyalama, gönderme ve boşaltma ana bilgisayar kaynağını değiştirdiğinden yöneticilere özgüdür.
Work Erişimi
Work varsayılan yöneticilere sınırlıdır, çünkü model yönetilen kapsayıcıda rastgele komut yürütür. Yönetici, Ayarlar > Kullanıcı Yönetimi sekmesinden tüm etkin kullanıcılara açabilir; ayar kalıcıdır, hemen ve açık terminallerde geçerlidir. Ana bilgisayar klasörleri her zaman yalnız yöneticileredir. Erişim verilen herkesi güvenilir çalışma zamanı işletmecisi sayın.
Yetki mevcut veritabanı rolünden kontrol edilir, yalnız JWT’den değil. Yöneticiyi düşürmek Work’ü hemen geri alır; backend çalıştırmaları iptal edip kapsayıcı ve önizlemeleri durdurmaya çalışırken kayıt ve birimleri korur. Docker temizliği başarısızsa erişim geri dönmez, rol değişikliği hatayı bildirir ve işletmeci onarıp tekrarlar.
Kullanıcı silmek Work verisini yok eder. Libre önce kapsayıcı ve birimleri kaldırır, sonra hesabı siler. Temizlik kanıtlanamazsa silme başarısız olur.
Gruplar ve Kaynak İzinleri
Yöneticiler grup ve üyelikleri yönetir. Sohbet, Not, belge, koleksiyon, klasör, persona, istem, beceri veya takvim sahibi ortak iletişim kutusuyla kullanıcı ya da gruba read, write, admin verebilir (bkz. Paylaşım); araç sunucuları da aynı biçimde sınırlandırılır. Kaynaklar varsayılan özeldir; global admin başkasının içeriğini açmaz. Üyelik istek anında değerlendirilir ve kaldırma erişimi hemen geri alır. Ayarlar > Kullanıcı Yönetimi sekmesindeki etkili erişim görünümü rol, grup, özellik ve izinleri açıklar.
Güvenlik Denetim Günlüğü
Girişler ve hatalar, çıkışlar, oturum/token iptalleri, kullanıcı, grup, izin ve token değişiklikleri kullanım analizinden ayrı, yalnız eklemeli günlüğe yazılır. Sır benzeri anahtarlar kaldırılır ve yük boyutları sınırlandırılır; parola, token ve istemler girmez. Grup/izin değişikliği olayı aynı veritabanı işleminde yazar. Yönetici, Ayarlar > Kullanıcı Yönetimi sekmesinden sorgular; varsayılan saklama 180 gün (AUDIT_RETENTION_DAYS).
Oturumlar
JWT_SECRET=replace-with-a-long-random-secret
JWT_SECRET değişikliği oturumları geçersiz kılar. Yerel/OAuth tokenları varsayılan 7d olan JWT_EXPIRES_IN kullanır. WebSocket kalıcı tokenı kısa tek kullanımlık bilete çevirir ve temel oturum bitince kapanır.
Her giriş JWT’ye bağlı sunucu oturum kaydı oluşturur. Ayarlar → Oturumlar aygıtı, yöntemi, ilk/son etkinliği ve bitişi gösterir. İptal veya “Diğer oturumlardan çık” tokenı tüm kopyalarda hemen geçersiz kılar ve WebSocket’i kapatır. Eski, oturum ID’siz tokenlar sona kadar geçerlidir; yeni girişte diğerlerinden çıkmak hesap kesme zamanı da koyar.
İki Faktör ve Geçiş Anahtarları
- Kimlik doğrulayıcı (TOTP). Kayıt base32 sır ve
otpauth://bağlantısı gösterir; ilk 6 haneli kod etkinleştirip on tek kullanımlık kurtarma kodunu açar. Sonra parola kısa bir sınama döndürür,POST /api/auth/mfa/verifyTOTP veya kurtarma koduyla tamamlar. Zaman adımı yeniden oynatmayı önlemek için kaydolur; kurtarma kodları tek yönlü token olarak ve bir kez çalışır. Devre dışı bırakma veya yeniden üretme faktörü tekrar kanıtlamayı gerektirir. - Geçiş anahtarları (WebAuthn). Keşfedilebilir kimlik bilgisiyle parolasız giriş; kayıt ve girişte ekran kilidi, biyometri veya PIN gerekir. Attestation
nonekabul edilir, ES256/EdDSA desteklenir, malzeme şifrelenir ve ID anahtarlı arama tokenı olarak tutulur. Sınamalar tek kullanımlı ve beş dakikalıktır; ilerlemeyen sıfır olmayan sayaç klon işaretidir. HTTPS veya geliştirmedelocalhostgerekir; birden çok ana bilgisayar içinWEBAUTHN_RP_IDayarlayın.
Doğru paroladan sonra MFA sınama tokenı JWT_SECRET türevi fakat ayrı sırla imzalanır; API isteğini doğrulayamaz, tek hesap ve amaca bağlıdır, başarıda tüketilir.
Yönetici karttan veya MFA_REQUIRED_MODE=required ile herkese faktör zorunlu kılabilir. Faktörü olmayan sonraki girişte oturumdan önce kaydolur. Yönetici kurtarma için TOTP’yi sıfırlayabilir; geçiş anahtarlarını kullanıcı yönetir. Tüm olaylar denetim günlüğündedir.
MFA parola girişine uygulanır. OAuth/OIDC sağlayıcının faktörüne güvenir; API tokenları etkilenmez.
API Tokenları
Ayarlar → API anahtarları, lwk_ önekli kişisel token üretir. Sır bir kez gösterilir ve yalnız özetlenir. Açık kapsam listesi vardır (chat, models, documents, notes, personas, media, work, admin); her rota ailesi gerekli kapsamı ister, oturum yönetimine tokenla erişilemez. İsteğe bağlı süre, son kullanım, iptal ve kopyalar arası hız sınırı vardır. admin yalnız yönetici üretir ve kullanımda rolü yine gerekir. chat, genel /v1 API anahtarıdır.
Cloudflare Turnstile
TURNSTILE_SITE_KEY=...
TURNSTILE_SECRET_KEY=...
TURNSTILE_EXPECTED_HOSTNAME=chat.example.com
Frontend ayrı login ve signup eylemleri atar. Backend tokenı Cloudflare ile doğrular ve ana bilgisayar/eylem uyuşmazlığını reddeder. TURNSTILE_EXPECTED_HOSTNAME yoksa BASE_URL bekleneni sağlar. Anahtarlardan biri eksikse Turnstile kapalıdır.
GitHub OAuth
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
GITHUB_CALLBACK_URL=https://your-domain.example/api/auth/oauth/github/callback
gh_ önekli, varsayılan user yerel hesap oluşturur.
Hugging Face OAuth
HUGGINGFACE_CLIENT_ID=...
HUGGINGFACE_CLIENT_SECRET=...
HUGGINGFACE_CALLBACK_URL=https://your-domain.example/api/auth/oauth/huggingface/callback
hf_ önekli, varsayılan user hesap oluşturur.
İki sağlayıcı da kısa HttpOnly SameSite çerezine bağlı rastgele state kullanır. Eksik/uyuşmayan durum reddedilir. Başarıda JWT frontend’e 60 saniyelik HttpOnly çerezle döner, hemen değiştirilip temizlenir; bearer token URL, geçmiş veya referrer başlığına konmaz.
Yönlendirmeler ve CORS
Geri çağrı varsayılanları için BASE_URL, tarayıcı erişimi için CORS_ORIGIN ayarlayın:
BASE_URL=https://your-domain.example
CORS_ORIGIN=https://your-domain.example
Yerel Vite kökeni:
CORS_ORIGIN=http://localhost:5173,http://127.0.0.1:5173
Demo Modu
Devre dışı demo kimlik bilgileri ve sahte API kullanan frontend önizleme modudur; üretim kimlik doğrulaması değildir.
Güvenlik Kontrol Listesi
- Güçlü
JWT_SECRET. DATA_DIRkalıcı ve erişim kontrollü.ENCRYPTION_KEYveritabanıyla yedekli.- Herkese açık kayıt için Turnstile.
- Genel dağıtımda HTTPS.
- Sağlayıcı anahtarlarında en az kapsam.
- Tam OAuth geri çağrı URL’leri.
- Work yalnız kapsayıcı çalışma zamanını işletmesine güvendiğiniz kişilere.