ASP.NET Core kimlik doğrulamasına genel bakış

tarafından Mike Rousos

Kimlik doğrulaması, bir kullanıcının kimliğini belirleme işlemidir. Yetkilendirme, bir kullanıcının bir kaynağa erişimi olup olmadığını belirleme işlemidir. ASP.NET Core'da kimlik doğrulama, kimlik doğrulama middleware'i tarafından kullanılan hizmeti aracılığıyla gerçekleştirilir. Kimlik doğrulaması hizmeti, kimlik doğrulamasıyla ilgili eylemleri tamamlamak için kayıtlı kimlik doğrulaması işleyicilerini kullanır. Kimlik doğrulamasıyla ilgili eylemlere örnek olarak şunlar verilebilir:

  • Kullanıcının kimliğini doğrulama.
  • Kimliği doğrulanmamış bir kullanıcı kısıtlanmış bir kaynağa erişmeye çalıştığında yanıt verme.

Kimlik doğrulamasının yapılandırılması, uç noktalara erişimi otomatik olarak kısıtlamaz. Sunucu tarafı bir uygulamada varsayılan olarak kimliği doğrulanmış kullanıcılar gerektirmek için bir geri dönüş yetkilendirme ilkesi yapılandırın.

Kayıtlı kimlik doğrulaması işleyicileri ve yapılandırma seçenekleri "düzenler" olarak adlandırılır.

Kimlik doğrulaması şemaları, Program.cs içinde kimlik doğrulaması hizmetleri kaydedilerek belirtilir:

Örneğin, aşağıdaki kod, cookie ve JWT bearer kimlik doğrulama şemaları için kimlik doğrulama hizmetlerini ve işleyicilerini kaydeder:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

AddAuthentication parametresi JwtBearerDefaults.AuthenticationScheme, belirli bir düzen istenmediğinde varsayılan olarak kullanılacak düzenin adıdır.

Birden çok düzen kullanılıyorsa, yetkilendirme ilkeleri (veya yetkilendirme öznitelikleri), kullanıcının kimliğini doğrulamak için bağımlı oldukları kimlik doğrulaması düzenini (veya düzenlerini) belirtebilir. Yukarıdaki örnekte, cookie kimlik doğrulaması düzeni adını belirterek kullanılabilir (varsayılan olarak CookieAuthenticationDefaults.AuthenticationScheme, ancak AddCookie çağrılırken farklı bir ad sağlanabilir).

Bazı durumlarda, AddAuthentication çağrısı diğer uzantı yöntemleri tarafından otomatik olarak yapılır. Örneğin, ASP.NET Core Identity kullanıldığında, AddAuthentication dahili olarak çağrılır.

Kimlik doğrulaması ara yazılımı Program.cs içinde UseAuthentication çağrılarak eklenir. UseAuthentication çağrısı, önceden kaydedilmiş kimlik doğrulaması düzenlerini kullanan ara yazılımı kaydeder. Kimlik doğrulaması yapılan kullanıcılara bağlı herhangi bir ara yazılımdan önce UseAuthentication çağrısı yapın.

Kimlik doğrulama kavramları

Kimlik doğrulama, yetkilendirme sürecinde izin kararları almak için ClaimsPrincipal sağlamaktan sorumludur. Doğru talep kümesini oluşturmak üzere hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçmek için birden çok kimlik doğrulaması düzeni yaklaşımı vardır:

Yalnızca tek bir kimlik doğrulama şeması kaydedildiğinde, varsayılan düzen haline gelir. Birden çok düzen kayıtlıysa ve varsayılan düzen belirtilmemişse, authorize özniteliğinde bir düzen belirtilmelidir, aksi takdirde aşağıdaki hata oluşur:

InvalidOperationException: AuthenticationScheme belirtilmedi ve DefaultAuthenticateScheme bulunamadı. Varsayılan düzenler AddAuthentication(string defaultScheme) veya AddAuthentication(Action<AuthenticationOptions configureOptions>) kullanılarak ayarlanabilir.

DefaultScheme

Yalnızca tek bir kimlik doğrulama şeması kayıtlı olduğunda, tek kimlik doğrulama düzeni:

Otomatik olarak tek kimlik doğrulama düzenini devre dışı bırakmak için DefaultScheme çağrısını AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme") yapın.

Kimlik doğrulaması düzeni

Kimlik doğrulaması düzeni, doğru talep kümesini oluşturmaktan hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçebilir. Daha fazla bilgi için, bkz. Belirli bir düzen ile yetkilendirme.

Kimlik doğrulaması düzeni, şu adlara karşılık gelen bir addır:

  • Bir kimlik doğrulaması işleyicisi.
  • İşleyicinin belirli bir örneğini yapılandırma seçenekleri.

Düzenler, ilişkili işleyicinin kimlik doğrulaması, sınama ve yasak davranışlarına başvurmak için bir mekanizma olarak kullanışlıdır. Örneğin, bir yetkilendirme ilkesi, kullanıcının kimliğini doğrulamak için hangi kimlik doğrulaması düzeninin (veya düzenlerin) kullanılacağını belirtmek için düzen adlarını kullanabilir. Kimlik doğrulamasını yapılandırırken, varsayılan kimlik doğrulaması düzenini belirtmek yaygın bir durum olur. Bir kaynak belirli bir düzeni istemediği sürece varsayılan düzen kullanılır. Ayrıca şunlar da yapılabilir:

  • Kimlik doğrulaması, sınama ve yasak eylemler için kullanılacak farklı varsayılan düzenleri belirtme.
  • Politika düzenlerini kullanarak birden çok düzeni tek düzende birleştirin.

Kimlik doğrulama işleyicisi

Bir kimlik doğrulaması işleyicisi:

Kimlik doğrulama düzeninin yapılandırmasına ve gelen isteğin bağlamına bağlı olarak, kimlik doğrulama işleyicileri çalışır.

  • Kimlik doğrulaması başarılı olursa kullanıcının kimliğini temsil eden AuthenticationTicket nesneleri oluşturma.
  • Kimlik doğrulaması başarısız olursa 'sonuç yok' veya 'hata' döndür.
  • Kullanıcıların kaynaklara erişim girişimlerinde sınama ve yasaklama eylemleri için yöntemler oluşturmanız gereklidir.
    • Erişime yetkileri yoktur (yasaklanmıştır).
    • Kimlik doğrulaması yapılmadığında (sınama).

RemoteAuthenticationHandler<TOptions> ve AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions>, bir uzak kimlik doğrulaması adımı gerektiren kimlik doğrulaması sınıfıdır. Uzaktan kimlik doğrulama adımı tamamlandığında, işleyici tarafından ayarlanan CallbackPath değeri geri çağrılır. İşleyici, HandleRemoteAuthenticateAsync geri çağırma yoluna geçirilen bilgileri kullanarak kimlik doğrulaması adımını tamamlar. OAuth 2.0 ve OIDC bu deseni kullanır. JWT ve tanımlama bilgileri, kimlik doğrulaması için Bearer üst bilgisini ve cookie öğesini doğrudan kullanabildikleri için buna ihtiyaç duymaz. Bu durumda uzaktan barındırılan sağlayıcı:

  • Kimlik doğrulaması sağlayıcısıdır.
  • Örnek olarak Facebook, Twitter, Google, Microsoft ve işleyiciler mekanizmasını kullanarak kullanıcıların kimliğini doğrulamayı işleyen diğer OIDC sağlayıcıları verilebilir.

Kimliği doğrula

Kimlik doğrulama düzeninin kimlik doğrulama eylemi, istek bağlamını temel alarak kullanıcının kimliğini oluşturmakla sorumludur. Kimlik doğrulamasının başarılı olup olmadığını ve başarılıysa kullanıcının kimliğini bir kimlik doğrulama biletinde belirten bir AuthenticateResult döndürür. Bkz. AuthenticateAsync. Kimlik doğrulaması örnekleri şu şekildedir:

  • cookie kimlik doğrulama düzeni, tanımlama bilgilerinden kullanıcının kimliğini oluşturmaktadır.
  • Kullanıcının JWT kimliğini oluşturmak için taşıyıcı JWT belirtecini seri durumdan çıkarma ve doğrulama taşıyıcı düzeni.

Sınama

Kimliği doğrulanmamış bir kullanıcı kimlik doğrulaması gerektiren bir uç nokta istediğinde Yetkilendirme tarafından bir kimlik doğrulaması sınaması çağrılır. Örneğin, anonim bir kullanıcı kısıtlı bir kaynak istediğinde veya oturum açma bağlantısını izlediğinde bir kimlik doğrulaması sınaması verilir. Yetkilendirme, belirtilen kimlik doğrulama düzenlerini kullanarak bir sınamayı veya belirtilmemişse varsayılanı çağırır. Bkz. ChallengeAsync. Kimlik doğrulaması sınaması örnekleri şunlardır:

  • Kullanıcıyı oturum açma sayfasına yönlendiren bir cookie kimlik doğrulaması düzeni.
  • JWT Bearer şeması, www-authenticate: bearer üst bilgisiyle 401 sonucu döndürür.

Sınama eylemi, kullanıcıya istenen kaynağa erişmek için kullanılacak kimlik doğrulama mekanizmasını bildirmelidir.

Yasakla

Kimliği doğrulanmış bir kullanıcı, erişim izni olmayan bir kaynağa erişmeye çalıştığında, kimlik doğrulama düzenine ait yasaklama eylemi Yetkilendirme tarafından çağrılır. Bkz. ForbidAsync. Kimlik doğrulamasının yasak olduğu örnekler şunlardır:

  • Kullanıcıyı erişimin yasaklandığını belirten bir sayfaya yönlendiren bir kimlik doğrulama şeması cookie.
  • JWT 403 sonucunu döndüren taşıyıcı düzeni.
  • Kullanıcının kaynağa access isteyebileceği bir sayfaya yönlendiren özel bir kimlik doğrulama düzeni.

Yasaklanan bir eylem kullanıcıya şunları bildirir:

  • Kimlikleri doğrulandı.
  • İstenen kaynağa erişim izni verilmez.

Sınama ve yasak arasındaki farklar için aşağıdaki bağlantılara bakın:

Kiracı başına kimlik doğrulaması sağlayıcıları

ASP.NET Core, çok kiracılı kimlik doğrulaması için yerleşik bir çözüme sahip değildir. Müşterilerin yerleşik özellikleri kullanarak yazması mümkün olsa da, müşterilerin çok kiracılı kimlik doğrulaması için Orchard Core, ABP Framework veya Finbuckle.MultiTenant göz önünde bulundurmalarını öneririz.

Orchard Core nedir:

  • ASP.NET Core ile oluşturulmuş açık kaynak, modüler ve çok kiracılı bir uygulama çerçevesi.
  • Bu uygulama çerçevesinin üzerinde oluşturulmuş bir içerik yönetim sistemi (CMS).

Kiracı başına kimlik doğrulama sağlayıcıları örneği için Orchard Core kaynağına bakın.

ABP Framework modülerlik, mikro hizmetler, etki alanı odaklı tasarım ve çok kiracılılık gibi çeşitli mimari desenleri destekler. GitHub üzerinde ABP Framework kaynağına bakın.

Finbuckle.MultiTenant:

  • Açık kaynak
  • Kiracı çözümlemesi sağlar
  • Hafif
  • Veri yalıtımı sağlar
  • Uygulama davranışını her kiracı için benzersiz olarak yapılandırma

Ek kaynaklar

tarafından Mike Rousos

Kimlik doğrulaması, bir kullanıcının kimliğini belirleme işlemidir. Yetkilendirme, bir kullanıcının bir kaynağa erişimi olup olmadığını belirleme işlemidir. ASP.NET Core'da kimlik doğrulama, kimlik doğrulama middleware'i tarafından kullanılan hizmeti aracılığıyla gerçekleştirilir. Kimlik doğrulaması hizmeti, kimlik doğrulamasıyla ilgili eylemleri tamamlamak için kayıtlı kimlik doğrulaması işleyicilerini kullanır. Kimlik doğrulamasıyla ilgili eylemlere örnek olarak şunlar verilebilir:

  • Kullanıcının kimliğini doğrulama.
  • Kimliği doğrulanmamış bir kullanıcı kısıtlanmış bir kaynağa erişmeye çalıştığında yanıt verme.

Kimlik doğrulamasının yapılandırılması, uç noktalara erişimi otomatik olarak kısıtlamaz. Sunucu tarafı bir uygulamada varsayılan olarak kimliği doğrulanmış kullanıcılar gerektirmek için bir geri dönüş yetkilendirme ilkesi yapılandırın.

Kayıtlı kimlik doğrulaması işleyicileri ve yapılandırma seçenekleri "düzenler" olarak adlandırılır.

Kimlik doğrulaması şemaları, Program.cs içinde kimlik doğrulaması hizmetleri kaydedilerek belirtilir:

Örneğin, aşağıdaki kod, cookie ve JWT bearer kimlik doğrulama şemaları için kimlik doğrulama hizmetlerini ve işleyicilerini kaydeder:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

AddAuthentication parametresi JwtBearerDefaults.AuthenticationScheme, belirli bir düzen istenmediğinde varsayılan olarak kullanılacak düzenin adıdır.

Birden çok düzen kullanılıyorsa, yetkilendirme ilkeleri (veya yetkilendirme öznitelikleri), kullanıcının kimliğini doğrulamak için bağımlı oldukları kimlik doğrulaması düzenini (veya düzenlerini) belirtebilir. Yukarıdaki örnekte, cookie kimlik doğrulaması düzeni adını belirterek kullanılabilir (varsayılan olarak CookieAuthenticationDefaults.AuthenticationScheme, ancak AddCookie çağrılırken farklı bir ad sağlanabilir).

Bazı durumlarda, AddAuthentication çağrısı diğer uzantı yöntemleri tarafından otomatik olarak yapılır. Örneğin, ASP.NET Core Identity kullanıldığında, AddAuthentication dahili olarak çağrılır.

Kimlik doğrulaması ara yazılımı Program.cs içinde UseAuthentication çağrılarak eklenir. UseAuthentication çağrısı, önceden kaydedilmiş kimlik doğrulaması düzenlerini kullanan ara yazılımı kaydeder. Kimlik doğrulaması yapılan kullanıcılara bağlı herhangi bir ara yazılımdan önce UseAuthentication çağrısı yapın.

Kimlik doğrulama kavramları

Kimlik doğrulama, yetkilendirme sürecinde izin kararları almak için ClaimsPrincipal sağlamaktan sorumludur. Doğru talep kümesini oluşturmak üzere hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçmek için birden çok kimlik doğrulaması düzeni yaklaşımı vardır:

Düzenlerin otomatik olarak incelenmesi yoktur. Varsayılan düzen belirtilmezse, düzen yetkilendirme özniteliğinde belirtilmelidir, aksi takdirde aşağıdaki hata verilir:

InvalidOperationException: AuthenticationScheme belirtilmedi ve DefaultAuthenticateScheme bulunamadı. Varsayılan düzenler AddAuthentication(string defaultScheme) veya AddAuthentication(Action<AuthenticationOptions configureOptions>) kullanılarak ayarlanabilir.

Kimlik doğrulaması düzeni

Kimlik doğrulaması düzeni, doğru talep kümesini oluşturmaktan hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçebilir. Daha fazla bilgi için, bkz. Belirli bir düzen ile yetkilendirme.

Kimlik doğrulaması düzeni, şu adlara karşılık gelen bir addır:

  • Bir kimlik doğrulaması işleyicisi.
  • İşleyicinin belirli bir örneğini yapılandırma seçenekleri.

Düzenler, ilişkili işleyicinin kimlik doğrulaması, sınama ve yasak davranışlarına başvurmak için bir mekanizma olarak kullanışlıdır. Örneğin, bir yetkilendirme ilkesi, kullanıcının kimliğini doğrulamak için hangi kimlik doğrulaması düzeninin (veya düzenlerin) kullanılacağını belirtmek için düzen adlarını kullanabilir. Kimlik doğrulamasını yapılandırırken, varsayılan kimlik doğrulaması düzenini belirtmek yaygın bir durum olur. Bir kaynak belirli bir düzeni istemediği sürece varsayılan düzen kullanılır. Ayrıca şunlar da yapılabilir:

  • Kimlik doğrulaması, sınama ve yasak eylemler için kullanılacak farklı varsayılan düzenleri belirtme.
  • Politika düzenlerini kullanarak birden çok düzeni tek düzende birleştirin.

Kimlik doğrulama işleyicisi

Bir kimlik doğrulaması işleyicisi:

Kimlik doğrulama düzeninin yapılandırmasına ve gelen isteğin bağlamına bağlı olarak, kimlik doğrulama işleyicileri çalışır.

  • Kimlik doğrulaması başarılı olursa kullanıcının kimliğini temsil eden AuthenticationTicket nesneleri oluşturma.
  • Kimlik doğrulaması başarısız olursa 'sonuç yok' veya 'hata' döndür.
  • Kullanıcıların kaynaklara erişim girişimlerinde sınama ve yasaklama eylemleri için yöntemler oluşturmanız gereklidir.
    • Erişime yetkileri yoktur (yasaklanmıştır).
    • Kimlik doğrulaması yapılmadığında (sınama).

RemoteAuthenticationHandler<TOptions> ve AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions>, bir uzak kimlik doğrulaması adımı gerektiren kimlik doğrulaması sınıfıdır. Uzaktan kimlik doğrulama adımı tamamlandığında, işleyici tarafından ayarlanan CallbackPath değeri geri çağrılır. İşleyici, HandleRemoteAuthenticateAsync geri çağırma yoluna geçirilen bilgileri kullanarak kimlik doğrulaması adımını tamamlar. OAuth 2.0 ve OIDC bu deseni kullanır. JWT ve tanımlama bilgileri, kimlik doğrulamak için Bearer üst bilgisini ve cookie öğesini doğrudan kullanabildiklerinden buna ihtiyaç duymaz. Bu durumda uzaktan barındırılan sağlayıcı:

  • Kimlik doğrulaması sağlayıcısıdır.
  • Örnek olarak Facebook, Twitter, Google, Microsoft ve işleyiciler mekanizmasını kullanarak kullanıcıların kimliğini doğrulamayı işleyen diğer OIDC sağlayıcıları verilebilir.

Kimliği doğrula

Kimlik doğrulama düzeninin kimlik doğrulama eylemi, istek bağlamını temel alarak kullanıcının kimliğini oluşturmakla sorumludur. Kimlik doğrulamasının başarılı olup olmadığını ve başarılıysa kullanıcının kimliğini bir kimlik doğrulama biletinde belirten bir AuthenticateResult döndürür. Bkz. AuthenticateAsync. Kimlik doğrulaması örnekleri şu şekildedir:

  • cookie kimlik doğrulama düzeni, tanımlama bilgilerinden kullanıcının kimliğini oluşturmaktadır.
  • Kullanıcının kimliğini oluşturmak için JWT taşıyıcı belirtecini seri durumdan çıkarıp doğrulayan bir JWT taşıyıcı şeması.

Sınama

Kimliği doğrulanmamış bir kullanıcı kimlik doğrulaması gerektiren bir uç nokta istediğinde Yetkilendirme tarafından bir kimlik doğrulaması sınaması çağrılır. Örneğin, anonim bir kullanıcı kısıtlı bir kaynak istediğinde veya oturum açma bağlantısını izlediğinde bir kimlik doğrulaması sınaması verilir. Yetkilendirme, belirtilen kimlik doğrulama düzenlerini kullanarak bir sınamayı veya belirtilmemişse varsayılanı çağırır. Bkz. ChallengeAsync. Kimlik doğrulaması sınaması örnekleri şunlardır:

  • Kullanıcıyı oturum açma sayfasına yönlendiren bir cookie kimlik doğrulaması düzeni.
  • www-authenticate: bearer üst bilgisiyle 401 sonucu döndüren bir JWT Bearer şeması.

Sınama eylemi, kullanıcıya istenen kaynağa erişmek için kullanılacak kimlik doğrulama mekanizmasını bildirmelidir.

Yasakla

Kimliği doğrulanmış bir kullanıcı, erişim izni olmayan bir kaynağa erişmeye çalıştığında, kimlik doğrulama düzenine ait yasaklama eylemi Yetkilendirme tarafından çağrılır. Bkz. ForbidAsync. Kimlik doğrulamasının yasak olduğu örnekler şunlardır:

  • Kullanıcıyı erişimin yasaklandığını belirten bir sayfaya yönlendiren bir kimlik doğrulama şeması cookie.
  • JWT 403 sonucu veren bir Bearer şeması.
  • Kullanıcının kaynağa access isteyebileceği bir sayfaya yönlendiren özel bir kimlik doğrulama düzeni.

Yasaklanan bir eylem kullanıcıya şunları bildirir:

  • Kimlikleri doğrulandı.
  • İstenen kaynağa erişim izni verilmez.

Sınama ve yasak arasındaki farklar için aşağıdaki bağlantılara bakın:

Kiracı başına kimlik doğrulaması sağlayıcıları

ASP.NET Core, çok kiracılı kimlik doğrulaması için yerleşik bir çözüme sahip değildir. Müşterilerin yerleşik özellikleri kullanarak bir çözüm yazması mümkün olsa da, müşterilere çoklu kiracı kimlik doğrulaması için Orchard Core veya ABP Framework'ü göz önünde bulundurmalarını öneririz.

Orchard Core nedir:

  • ASP.NET Core ile oluşturulmuş açık kaynak, modüler ve çok kiracılı bir uygulama çerçevesi.
  • Bu uygulama çerçevesinin üzerinde oluşturulmuş bir içerik yönetim sistemi (CMS).

Kiracı başına kimlik doğrulama sağlayıcıları örneği için Orchard Core kaynağına bakın.

ABP Framework modülerlik, mikro hizmetler, etki alanı odaklı tasarım ve çok kiracılılık gibi çeşitli mimari desenleri destekler. GitHub üzerinde ABP Framework kaynağına bakın.

Ek kaynaklar

tarafından Mike Rousos

Kimlik doğrulaması, bir kullanıcının kimliğini belirleme işlemidir. Yetkilendirme, bir kullanıcının bir kaynağa erişimi olup olmadığını belirleme işlemidir. ASP.NET Core'da kimlik doğrulama, kimlik doğrulama middleware'i tarafından kullanılan hizmeti aracılığıyla gerçekleştirilir. Kimlik doğrulaması hizmeti, kimlik doğrulamasıyla ilgili eylemleri tamamlamak için kayıtlı kimlik doğrulaması işleyicilerini kullanır. Kimlik doğrulamasıyla ilgili eylemlere örnek olarak şunlar verilebilir:

  • Kullanıcının kimliğini doğrulama.
  • Kimliği doğrulanmamış bir kullanıcı kısıtlanmış bir kaynağa erişmeye çalıştığında yanıt verme.

Kimlik doğrulamasının yapılandırılması, uç noktalara erişimi otomatik olarak kısıtlamaz. Sunucu tarafı bir uygulamada varsayılan olarak kimliği doğrulanmış kullanıcılar gerektirmek için bir geri dönüş yetkilendirme ilkesi yapılandırın.

Kayıtlı kimlik doğrulaması işleyicileri ve yapılandırma seçenekleri "düzenler" olarak adlandırılır.

Kimlik doğrulaması şemaları, Startup.ConfigureServices içinde kimlik doğrulaması hizmetleri kaydedilerek belirtilir:

Örneğin, aşağıdaki kod cookie ve JWT bearer kimlik doğrulama şemaları için kimlik doğrulama hizmetlerini ve işleyicilerini kaydeder:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => Configuration.Bind("CookieSettings", options));

AddAuthentication parametresi JwtBearerDefaults.AuthenticationScheme, belirli bir düzen istenmediğinde varsayılan olarak kullanılacak düzenin adıdır.

Birden çok düzen kullanılıyorsa, yetkilendirme ilkeleri (veya yetkilendirme öznitelikleri), kullanıcının kimliğini doğrulamak için bağımlı oldukları kimlik doğrulaması düzenini (veya düzenlerini) belirtebilir. Yukarıdaki örnekte, cookie kimlik doğrulaması düzeni adını belirterek kullanılabilir (varsayılan olarak CookieAuthenticationDefaults.AuthenticationScheme, ancak AddCookie çağrılırken farklı bir ad sağlanabilir).

Bazı durumlarda, AddAuthentication çağrısı diğer uzantı yöntemleri tarafından otomatik olarak yapılır. Örneğin, ASP.NET Core Identity kullanıldığında, AddAuthentication dahili olarak çağrılır.

Kimlik doğrulaması ara yazılımı Startup.Configure içinde UseAuthentication çağrılarak eklenir. UseAuthentication çağrısı, önceden kaydedilmiş kimlik doğrulaması düzenlerini kullanan ara yazılımı kaydeder. Kimlik doğrulaması yapılan kullanıcılara bağlı herhangi bir ara yazılımdan önce UseAuthentication çağrısı yapın. Uç nokta yönlendirme kullanılırken UseAuthentication çağrısının gönderilmesi gerekir:

  • UseRouting sonrasında, kimlik doğrulaması kararları için yol bilgilerinin kullanılabilir olması sağlanır.
  • UseEndpoints öncesinde, kullanıcıların, uç noktalara erişmeden önce kimlikleri doğrulanır.

Kimlik doğrulama kavramları

Kimlik doğrulama, yetkilendirme sürecinde izin kararları almak için ClaimsPrincipal sağlamaktan sorumludur. Doğru talep kümesini oluşturmak üzere hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçmek için birden çok kimlik doğrulaması düzeni yaklaşımı vardır:

Düzenlerin otomatik olarak incelenmesi yoktur. Varsayılan düzen belirtilmezse, düzen yetkilendirme özniteliğinde belirtilmelidir, aksi takdirde aşağıdaki hata verilir:

InvalidOperationException: AuthenticationScheme belirtilmedi ve DefaultAuthenticateScheme bulunamadı. Varsayılan düzenler AddAuthentication(string defaultScheme) veya AddAuthentication(Action<AuthenticationOptions configureOptions>) kullanılarak ayarlanabilir.

Kimlik doğrulaması düzeni

Kimlik doğrulaması düzeni, doğru talep kümesini oluşturmaktan hangi kimlik doğrulaması işleyicisinin sorumlu olduğunu seçebilir. Daha fazla bilgi için, bkz. Belirli bir düzen ile yetkilendirme.

Kimlik doğrulaması düzeni, şu adlara karşılık gelen bir addır:

  • Bir kimlik doğrulaması işleyicisi.
  • İşleyicinin belirli bir örneğini yapılandırma seçenekleri.

Düzenler, ilişkili işleyicinin kimlik doğrulaması, sınama ve yasak davranışlarına başvurmak için bir mekanizma olarak kullanışlıdır. Örneğin, bir yetkilendirme ilkesi, kullanıcının kimliğini doğrulamak için hangi kimlik doğrulaması düzeninin (veya düzenlerin) kullanılacağını belirtmek için düzen adlarını kullanabilir. Kimlik doğrulamasını yapılandırırken, varsayılan kimlik doğrulaması düzenini belirtmek yaygın bir durum olur. Bir kaynak belirli bir düzeni istemediği sürece varsayılan düzen kullanılır. Ayrıca şunlar da yapılabilir:

  • Kimlik doğrulaması, sınama ve yasak eylemler için kullanılacak farklı varsayılan düzenleri belirtme.
  • Politika düzenlerini kullanarak birden çok düzeni tek düzende birleştirin.

Kimlik doğrulama işleyicisi

Bir kimlik doğrulaması işleyicisi:

Kimlik doğrulama düzeninin yapılandırmasına ve gelen isteğin bağlamına bağlı olarak, kimlik doğrulama işleyicileri çalışır.

  • Kimlik doğrulaması başarılı olursa kullanıcının kimliğini temsil eden AuthenticationTicket nesneleri oluşturma.
  • Kimlik doğrulaması başarısız olursa 'sonuç yok' veya 'hata' döndür.
  • Kullanıcıların kaynaklara erişim girişimlerinde sınama ve yasaklama eylemleri için yöntemler oluşturmanız gereklidir.
    • Erişime yetkileri yoktur (yasaklanmıştır).
    • Kimlik doğrulaması yapılmadığında (sınama).

RemoteAuthenticationHandler<TOptions> ve AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions>, bir uzak kimlik doğrulaması adımı gerektiren kimlik doğrulaması sınıfıdır. Uzaktan kimlik doğrulama adımı tamamlandığında, işleyici tarafından ayarlanan CallbackPath değeri geri çağrılır. İşleyici, HandleRemoteAuthenticateAsync geri çağırma yoluna geçirilen bilgileri kullanarak kimlik doğrulaması adımını tamamlar. OAuth 2.0 ve OIDC bu deseni kullanır. JWT ve tanımlama bilgileri doğrudan taşıyıcı üst bilgisini kullanabildiğinden ve cookie kimlik doğrulaması için kullanmaz. Bu durumda uzaktan barındırılan sağlayıcı:

  • Kimlik doğrulaması sağlayıcısıdır.
  • Örnek olarak Facebook, Twitter, Google, Microsoft ve işleyiciler mekanizmasını kullanarak kullanıcıların kimliğini doğrulamayı işleyen diğer OIDC sağlayıcıları verilebilir.

Kimliği doğrula

Kimlik doğrulama düzeninin kimlik doğrulama eylemi, istek bağlamını temel alarak kullanıcının kimliğini oluşturmakla sorumludur. Kimlik doğrulamasının başarılı olup olmadığını ve başarılıysa kullanıcının kimliğini bir kimlik doğrulama biletinde belirten bir AuthenticateResult döndürür. Bkz. AuthenticateAsync. Kimlik doğrulaması örnekleri şu şekildedir:

  • cookie kimlik doğrulama düzeni, tanımlama bilgilerinden kullanıcının kimliğini oluşturmaktadır.
  • Kullanıcının kimliğini oluşturmak için bir JWT Bearer belirtecini seri durumdan çözerek doğrulayan JWT Bearer düzeni.

Sınama

Kimliği doğrulanmamış bir kullanıcı kimlik doğrulaması gerektiren bir uç nokta istediğinde Yetkilendirme tarafından bir kimlik doğrulaması sınaması çağrılır. Örneğin, anonim bir kullanıcı kısıtlı bir kaynak istediğinde veya oturum açma bağlantısını izlediğinde bir kimlik doğrulaması sınaması verilir. Yetkilendirme, belirtilen kimlik doğrulama düzenlerini kullanarak bir sınamayı veya belirtilmemişse varsayılanı çağırır. Bkz. ChallengeAsync. Kimlik doğrulaması sınaması örnekleri şunlardır:

  • Kullanıcıyı oturum açma sayfasına yönlendiren bir cookie kimlik doğrulaması düzeni.
  • www-authenticate: bearer üst bilgisiyle 401 sonucu döndüren bir JWT Bearer şeması.

Sınama eylemi, kullanıcıya istenen kaynağa erişmek için kullanılacak kimlik doğrulama mekanizmasını bildirmelidir.

Yasakla

Kimliği doğrulanmış bir kullanıcı, erişim izni olmayan bir kaynağa erişmeye çalıştığında, kimlik doğrulama düzenine ait yasaklama eylemi Yetkilendirme tarafından çağrılır. Bkz. ForbidAsync. Kimlik doğrulamasının yasak olduğu örnekler şunlardır:

  • Kullanıcıyı erişimin yasaklandığını belirten bir sayfaya yönlendiren bir kimlik doğrulama şeması cookie.
  • 403 sonucu veren bir JWT Bearer şeması.
  • Kullanıcının kaynağa access isteyebileceği bir sayfaya yönlendiren özel bir kimlik doğrulama düzeni.

Yasaklanan bir eylem kullanıcıya şunları bildirir:

  • Kimlikleri doğrulandı.
  • İstenen kaynağa erişim izni verilmez.

Sınama ve yasak arasındaki farklar için aşağıdaki bağlantılara bakın:

Kiracı başına kimlik doğrulaması sağlayıcıları

ASP.NET Core çerçevesinin çok kiracılı kimlik doğrulaması için yerleşik bir çözümü yoktur. Müşterilerin çok kiracılı kimlik doğrulamasıyla uygulama yazması mümkün olsa da, çok kiracılı kimlik doğrulamasını destekleyen aşağıdaki ASP.NET Core uygulama çerçevelerinden birini kullanmanızı öneririz.

Orchard Core, aynı zamanda bir içerik yönetim sistemi (CMS) sağlayan ASP.NET Core ile oluşturulmuş açık kaynak, modüler ve çok kiracılı bir uygulama çerçevesidir. Kiracı başına kimlik doğrulama sağlayıcıları örneği için Orchard Core kaynağına bakın.

ABP Framework modülerlik, mikro hizmetler, etki alanı odaklı tasarım ve çok kiracılılık gibi çeşitli mimari desenleri destekler. GitHub üzerinde ABP Framework kaynağına bakın.

Ek kaynaklar