Ana içeriğe geç

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:

  1. İlk kurulum akışı gösterilir.
  2. İlk yerel hesap oluşturulur.
  3. admin rolü atanır.
  4. 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 202 ve approvalRequired: true döndürür.
  • Doğru parola girişi 403 ve ACCOUNT_PENDING ("Your account is waiting for administrator approval") ile reddedilir; OAuth ?approval=pending ile geri döner.
  • Her kimliği doğrulanmış istekte durum yeniden okunur, böylece oturum active durumundan 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-approvals ile sorgulanır.
  • PATCH /api/users/:id/approve onaylayan yöneticiyi ve zamanı kaydeder, rolü değiştirmez; hesap user kalı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

RolAmaç
adminÖrnek, kullanıcı, sistem ayarı ve güvenilir Work çalışma zamanı yönetimi
userNormal 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/verify TOTP 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 none kabul 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ştirmede localhost gerekir; birden çok ana bilgisayar için WEBAUTHN_RP_ID ayarlayı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_DIR kalıcı ve erişim kontrollü.
  • ENCRYPTION_KEY veritabanı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.

İlgili Belgeler