Skip to main content
BuildingBlocks.FileServer, fiziksel disk üzerindeki dosyaları HTTP üzerinden sunar. İki çalışma modu vardır: korumasız PhysicalFileProvider veya kimlik kontrolü yapan PrivateMaviDepoFileProvider. İkinci modda her dosya/dizin erişiminden önce IFileServerUserContext.IsAuthenticated() çağrılır; yetkisiz istek 404 (var olmuyormuş gibi) döner.

DI ve middleware

Konfigürasyon — FileProviderOptions

FileProvider bölümüne bind edilir.
UseMaviDepoFileServer, auth seçimini config’ten okunan FileProvider:EnableAuth anahtarıyla yapar. POCO sınıfında bu alan tarihsel olarak EnableAuthorization adını taşır; etkin olan değer middleware’in okuduğu FileProvider:EnableAuth anahtarıdır.

PrivateMaviDepoFileProvider — auth-aware sunum

PhysicalFileProvider’ı genişletir. GetFileInfo/GetDirectoryContents çağrılarında bir scope açıp IFileServerUserContext çözer:
IFileServerUserContext uygulama tarafından implement edilir: KullaniciId, TenantId, Eposta, Token, IsAuthenticated().

Keycloak query-param token

<img src> / <a href> gibi tarayıcı kaynaklı isteklere Authorization header eklenemez. Bu yüzden Keycloak JWT şeması /files (ve /hubs) yolları için token’ı query string’den okuyacak şekilde yapılandırılmıştır:
Böylece frontend dosyayı şu şekilde isteyebilir:
Query-param token URL’de görünür (proxy/log’lara düşebilir). Yalnızca kısa ömürlü access token ile, HTTPS arkasında ve /files gibi sınırlı yollar için kullanın. EnableDirectoryBrowsing’i prod’da kapalı tutun.

Kullanım

İlgili

Keycloak

JWT şeması ve query-param token okuma.

Kimlik doğrulama

Şema seçimi ve yetkilendirme.

Docker (prod)

nginx-proxy arkasında dosya yolları.

API

Statik içerik ve controller pipeline’ı.