RuleGate
RuleGate; .NET ve Angular uygulamalarında rol, izin, attribute, kaynak ve bağlam tabanlı erişim kurallarını merkezi, test edilebilir ve fail-closed politikalarla yönetmek için geliştirdiğim açık kaynak bir authorization framework'üdür.
- Bağlam
- Kişisel açık kaynak framework projesi
- Rol
- Kurucu, yazılım mimarı ve framework geliştirici
- Durum
- Tamamlandı — kararlı v1.0.0
- Kategori
- Framework
- Dönem
- 26 Tem 2026 - 1 Ağu 2026
Teknolojiler
C# .NET Standard 2.0 .NET 8-10 ASP.NET Core Angular 9-22 TypeScript YAML Keycloak OpenTelemetry NuGet npm GitHub Actions xUnit Vitest BenchmarkDotNet
Bağlantılar
Kod Deposu github.com/fotbiler-lab/rulegate Kararlı Sürüm github.com/fotbiler-lab/rulegate/releases/tag/v1.0.0 Dokümantasyon (Wiki) github.com/fotbiler-lab/rulegate/wiki NuGet Paket Profili nuget.org/profiles/fotbiler NuGet: Fotbiler.RuleGate.Abstractions nuget.org/packages/Fotbiler.RuleGate.Abstractions NuGet: Fotbiler.RuleGate.Core nuget.org/packages/Fotbiler.RuleGate.Core NuGet: Fotbiler.RuleGate.Manifest nuget.org/packages/Fotbiler.RuleGate.Manifest NuGet: Fotbiler.RuleGate.AspNetCore nuget.org/packages/Fotbiler.RuleGate.AspNetCore NuGet: Fotbiler.RuleGate.Cli nuget.org/packages/Fotbiler.RuleGate.Cli NuGet: Fotbiler.RuleGate.Keycloak nuget.org/packages/Fotbiler.RuleGate.Keycloak npm Paket Ailesi npmjs.com/org/fotbiler npm: @fotbiler/rulegate-client npmjs.com/package/@fotbiler/rulegate-client npm: @fotbiler/rulegate-angular npmjs.com/package/@fotbiler/rulegate-angular npm: @fotbiler/rulegate-angular-legacy npmjs.com/package/@fotbiler/rulegate-angular-legacy
Proje Türü ve Güncel Durum
- RuleGate, .NET ve Angular uygulamaları için geliştirdiğim local-first, provider-independent ve policy-driven bir authorization framework'üdür.
- Kararlı v1.0.0 kapsamı 1 Ağustos 2026 tarihinde tamamlanarak MIT lisansı ile yayınlandı. Kaynak kodu, dokümantasyonu, örnekleri ve paket yayın tanımları herkese açıktır.
- RuleGate bir authentication veya kullanıcı yönetim sistemi değildir. Keycloak, ASP.NET Core Identity, IdentityServer ya da standartlara dayalı başka bir kimlik sisteminin üzerinde çalışır.
Çözdüğü Problem ve Tasarım Amacı
- Framework; controller, service, guard ve UI componentlerine dağılarak tekrarlanan rol, claim, permission ve resource kontrollerini tek bir politika modelinde toplar.
- Bu kararları okunabilir, deterministik ve test edilebilir hale getirirken güvenlik sınırını korunan backend üzerinde tutar.
- Her karar açık bir soruya cevap verir: Bu subject, mevcut context içinde bu resource üzerinde bu action'ı gerçekleştirebilir mi?
Yetkilendirme Modeli ve Yetenekler
- Politika modeli RBAC, permission tabanlı yetkilendirme, ABAC, CBAC, resource kuralları, sahiplik, organizasyon sınırları ve mantıksal all/any/not bileşimlerini birlikte destekler.
- Subject, resource ve request context attribute'ları değerlendirilebilir; attribute'lar birbiriyle karşılaştırılabilir; string, collection, presence, null, zaman aralığı, authentication/MFA yaşı, tenant, device ve network zone kuralları uygulanabilir.
- Politikalar C# veya YAML ile tanımlanabilir. Tipli değerler, manifest sınırları, deterministik değerlendirme ve açık missing-data davranışı kararları öngörülebilir tutar.
Paket Mimarisi
- NuGet ailesi altı odaklı paketten oluşur: Abstractions, Core, Manifest, AspNetCore, Cli ve isteğe bağlı Keycloak adaptörü.
- npm ailesinde framework-independent istemci, modern Angular paketi ve legacy Angular adaptörü bulunur. Tarayıcı tarafındaki guard ve directive'ler kullanıcı deneyimini yönetir; backend denetiminin yerini almaz.
- Altı NuGet paketinin ve üç npm paketinin tamamı koordineli kararlı 1.0.0 sürümüyle yayınlandı.
ASP.NET Core, Angular ve Kimlik Entegrasyonu
- ASP.NET Core entegrasyonu dynamic policy, Minimal API helper'ları, MVC attribute'ları, imperative service authorization, güvenilir attribute enrichment ve güvenli HTTP sonuç eşlemesini destekler.
- Angular entegrasyonları modern ve legacy uygulamalar için guard, directive, authorization-state projection ve üretilmiş TypeScript identifier'ları sağlar.
- Provider-independent çekirdek, güvenilir kimlik verilerini host uygulamadan alır. İsteğe bağlı Keycloak paketi, politika tanımlarını Keycloak'a bağımlı hale getirmeden rol ve claim'leri normalize eder.
Policy Yaşam Döngüsü, CLI ve Gözlemlenebilirlik
- RuleGate CLI manifestleri validate, test, explain ve lint eder; strongly typed C# ve TypeScript policy identifier'ları üretir.
- Politikalar dosya, embedded resource, configuration, memory veya uygulamaya özel kaynaklardan yüklenebilir; son geçerli snapshot korunarak atomic reload ile değiştirilebilir.
- Güvenli diagnostics ile OpenTelemetry activity ve metricleri, hassas authorization attribute değerlerini açığa çıkarmadan operasyonel görünürlük sağlar.
Güvenlik ve Uyumluluk
- RuleGate default-deny ve fail-closed davranır. Eksik politika, geçersiz tip, bulunmayan zorunlu veri, provider hatası veya belirsiz değerlendirme erişimin reddedilmesiyle sonuçlanır.
- Kararlı uyumluluk matrisi portable kütüphaneleri .NET Standard 2.0 ve .NET 8-10 üzerinde; ASP.NET Core entegrasyonlarını .NET Core 3.1'den .NET 10'a kadar; CLI'ı ise .NET 8-10 üzerinde doğrular.
- Frontend package-consumer testleri framework-independent, modern Angular ve legacy Angular paketleriyle Angular 9-22 aralığını kapsar. Legacy doğrulama yalnızca uyumluluğu gösterir; üretici güvenlik desteğini uzatmaz.
Kalite, Test ve Yayın Otomasyonu
- GitHub Actions; format kontrolü, .NET ve Angular build/test işlemleri, dependency audit, public API freeze ve package-only consumer senaryolarını doğrular.
- Kalite kapıları; manifest fuzz ve property-based güvenlik testleri, sınırlı concurrency stress, benchmark, üretilen kodun derlenmesi, referans uygulamalar, sensitive-diagnostic kontrolleri ve tekrarlanabilir NuGet/npm artifact doğrulamasını içerir.
- Ayrı workflow'lar release artifactlerini NuGet ve npm üzerine yayınlar, release notlarını üretir ve canonical rehberi GitHub Wiki ile eşitler.
Dokümantasyon ve Referans Uygulamalar
- Depoda birbirine bağlı on dört bölümlük rehber, glossary, güvenlik ve uyumluluk referansları, migration kılavuzu, gerçek hayat tarifleri ve üretilmiş GitHub Wiki bulunur.
- Resmi referans uygulamaları; Minimal ASP.NET Core host ile Keycloak, ASP.NET Core, SQLite, Angular, güvenilir attribute provider'ları ve yalnızca yayınlanmış paketleri kullanan bir doküman onay sistemini gösterir.
- Örnekler authentication, authorization, frontend projection, test, diagnostics, reload ve production sorumluluklarını birbirinden açık biçimde ayırır.
Katılım Durumu ve Geliştirme Süresi
- RuleGate'i kurucusu, yazılım mimarı, backend/frontend kütüphane geliştiricisi, test sorumlusu, dokümantasyon yazarı ve release sorumlusu olarak tek başıma tasarlayıp geliştirdim.
- Git geçmişi 26 Temmuz 2026 tarihinde başlıyor. Kararlı v1.0.0 etiketi 1 Ağustos 2026 tarihinde yayınlandı; başlangıç ve bitiş günleri dahil ilk kararlı kapsam yedi takvim gününde tamamlandı.
- Authorization modellemesinden public API tasarımına; security hardening, compatibility testleri, dokümantasyon, paket otomasyonu ve kararlı yayına kadar tüm süreci yönettim.
Kaynak Kod ve Paketler
- Kaynak kod deposu: https://github.com/fotbiler-lab/rulegate
- Kararlı v1.0.0 sürümü: https://github.com/fotbiler-lab/rulegate/releases/tag/v1.0.0
- NuGet paket ailesi: https://www.nuget.org/profiles/fotbiler
- npm paket ailesi: https://www.npmjs.com/org/fotbiler