Share via


Kimlik yönetimi çözümü seçme

Çoğu web uygulaması, kullanıcıların iddia ettikleri kişi olduğundan emin olmak için kimlik doğrulamasını destekler. Kullanıcı bir kişi veya başka bir uygulama olabilir. Erişimin yönetimi, kullanıcıların yalnızca görme ve değiştirme yetkisine sahip oldukları bilgileri görebilmesini ve değiştirebilmesini sağlar. Örneğin, bir son kullanıcının web sitesinin yönetim bölümüne erişimi olmamalıdır. Identity yönetim çözümleri, kimlik doğrulaması ve yetkilendirmeyle ilgili görevlerin gereksinimlerini karşılayacak şekilde oluşturulur. Kimlik yönetimi hakkında daha fazla bilgi edinmek için bkz . Kimlik ve erişim yönetimi nedir?. .NET web uygulamaları için her birinin farklı özellikleri ve yükleme gereksinimleri olan birçok kimlik yönetimi çözümü mevcuttur. Bu makalede, doğru çözümün nasıl seçileceğine ilişkin yönergeler sağlanmaktadır.

ASP.NET Core ile temel kimlik yönetimi Identity

ASP.NET Core, yerleşik bir kimlik doğrulama sağlayıcısıyla birlikte ASP.NET Core Identityile birlikte gösterilir. Sağlayıcı, kullanıcı kimliklerini yönetmeyi, kullanıcı kimlik bilgilerini depolamayı ve izin verme veya iptal etme desteği sağlayan API'leri, kullanıcı arabirimini ve arka uç veritabanı yapılandırmasını içerir. Desteklediği diğer özellikler şunlardır:

Çoğu senaryoda, gereken tek sağlayıcı bu olabilir.

Daha fazlasını öğrenin:

Diğer senaryolarda, kimlik doğrulama ve kimliği yöneten bir sunucu veya hizmet yararlı olabilir.

OIDC sunucusunun gerekli olup olmadığını belirleme

Web uygulamaları, varsayılan olarak durum bilgisi olmadığından geçmiş eylemleri anımsamak için bir yol gerektirir. Aksi takdirde, kullanıcılar yeni bir sayfaya her girdiklerinde kimlik bilgilerini girmek zorunda kalırlar. Durumu hatırlamaya yönelik yaygın çözüm, verileri depolamak için tarayıcı tabanlı bir mekanizma olan cookies'dir. Web sunucusu ilk cookieöğesini gönderir, ardından tarayıcı bunu depolar ve her istekle birlikte geri gönderir. Bu, geliştiricinin herhangi bir kod yazmasına gerek kalmadan otomatik olarak gerçekleştirilir. Cookiekullanımı kolaydır ve tarayıcıda yerleşiktir, ancak tek bir web sitesinde veya web etki alanında kullanılmak üzere tasarlanmıştır. ASP.NET Core'da yerleşik olarak bulunan varsayılan çözüm, tabanlı kimlik doğrulamasını kullanır cookie.

Belirteçler, HTTP isteklerinin üst bilgileri veya gövdesi aracılığıyla açıkça geçirilen meta verileri olan kapsayıcılardır. Belirteçlerin s'ye göre cookietemel avantajı, belirli bir uygulamaya veya etki alanına bağlı olmamasıdır. Bunun yerine, belirteçler genellikle asimetrik şifreleme ile imzalı olur. Örneğin, OIDC sunucuları, imzalamayı içeren ON Web Belirteci (JWT) biçimini kullanarak JSkimlikle ilgili bilgiler içeren belirteçler verir. Asimetrik şifreleme, yalnızca imzalayan tarafından bilinen özel bir anahtarın ve herkesin bilebileceği bir ortak anahtarın birleşimini kullanır. Belirteçler de şifrelenebilir.

İmzalı belirteç, özel anahtar nedeniyle değiştirilemiyor. Ortak anahtar:

  • Değiştirilmediğinden emin olmak için belirteci doğrulamayı mümkün kılar.
  • Özel anahtarı tutan varlık tarafından oluşturulduğunu garanti eder.

Belirteçleri kullanmanın temel dezavantajı, hem sorun hem de belirteçler için doğrulama sağlamak için bir hizmet (genellikle bir OIDC sunucusu) gerektirmeleridir. Hizmetin yüklenmesi, yapılandırılması ve bakımının yapılması gerekir.

OIDC sunucusunun gerekli olmasının yaygın bir nedeni, diğer uygulamalar tarafından kullanılan web tabanlı API'leri kullanıma sunan uygulamalar içindir. Kullanıma sunulan web tabanlı API'ler için Tek Sayfalı Uygulamalar (SPA), mobil istemciler ve masaüstü istemcileri gibi istemci URI'leri aynı uygulamanın parçası olarak kabul edilir. SPA örnekleri: Angular, React ve Blazor WebAssembly. Web uygulamanız veya herhangi bir istemci URI'niz dışındaki uygulamaların uygulamanıza güvenli bir API çağrısı yapması gerekiyorsa, belirteçleri kullanmak isteyebilirsiniz. Yalnızca istemci URI'leriniz varsa ASP.NET Core Identity , kimlik doğrulaması sırasında belirteç alma seçeneği sağlar. ASP.NET Core Identitytarafından verilen kimlik doğrulama belirteci:

  • Mobil ve masaüstü istemcileri tarafından kullanılabilir. Cookiehem güvenlik hem de basitlik için belirteçler yerine tercih edilir.
  • Üçüncü taraf uygulamalardan erişimi yönetmek için uygun değildir.

OIDC sunucusunun gerekli olmasının bir diğer nedeni de oturum açmaları diğer uygulamalarla paylaşmaktır. Genellikle çoklu oturum açma olarak adlandırılan bu özellik, kullanıcıların şunları oluşturmasını sağlar:

  • Web uygulamasının formuyla bir kez oturum açın.
  • Yeniden oturum açmak veya farklı bir parola seçmek zorunda kalmadan diğer uygulamalarla kimlik doğrulaması yapmak için sonuçta elde edilen kimlik bilgilerini kullanın.

OIDC sunucusu genellikle çoklu oturum açma için güvenli ve ölçeklenebilir bir çözüm sağlamak için tercih edilir.

Oturum açma bilgilerini diğer uygulamalarla paylaşmayen uygulamalar için, bir uygulamanın güvenliğini hızlı bir şekilde sağlamanın en basit yolu yerleşik ASP.NET Core Identity sağlayıcısını kullanmaktır. Aksi takdirde, üçüncü taraf kimlik yönetimi çözümü tarafından sağlanan bir OIDC sunucusu gerekir. OIDC sunucuları şu şekilde kullanılabilir:

  • Sunucunuza yüklediğiniz ve kendi kendine konak olarak adlandırılan ürünler.
  • Kapsayıcılar Docker gibi bir konakta çalışır.
  • Kimliği yönetmek için tümleştirdiğiniz web tabanlı hizmetler.

Bazı çözümler ücretsiz ve açık kaynak, bazıları ise ticari olarak lisanslandırılır. Kullanılabilir seçeneklerin listesi için bkz . kimlik yönetimi çözümleri . Kuruluşunuzda zaten bir kimlik sağlayıcısı kullanılıyor olabilir. Bu durumda, farklı bir çözüm kullanmak yerine mevcut sağlayıcıyı kullanmak mantıklı olabilir. Tüm önemli çözümler, ASP.NET Core'u ürün veya hizmetini kullanacak şekilde yapılandırmaya yönelik belgeler sağlar.

Bağlantının olmadığı senaryolar

Microsoft Entra ID gibi birçok çözüm bulut tabanlıdır ve çalışmak için İnternet bağlantısı gerektirir. Ortamınız İnternet bağlantısına izin vermiyorsa hizmeti kullanamazsınız.

ASP.NET Core Identity , bağlantısız senaryolarda mükemmel şekilde çalışır, örneğin:

  • Uygulama İnternet'e erişemiyor.
  • İnternet bağlantısı kesilmiş olsa bile uygulamanın yerel ağda çalışmaya devam etmesi gerekir.

Bağlantısı kesilmiş bir senaryo için tam bir OIDC sunucusuna ihtiyacınız varsa, aşağıdaki seçeneklerden birini belirleyin:

  • Hizmeti kendi makinelerinize yüklemenize ve çalıştırmanıza olanak tanıyan bir çözüm.
  • Kimlik doğrulama hizmetini yerel olarak kapsayıcı olarak çalıştırın.

Oturum açma işlemleri gibi kullanıcı verilerinin nerede depolandığına karar verme

Dikkate alınması gereken bir diğer önemli faktör de kullanıcı oturum açma verilerinin depolandığı yerdir. Birçok geliştirici, kimliği yönetmek için Microsoft Entra ID gibi dış, bulut tabanlı hizmetleri seçer. Bulut tabanlı hizmet sağlayıcısı:

  • Verileri güvenli bir şekilde depolama sorumluluklarını üstlenir.
  • yazılımı en son güvenlik düzeltme ekleri ve sürümleriyle güncel tutar.
  • Gizlilik düzenlemelerine uygundur.

Diğer kullanıcılar, düzenlemeler, uyumluluk, ilke veya başka nedenlerle verileri kendi sunucularında depolamayı tercih eder.

Veriler sunucularınızda depolanıyorsa büyük olasılıkla yüklenebilir veya kapsayıcı tabanlı bir çözüm seçmeniz gerekir.

Identity vs OIDC sunucusu

Kimlik doğrulaması ve yetkilendirme için ASP.NET Core Identity sistemini mi yoksa OIDC sunucusunu mu kullanacağınıza karar vermenize yardımcı olması için aşağıdaki diyagramı kullanın:

Identity management decision flow

Aşağıdaki tabloda, kimlik yönetimi çözümünüzü seçerken göz önünde bulundurmanız gereken bazı şeyler listelenmektedir.

Özellik Kendi kendine konak (altyapı veya kapsayıcı) Bulut
Uygulama tümleştirmesi Kitaplık veya çerçeve olarak uygulanan yerel çözümler genellikle doğrudan kendi uygulamanıza tümleştirilebilir. Kapsayıcı tabanlı çözümler, web uygulamanızla kapsayıcı tabanlı hizmet arasında bir teslim işlemi yapılmasını gerektirir. Bulut tabanlı çözümler genellikle oturum açma akışınızdaki belirli noktalarda tümleştirilir ve kullanıcı arabirimini temanızla eşleşecek şekilde güncelleştirmek için yapılandırma sağlar, ancak kullanılabilir özelleştirme düzeyi sınırlıdır.
Yapılandırma Kendi kendine konak çözümleri, kimlikleri nasıl yönetmek istediğinizi ayarlamanın yanı sıra ortamın yazılımını yapılandırmayı gerektirir. Kapsayıcı tabanlı çözümler genellikle yapılandırma için web tabanlı bir kullanıcı arabirimi sağlar. Bulut tabanlı çözümler genellikle yapılandırma için web tabanlı bir kullanıcı arabirimi sağlar.
Özelleştirme Kendi kendine konak çözümleri genellikle kod tabanlı değişiklikler de dahil olmak üzere yüksek oranda özelleştirilebilir. Kapsayıcılı çözümler genişletilebilirlik seçenekleri sağlasa da, bunlar genellikle daha sınırlıdır. Bulut tabanlı hizmetler özelleştirmeye izin verir, ancak genellikle yapılandırma tabanlı değişikliklerle sınırlıdır.
Bakım Yüklü ürünler, tüm güvenlik düzeltme eklerinin zamanında uygulandığından emin olmak ve yükseltmeleri yönetmek için ayrılmış bir kaynak gerektirir. Kapsayıcılar için yükseltme ve düzeltme eki işlemi genellikle daha düşük sürtüşmedir ve sağlanan kapsayıcı görüntüsünün yüklenmesini içerir. Hizmet sağlayıcısı, gerekli düzeltme eklerini uygulama ve yükseltmeleri işleme dahil olmak üzere bulut tabanlı çözümünü korur.
Kullanıcı kimlik bilgileri depolama Veri idaresi ve ihlalleri işleme sizin sorumluluğundadır. Kullanıcı kimlik bilgilerini işleme ve düzenlemelere uyma ile ilgili riskleri yönetme. hizmet sağlayıcısına devredilir.

Kullanılabilir seçenekler hakkında daha fazla bilgi için bkz Identity . ASP.NET Core için yönetim çözümleri.

Sonraki adımlar