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.

Oturum açma sayfasında tema denetiminin yanında bir dil seçici bulunur. Tercih ettiğiniz dili giriş yapmadan önce seçebilirsiniz; seçim geçerli tarayıcıda saklanır ve kayıt sayfasında da geçerlidir.

İ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.

Kullanıcı Yönetimi​

Yönetici örneği Ayarlar → Kullanıcı Yönetimi altından yönetir. /users adresi aynı ayar alanını hesap listesiyle açar. Yönetim beş bölüme ayrılır:

  • Kullanıcılar: hesaplar, bekleyen kayıt onayları, hesap oluşturma ve düzenleme, silme ve iki faktör kurtarma.
  • Gruplar: grup üyelikleri ve etkili erişim görünümü.
  • Erişim ve ilkeler: Work erişimi ve çalışma zamanı ilkeleri, Ollama ayarları, model indirmeleri, web araması, Agents, araçlar, ses izinleri ve e-posta bildirimleri için giden posta sunucusu.
  • Güvenlik: örnek genelindeki iki faktör ilkesi ve güvenlik denetim günlüğü.
  • Varsayılanlar: giriş sayfasının ve kişisel tercihi olmayan hesapların teması.

Listeyi kullanıcı adı veya e-postayla arayın, doğru hesabı bulmak için role göre süzün. Bekleyen kayıtlar etkin hesaplardan ayrı durur, böylece onay işi kolayca ayırt edilir. Arama ve rol süzgecini temizlemek tam listeye döner.

Kullanıcı Oluştur ve Kullanıcıyı Düzenle odaklı hesap formları açar. Düzenlemede boş bırakılan parola mevcut parolayı korur. Silme ve iki faktör sıfırlama, seçili hesap için değişiklikten önce onay ister.

Bölüm gezinmesi ok tuşlarını, Home ve End tuşlarını, sağdan sola düzenler dahil destekler. Bölüm değiştirmek, Kullanıcı Yönetimi açık kaldığı sürece yarım kalan formları korur. Diğer bölümler ilk açılışlarında yüklenir; hesap listesini açmak her ilke ve denetim denetimini de yüklemez.

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 → Erişim ve ilkeler altından 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 Ayarlar → Kullanıcı Yönetimi → Gruplar altından 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. Gruplar bölümündeki 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 → Güvenlik altından 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, Ayarlar → Kullanıcı Yönetimi → Güvenlik altından 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​