ASP.NET Core .NET 10 ve FIDO Passkey ile Şifresiz Kimlik Doğrulama

ASP.NET Core .NET 10 ve FIDO Passkey ile Şifresiz Kimlik Doğrulama Rehberi
.NET 10 ile gelen yeni ASP.NET Core özellikleri, modern web uygulamalarında güvenliği ve performansı bir üst seviyeye taşıyor. Diğer yandan FIDO Passkey teknolojisi, parolasız kimlik doğrulama yaklaşımıyla hem kullanıcı deneyimini iyileştiriyor hem de parola kaynaklı saldırıları büyük ölçüde ortadan kaldırıyor. Bu yazıda, hem teknik hem de teknik olmayan bakış açısından, ASP.NET Core .NET 10 yeniliklerini ve FIDO Passkey ile şifresiz kimlik doğrulamayı nasıl bir araya getirebileceğinizi inceleyeceğiz. Geliştirme süreçlerinde Kompanse Yazılım gibi bir yazılım partneriyle çalışıyorsanız, bu teknolojiler proje mimariniz için önemli avantajlar sağlayabilir.
Şifresiz Kimlik Doğrulama Nedir ve Neden Önemli?
Şifresiz (passwordless) kimlik doğrulama, kullanıcıların sisteme giriş yapmak için klasik kullanıcı adı & parola ikilisine ihtiyaç duymadan, biyometrik veriler (parmak izi, yüz tanıma), güvenli cihazlar veya kriptografik anahtarlar kullanarak kimliklerini kanıtlamasıdır. FIDO Alliance tarafından standartlaştırılan Passkey yaklaşımı bu alandaki en olgun çözümlerden biridir.
İşin teknik olmayan tarafında, şifresiz kimlik doğrulamanın temel faydaları şunlardır:
- Daha iyi kullanıcı deneyimi: Kullanıcılar parola hatırlamak, sıfırlamak veya karmaşık kombinasyonlarla uğraşmaz.
- Daha yüksek güvenlik: Parola tahmini, kimlik avı (phishing), brute-force gibi klasik saldırı vektörleri büyük ölçüde etkisiz hale gelir.
- Daha az destek yükü: Parola sıfırlama talepleri ve destek masrafı azalır.
Teknik açıdan ise, Passkey tabanlı çözümler açık anahtar kriptografisi kullanır. Kullanıcının cihazında bir özel anahtar saklanır, sunucu tarafında ise buna karşılık gelen açık anahtar tutulur. Kimlik doğrulama sırasında kullanıcı cihazı, sunucunun gönderdiği bir “challenge” mesajını özel anahtarla imzalar; sunucu da açık anahtarla bu imzayı doğrular. Böylece parola sunucuya hiç gitmez, veri tabanında saklanmaz.
.NET 10 ile Gelen Öne Çıkan ASP.NET Core Yenilikleri
.NET 10, özellikle ASP.NET Core ve Blazor tarafında hem geliştiricilerin işini kolaylaştıran hem de güvenliği destekleyen pek çok yenilik getiriyor. FIDO Passkey gibi modern kimlik doğrulama çözümlerini entegre ederken bu yeniliklerden doğrudan faydalanabilirsiniz.
Blazor Web App Güvenlik Örnekleri ve Kimlik Sağlayıcıları
.NET 10 ile birlikte Blazor Web App güvenlik örnekleri güncellendi ve genişletildi. Aşağıdaki senaryolar için resmi örnekler bulunuyor:
- OpenID Connect (OIDC) ile Blazor Web App güvenli hale getirme
- Microsoft Entra ID (eski adıyla Azure AD) ile kimlik doğrulama
- Windows Authentication ile kurumsal intranet senaryoları
Bu örneklerin önemli bir noktası, her birinde ayrı bir web API projesi (MinimalApiJwt) bulunmasıdır. Bu minimal API projesi, harici bir web API'nin JWT ile güvenli şekilde yapılandırılması ve çağrılmasını gösterir. Şifresiz kimlik doğrulama senaryolarında, Passkey ile kimlik doğrulanan kullanıcı için üretilen access token’ların bu tür API’lere iletilmesi tipik bir mimaridir.
Program.cs Üzerinden Kodla Konfigürasyon
.NET 10 örneklerinde, kimlik doğrulama ve yetkilendirme yapılandırmaları doğrudan Program.cs üzerinden C# koduyla yapılıyor. Bu, özellikle OIDC veya Microsoft Entra ID ile entegrasyon yaparken yapılandırmayı merkezi ve okunabilir kılıyor. Örneğin bir OIDC yapılandırması şu yapıda olabilir:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = builder.Configuration["Authentication:OIDC:Authority"];
options.ClientId = builder.Configuration["Authentication:OIDC:ClientId"];
options.ClientSecret = builder.Configuration["Authentication:OIDC:ClientSecret"];
options.ResponseType = "code";
options.SaveTokens = true;
});
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
Passkey tabanlı kimlik doğrulama için, genellikle bu OIDC katmanının altında FIDO/WebAuthn destekli bir kimlik sağlayıcı (IdP) kullanılır. Yani ASP.NET Core uygulamanız doğrudan Passkey ile uğraşmak zorunda kalmaz; OIDC üzerinden güvenli bir token alır.
appsettings.json ile Konfigürasyon Esnekliği
.NET 10 dokümantasyonunda, OIDC ve Entra entegrasyonları için JSON konfigürasyon sağlayıcısı ile ayarların appsettings.json üzerinden yönetilmesine yönelik yeni bir bölüm bulunuyor. Bu yaklaşım:
- Farklı ortamlar (development, staging, production) arasında ayarları ayırmayı kolaylaştırır.
- Gizli bilgiler için Azure Key Vault gibi servislerle entegre çalışmayı mümkün kılar.
Örneğin:
builder.Configuration
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true);
Bu sayede Passkey destekli IdP'nizin OIDC uç noktaları, istemci kimliği gibi bilgiler konfigürasyon dosyalarında yönetilebilir.
Blazor QuickGrid ve Kullanıcı Deneyimi İyileştirmeleri
.NET 10'da Blazor QuickGrid bileşeni için RowClass parametresi eklendi. Bu parametreyle, satır bazında CSS sınıfı atayarak duruma göre renklendirme veya vurgulama yapabilirsiniz. Örneğin, kimlik doğrulama denemelerini veya güvenlik olaylarını listelediğiniz bir grid düşünün:
<QuickGrid Items="loginAttempts" RowClass="GetRowCssClass">
...
</QuickGrid>
@code {
private string GetRowCssClass(LoginAttempt item) =>
item.IsSuspicious ? "row-suspicious" : null;
}
Bu tür görsel ipuçları, güvenlik olaylarını izleyen ekiplerin işini kolaylaştırır.
Blazor Script Sunumu ve Performans İyileştirmeleri
.NET 10 öncesinde Blazor script dosyaları ASP.NET Core paylaşılan framework’ü içindeki gömülü kaynaklardan servis ediliyordu. .NET 10 ile birlikte:
- Blazor script’i (
blazor.web.jsveyablazor.server.js) artık statik web varlığı (static web asset) olarak sunuluyor. - Otomatik sıkıştırma (compression) ve fingerprinting uygulanıyor.
Projenizde en az bir adet .razor bileşeni varsa script otomatik dahil edilir. Eğer bileşen yok ama yine de Blazor script’ine ihtiyacınız varsa, proje dosyanıza şu özelliği ekleyebilirsiniz:
<PropertyGroup>
<RequiresAspNetWebAssets>true</RequiresAspNetWebAssets>
</PropertyGroup>
Bu değişiklikler, hem sayfa yükleme sürelerini iyileştirir hem de güvenlik açısından önemli olan içerik bütünlüğü ve cache yönetimini kolaylaştırır.
Route Attribute için Söz Dizimi Vurgulama
.NET 10 ile [Route] attribute’u için route şablonu söz dizimi vurgulaması desteği geldi. Bu sayede karmaşık route tanımlarında parametreleri ve kalıpları IDE üzerinde daha net görebilirsiniz. Özellikle API uç noktalarınızı Passkey tabanlı kimlik doğrulamayla korurken, hangi endpoint’in hangi yetkilendirme politikasına tabi olduğunu daha rahat takip edebilirsiniz.
NavigationManager Davranış Değişikliği
Önceki .NET sürümlerinde NavigationManager.NavigateTo aynı sayfaya yapılan geçişlerde bile sayfanın en üstüne scroll ediyordu. .NET 10’da bu davranış değişti; artık aynı sayfaya navigasyonda tarayıcı üst kısma dönmüyor. Bu, özellikle Passkey ile kimlik doğrulama sonrası query string veya fragment güncellerken kullanıcı deneyimini korumak için önemli bir iyileştirmedir.
ReconnectModal ve CSP Uyumlu Bağlantı Yönetimi
Blazor Web App şablonu artık ReconnectModal bileşenini içeriyor. Bu bileşen, istemci ile sunucu arasındaki WebSocket bağlantısı koptuğunda gösterilen yeniden bağlanma arayüzünü yönetmenizi sağlıyor. Önemli bir nokta, bu bileşenin stil eklemelerini programatik olarak yapmaması; böylece style-src için daha sıkı Content Security Policy (CSP) ayarları kullanan uygulamalarla uyumlu çalışıyor.
Şifresiz kimlik doğrulama senaryolarında, bağlantı kopmaları sonrası token yenileme, oturum süresi takibi gibi konular kritik olabilir. ReconnectModal ile kullanıcıya daha kontrollü bir deneyim sunabilirsiniz.
FIDO Passkey (Şifresiz Kimlik Doğrulama) Temelleri
FIDO Passkey, kullanıcıların web sitelerine ve uygulamalara parola girmeden giriş yapmalarını sağlayan, FIDO Alliance tarafından standartlaştırılmış bir teknolojidir. Teknik olarak WebAuthn ve CTAP protokollerine dayanır.
Passkey Nasıl Çalışır?
Yüksek seviyede süreç şu şekildedir:
- Kayıt (Registration): Kullanıcı, destekleyen bir tarayıcı ve cihaz üzerinden sitenize kayıt olur. Cihazda bir anahtar çifti (public/private key) oluşturulur. Özel anahtar cihazda kalır, açık anahtar sunucuya gönderilir.
- Kimlik Doğrulama (Authentication): Giriş sırasında sunucu bir challenge üretir ve istemciye gönderir. Cihaz, bu challenge’ı özel anahtarla imzalar ve imzayı sunucuya geri gönderir.
- Doğrulama: Sunucu, daha önce sakladığı açık anahtarla imzayı doğrular. İmza geçerliyse kullanıcı kimliği teyit edilir.
Bu modelde, sunucu tarafında hiçbir zaman parola saklanmaz. Kullanıcının güvenliği, cihazında bulunan özel anahtar ve biyometrik doğrulama (parmak izi, yüz, PIN vb.) ile sağlanır.
İşletmeler İçin Avantajlar
Kurumsal tarafta FIDO Passkey kullanmanın başlıca avantajları:
- Veri ihlali riskinin azalması: Parola listeleri çalınamaz, çünkü böyle bir liste yoktur.
- Uyumluluk ve regülasyon: Güçlü kimlik doğrulama gerektiren regülasyonlara (örneğin PSD2 SCA) uyumu kolaylaştırır.
- Destek maliyetlerinin düşmesi: Parola reset süreçleri ortadan kalktıkça IT yardım masası üzerindeki yük azalır.
ASP.NET Core .NET 10 ile Passkey Entegrasyon Mimarisi
ASP.NET Core uygulamanıza Passkey eklemenin birden fazla yolu vardır. En yaygın yaklaşım, Passkey desteği sunan bir harici kimlik sağlayıcı (IdP) kullanmak ve bu sağlayıcıyı OIDC üzerinden uygulamanıza bağlamaktır.
Önerilen Yüksek Seviye Mimari
- Kullanıcı → Tarayıcı → IdP: Kullanıcı, ASP.NET Core uygulamanız üzerinden giriş yapmak istediğinde OIDC akışıyla IdP’ye yönlendirilir.
- IdP → Passkey: IdP, FIDO Passkey / WebAuthn akışını yönetir. Kullanıcının cihazında Passkey ile kimlik doğrulaması yapılır.
- IdP → ASP.NET Core: Başarılı kimlik doğrulama sonrası IdP, OIDC
codeveyaid_tokenile uygulamanıza döner. - ASP.NET Core → API: Uygulamanız, gerekirse
MinimalApiJwtbenzeri bir API’ye access token ile çağrı yapar.
Bu mimaride Passkey’in tüm karmaşık detayları IdP tarafında kalır; ASP.NET Core uygulamanız standart OIDC entegrasyonu ile yetinir. Kompanse Yazılım gibi bir ekip, bu entegrasyonun hem güvenli hem de ölçeklenebilir şekilde tasarlanmasına yardımcı olabilir.
Minimal API ile Güvenli Web API Örneği
.NET 10’daki MinimalApiJwt örneğine benzer şekilde, access token doğrulayan basit bir API şu şekilde tanımlanabilir:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = builder.Configuration["Authentication:Authority"];
options.Audience = builder.Configuration["Authentication:Audience"];
options.RequireHttpsMetadata = true;
});
builder.Services.AddAuthorization();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/api/profile", (ClaimsPrincipal user) => new
{
Name = user.Identity?.Name,
Sub = user.FindFirst("sub")?.Value
}).RequireAuthorization();
app.Run();
Bu API, Passkey ile kimliği doğrulanmış bir kullanıcı adına IdP tarafından verilen JWT’yi doğrular ve sadece yetkili kullanıcılara profil bilgilerini döner.
Veri Koruma, Azure Key Vault ve Dağıtık Senaryolar
.NET 10 dokümantasyonunda, özellikle Microsoft Entra ID örneklerinde iki kritik konuya vurgu yapılıyor:
- Şifreli dağıtık token cache: Web farm senaryolarında (birden fazla web sunucusu) kullanıcı oturumlarının tutarlı kalması için token cache’in dağıtık ve şifreli olması öneriliyor.
- Azure Key Vault ve Managed Identity: Veri koruma anahtarlarının güvenli bir yerde tutulması için Azure Key Vault kullanılması ve uygulamanın bu kasaya Azure Managed Identity ile erişmesi tavsiye ediliyor.
Passkey senaryolarında, IdP’den alınan token’ların güvenli şekilde saklanması ve şifrelenmiş bir cache’te tutulması, hem güvenlik hem de performans açısından önemlidir.
Güvenlik, Çerezler ve Gizlilik
FIDO Alliance’ın Passkey sayfasında da vurgulandığı gibi, modern web siteleri hem güvenlik hem de gizlilik için çeşitli çerez ve izleme mekanizmaları kullanıyor. ASP.NET Core tarafında da:
- Kimlik doğrulama çerezleri (authentication cookies) için
HttpOnly,Secureve uygunSameSiteayarlarının yapılması gerekir. - Analitik ve kişiselleştirme çerezleri için kullanıcıdan açık rıza almak, KVKK ve GDPR gibi regülasyonlara uyum açısından zorunludur.
Şifresiz kimlik doğrulama, kullanıcı verilerinin korunmasına katkı sağlasa da, gizlilik politikaları ve çerez yönetimi gibi alanlarda ek sorumluluklar devam eder.
Sonuç: .NET 10 ve Passkey ile Geleceğe Hazır Uygulamalar
ASP.NET Core .NET 10 ile gelen yenilikler; Blazor güvenlik örnekleri, Minimal API JWT entegrasyonları, statik web asset’ler, ReconnectModal ve geliştirilmiş route görünürlüğü gibi özelliklerle, modern ve güvenli web uygulamaları geliştirmeyi kolaylaştırıyor. FIDO Passkey ile parolasız kimlik doğrulamayı birleştirdiğinizde:
- Kullanıcılarınız için daha hızlı ve sorunsuz bir giriş deneyimi sunarsınız.
- Parola kaynaklı saldırı risklerini ciddi ölçüde azaltırsınız.
- Kurumsal ölçekte ölçeklenebilir ve yönetilebilir bir güvenlik mimarisi kurarsınız.
İster yeni bir proje başlatıyor olun, ister mevcut ASP.NET Core uygulamanızı modernleştirmeyi planlayın; .NET 10’un sunduğu altyapı ve FIDO Passkey standardı, uzun vadeli ve güvenli bir temel oluşturmanıza yardımcı olur. İhtiyaçlarınıza göre özelleştirilmiş bir mimari, doğru kimlik sağlayıcı seçimi ve sağlam bir uygulama iskeleti için deneyimli bir ekipten destek almak, bu dönüşüm sürecini önemli ölçüde hızlandırabilir.