Aracılığıyla paylaş


Bulutta yerel uygulamalar için IdentityServer

İpucu

Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için Buluta Özel .NET Uygulamaları Tasarlama adlı e-Kitap'tan bir alıntıdır.

Cloud Native .NET apps for Azure eBook cover thumbnail.

IdentityServer, ASP.NET Core için OpenID Bağlan (OIDC) ve OAuth 2.0 standartlarını uygulayan bir kimlik doğrulama sunucusudur. Web, yerel, mobil veya API uç noktaları olsun, tüm uygulamalarınızda isteklerin kimliğini doğrulamak için ortak bir yol sağlamak üzere tasarlanmıştır. IdentityServer, birden çok uygulama ve uygulama türü için Çoklu Oturum Açma (SSO) uygulamak için kullanılabilir. Oturum açma formları ve benzer kullanıcı arabirimleri aracılığıyla gerçek kullanıcıların kimliğini doğrulamak ve genellikle herhangi bir kullanıcı arabirimi olmadan belirteç verme, doğrulama ve yenilemeyi içeren hizmet tabanlı kimlik doğrulaması için kullanılabilir. IdentityServer, özelleştirilebilir bir çözüm olarak tasarlanmıştır. Her örnek genellikle tek bir kuruluşa ve/veya uygulama gereksinimlerine uyacak şekilde özelleştirilir.

Yaygın web uygulaması senaryoları

Genellikle uygulamaların aşağıdaki senaryolardan bazılarını veya tümünü desteklemesi gerekir:

  • Web uygulamalarına tarayıcıyla erişen insan kullanıcılar.
  • Tarayıcı tabanlı uygulamalardan arka uç Web API'lerine erişen insan kullanıcılar.
  • Arka uç Web API'lerine erişen mobil/yerel istemcilerde insan kullanıcılar.
  • Arka uç Web API'lerine erişen diğer uygulamalar (etkin kullanıcı veya kullanıcı arabirimi olmadan).
  • Herhangi bir uygulamanın kendi kimliğini kullanarak veya kullanıcının kimliğine temsilci atayarak diğer Web API'leriyle etkileşim kurması gerekebilir.

Application types and scenarios

Şekil 8-1. Uygulama türleri ve senaryoları.

Bu senaryoların her birinde, kullanıma sunulan işlevselliğin yetkisiz kullanıma karşı korunması gerekir. En azından, bu genellikle bir kaynak için istekte bulunan kullanıcının veya sorumlunun kimliğini doğrulamayı gerektirir. Bu kimlik doğrulaması SAML2p, WS-Fed veya OpenID Bağlan gibi birçok yaygın protokolden birini kullanabilir. API'lerle iletişim kurmak genellikle OAuth2 protokolünü ve güvenlik belirteçleri desteğini kullanır. Bu kritik çapraz kesme güvenlik endişelerini ve bunların uygulama ayrıntılarını uygulamalardan ayırmak tutarlılık sağlar ve güvenliği ve sürdürülebilirliği artırır. Bu endişeleri IdentityServer gibi ayrılmış bir ürüne dış kaynak sağlamak, her uygulamanın bu sorunları çözme gereksinimine yardımcı olur.

IdentityServer, ASP.NET Core uygulamasında çalışan ara yazılım sağlar ve OpenID Bağlan ve OAuth2 için destek ekler (desteklenen belirtimlere bakın). Kuruluşlar, tüm belirteç tabanlı güvenlik protokolleri için STS görevi görmesi için IdentityServer ara yazılımını kullanarak kendi ASP.NET Core uygulamalarını oluşturur. IdentityServer ara yazılımı, aşağıdakiler dahil olmak üzere standart işlevleri desteklemek için uç noktaları kullanıma sunar:

  • Yetkilendirme (son kullanıcının kimliğini doğrulama)
  • Belirteç (program aracılığıyla belirteç isteme)
  • Bulma (sunucu hakkındaki meta veriler)
  • Kullanıcı Bilgileri (geçerli bir erişim belirteci ile kullanıcı bilgilerini alma)
  • Cihaz Yetkilendirme (cihaz akışı yetkilendirmesini başlatmak için kullanılır)
  • İçe çekme (belirteç doğrulama)
  • İptal (belirteç iptali)
  • Oturumu Sonlandır (tüm uygulamalarda çoklu oturumu kapatmayı tetikleme)

Başlarken

IdentityServer4, çift lisans kapsamında kullanılabilir:

  • RPL - Açık kaynak çalışmada kullanılıyorsa IdentityServer4'leri ücretsiz kullanmanıza olanak tanır
  • Ücretli - IdentityServer4'i ticari bir senaryoda kullanmanıza olanak tanır

Fiyatlandırma hakkında daha fazla bilgi için resmi ürünün fiyatlandırma sayfasına bakın.

NuGet paketlerini kullanarak uygulamalarınıza ekleyebilirsiniz. Ana paket, dört milyondan fazla kez indirilen IdentityServer4'dür. Temel paket herhangi bir kullanıcı arabirimi kodu içermez ve yalnızca bellek içi yapılandırmayı destekler. Bunu veritabanıyla kullanmak için IdentityServer4.EntityFramework gibi identityserver için yapılandırma ve işlem verilerini depolamak için Entity Framework Core kullanan bir veri sağlayıcısı da istersiniz. Kullanıcı arabirimi için, IdentityServer ara yazılımını kullanarak oturum açma ve oturumu kapatma desteği eklemek için Hızlı Başlangıç kullanıcı arabirimi deposundaki dosyaları ASP.NET Core MVC uygulamanıza kopyalayabilirsiniz.

Yapılandırma

IdentityServer, her özel yüklemenin parçası olarak yapılandırılabilir farklı protokol türlerini ve sosyal kimlik doğrulama sağlayıcılarını destekler. Bu genellikle ASP.NET Core uygulamasının Program sınıfında (veya yöntemindeki Startup sınıfta ConfigureServices ) yapılır. Yapılandırma, desteklenen protokolleri ve kullanılacak sunucuların ve uç noktaların yollarını belirtmeyi içerir. Şekil 8-2'de IdentityServer4 Hızlı Başlangıç kullanıcı arabirimi projesinden alınan örnek bir yapılandırma gösterilmektedir:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        // some details omitted
        services.AddIdentityServer();

          services.AddAuthentication()
            .AddGoogle("Google", options =>
            {
                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

                options.ClientId = "<insert here>";
                options.ClientSecret = "<insert here>";
            })
            .AddOpenIdConnect("demoidsrv", "IdentityServer", options =>
            {
                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                options.SignOutScheme = IdentityServerConstants.SignoutScheme;

                options.Authority = "https://demo.identityserver.io/";
                options.ClientId = "implicit";
                options.ResponseType = "id_token";
                options.SaveTokens = true;
                options.CallbackPath = new PathString("/signin-idsrv");
                options.SignedOutCallbackPath = new PathString("/signout-callback-idsrv");
                options.RemoteSignOutPath = new PathString("/signout-idsrv");

                options.TokenValidationParameters = new TokenValidationParameters
                {
                    NameClaimType = "name",
                    RoleClaimType = "role"
                };
            });
    }
}

Şekil 8-2. IdentityServer'ın yapılandırılması.

JavaScript istemcileri

Buluta özel birçok uygulama, ön uçta sunucu tarafı API'leri ve zengin istemci tek sayfalı uygulamaları (SPA' lar) kullanır. IdentityServer, web API'lerinin oturum açma, oturumu kapatma ve belirteç tabanlı kimlik doğrulaması için IdentityServer kullanmalarını sağlamak üzere SPA'lara eklenebilen NPM aracılığıyla bir JavaScript istemcisi (oidc-client.js) ile birlikte gelir.

Başvurular