ITicketStore ile ASP.NET Core kimlik doğrulama çerezini küçültmek
Cookie tabanlı kimlik doğrulamada tüm AuthenticationTicket çereze yazıldığı için büyük claim setleri çerez boyutunu şişirebiliyor. ITicketStore ile ticket sunucuda tutulur ve çerezde yalnızca bir anahtar kalır. Bellek içi ve dağıtık önbellek örnekleri, ölçekleme ve iptal konusundaki ödünleşimlerle birlikte anlatılıyor.
Kilit noktalar
- ITicketStore dört metottan oluşur: StoreAsync, RenewAsync, RetrieveAsync ve RemoveAsync.
- Uygulama CookieAuthenticationOptions.SessionStore alanına bağlanır; bağımlılık için options yapılandırması kullanılır.
- Bellek içi store yalnızca tek örnekte çalışır ve yeniden başlatmada oturumlar kaybolur.
- Çoklu örnekte IDistributedCache ile TicketSerializer.Default kullanılarak ticket paylaşımlı önbellekte saklanabilir.
- Ticket'ın sunucuda tutulması oturumu iptal etme imkânı verir; ancak her istekte önbellek sorgusu ve bağımlılık yaratır.
Bir kurumda test edilen WAF, çerez boyutu sıkı limitleri aştığı için bazı istekleri sunucuya ulaşmadan engelledi. Sorunun kaynağı, ASP.NET Core cookie authentication'ın varsayılan olarak tüm AuthenticationTicket'ı (claim'ler, özellikler ve token'lar dahil) şifreleyip çereze yazmasıydı. Kimlik büyüdükçe çerez de büyüyor.
Çözüm, CookieAuthenticationOptions.SessionStore ile bir ITicketStore uygulaması vermek. Ticket sunucuda saklanır, çerezde yalnızca bir anahtar bulunur. Yazar önce IMemoryCache tabanlı basit bir uygulama gösteriyor, ardından çoklu örnek senaryosu için IDistributedCache ve TicketSerializer ile Redis gibi paylaşımlı bir önbelleğe geçiyor. Bu yaklaşımda ticket'ın claim'leri hâlâ sunucuda tutulduğu için önbelleğin erişim denetimi ve bağlantı güvenliği ciddiye alınmalı. Ödünleşim, her istekte bir arama yapılması ve önbelleğin kimlik doğrulama yolunun parçası olmasıdır. Orijinal yazı kurulum ayrıntılarını ve kod örneklerini içeriyor.
Gerçek dünyada kullanımı
- Çok sayıda rol ve claim taşıyan kurumsal uygulama, çerez boyutu WAF limitini aşmadan çalışmalı.
- Birden fazla Azure Container Apps replikasında çalışan bir web uygulaması, oturumları Redis'te paylaşır.
- Yönetici tarafından oturumların anında kapatılması gereken bir iç portal.
Neden önemli
Büyük kimlik bilgisi taşıyan cookie tabanlı uygulamalarda çerez boyutunu sabit tutmanın ve oturum iptalini mümkün kılmanın yolunu gösterir. Ancak önbellek artık kimlik doğrulamanın kritik parçası olur.
Benzer haberler
- ADFS userinfo endpoint ile allatclaims yerine ek claim'leri almakBart Wullems (The Art of Simplicity)19 Eki
- React, .NET 10 ve Microsoft Foundry ile güvenli bir kurumsal chatDEV Community: #dotnet1 gün önce
- ASP.NET Core'da authentication ve authorization: ne zaman hangisi, güvenle nasıl yayına alınırDEV Community: #aspnetcore1 gün önce