ASP.NET Core ile Twitter dış oturum ASP.NET Core

Valeriy Novytskyy ve Rick Anderson tarafından

Bu örnekte, kullanıcıların bir önceki sayfada oluşturulan örnek bir ASP.NET Core 3.0 projesini kullanarak Twitter hesabıyla oturum açmalarına nasıl olanak sağlayacakları gösterir.

Uygulamayı Twitter'da oluşturma

  • Microsoft.AspNetCore.Authentication.Twitter NuGet paketini projeye ekleyin.

  • 'a https://apps.twitter.com/ gidin ve oturum açma. Henüz bir Twitter hesabınız yoksa Şimdi kaydol bağlantısını kullanarak bir hesap oluşturun.

  • Uygulama oluştur'a seçin. Uygulama adı, Uygulama açıklaması ve genel Web Sitesi URI'lerini doldurun (etki alanı adını kaydedene kadar bu geçici olabilir):

  • Twitter ile oturum açma etkinleştir'in yanındaki kutuyu işaretleyin

  • Microsoft.AspNetCore.Identity , kullanıcıların varsayılan olarak bir e-posta adresine sahip olduğunu gerektirir. İzinler sekmesine gidin, Düzenle düğmesine tıklayın ve Kullanıcılardan e-posta adresi isteği gönder seçeneğinin yanındaki kutuyu işaretleyin.

  • Geri Çağırma URL'leri /signin-twitter alanına eklenen geliştirme URI'nizi girin (örneğin: https://webapp128.azurewebsites.net/signin-twitter ). Bu örnekte daha sonra yapılandırılan Twitter kimlik doğrulama düzeni, OAuth akışını uygulamak için yolda /signin-twitter istekleri otomatik olarak işletir.

    Not

    URI /signin-twitter segmenti, Twitter kimlik doğrulama sağlayıcısının varsayılan geri çağırma değeri olarak ayarlanır. Twitter kimlik doğrulaması ara yazılımını yapılandırırken TwitterOptions sınıfının devralınan RemoteAuthenticationOptions.CallbackPath özelliği aracılığıyla varsayılan geri çağırma URI'sini değiştirebilirsiniz.

  • Formun geri kalanını doldurun ve Oluştur'a seçin. Yeni uygulama ayrıntıları görüntülenir:

Twitter tüketici API'si anahtarını ve gizli anahtarını depolama

Gizli Anahtar Yöneticisi ile Twitter tüketici API'si anahtarı ve gizli anahtarı gibi hassas ayarları depolar. Bu örnek için aşağıdaki adımları kullanın:

  1. Gizli depolamayı etkinleştirme yönergelerine göre gizli depolama için projeyi başlatma.

  2. Gizli dizi anahtarları ve ile yerel gizli dizi deposuna hassas ayarları Authentication:Twitter:ConsumerKey Authentication:Twitter:ConsumerSecret depolar:

    dotnet user-secrets set "Authentication:Twitter:ConsumerAPIKey" "<consumer-api-key>"
    dotnet user-secrets set "Authentication:Twitter:ConsumerSecret" "<consumer-secret>"
    

Ayırıcı, : tüm platformlarda ortam değişkeni hiyerarşik anahtarlarla birlikte çalışmaz. __çift alt çizgi şöyledir:

  • Tüm platformlar tarafından de destekler. Örneğin, : ayıracı Bash tarafından desteklanmaz,ancak __ bu şekildedir.
  • Otomatik olarak bir ile değiştirilir :

Bu belirteçler, yeni bir Twitter uygulaması oluşturduk sonra Anahtarlar ve Erişim Belirteçleri sekmesinde bulunabilir:

Twitter Kimlik Doğrulamasını Yapılandırma

Twitter hizmetini ConfigureServices Startup.cs dosyasındaki yöntemine ekleyin:

{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options =>
        options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddRazorPages();

    services.AddAuthentication().AddTwitter(twitterOptions =>
    {
        twitterOptions.ConsumerKey = Configuration["Authentication:Twitter:ConsumerAPIKey"];
        twitterOptions.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"];
        twitterOptions.RetrieveUserDetails = true;
    });

}

Addaduthentication (dize) aşırı yüklemesi defaultscheme özelliğini ayarlar. Addaduthentication (eylem < authenticationoptions > ) aşırı yüklemesi, farklı amaçlarla varsayılan kimlik doğrulama düzenlerini ayarlamak için kullanılabilen kimlik doğrulama seçeneklerinin yapılandırılmasını sağlar. AddAuthenticationDaha önce yapılandırılmış authenticationoptions özelliklerini geçersiz kılmak için sonraki çağrılar.

Kimlik doğrulama işleyicisi kaydeden Authenticationbuilder genişletme metotları, kimlik doğrulama düzeni başına yalnızca bir kez çağrılabilir. Düzen özellikleri, Düzen adı ve görünen ad yapılandırmasına izin veren aşırı yüklemeler var.

Birden çok kimlik doğrulama sağlayıcısı

Uygulama birden çok sağlayıcı gerektirdiğinde, sağlayıcı uzantısı yöntemlerini Addaduthenticationarkasında zincirle:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Twitter kimlik doğrulaması tarafından desteklenen yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. TwitterOptions API başvurusu. Bu, kullanıcı hakkında farklı bilgiler talep etmek için kullanılabilir.

Twitter ile oturum açma

Uygulamayı çalıştırın ve Oturum aç'ı seçin. Twitter ile oturum açma seçeneği görüntülenir:

Twitter'a tıklarsanız kimlik doğrulaması için Twitter'a yeniden yönlendirmeler:

Twitter kimlik bilgilerinizi girdikten sonra, e-postanızı ayaryabilirsiniz web sitesine geri dönersiniz.

Artık Twitter kimlik bilgilerinizi kullanarak oturum açtınız:

İstek bilgilerini bir ara sunucu veya yük dengeleyici ile ilet

Uygulama bir ara sunucu veya yük dengeleyici arkasında dağıtılırsa, bazı özgün istek bilgileri, istek üst bilgilerinde uygulamaya iletilebilir. Bu bilgiler genellikle güvenli istek düzeni ( https ), ana bilgisayar ve ISTEMCI IP adresini içerir. Uygulamalar, özgün istek bilgilerini bulacak ve kullanacak şekilde bu istek üst bilgilerini otomatik olarak okumayın.

Düzen, dış sağlayıcılarla kimlik doğrulama akışını etkileyen bağlantı oluşturma sırasında kullanılır. Güvenli düzen () kaybı, https uygulamanın hatalı güvenli olmayan yeniden yönlendirme URL 'leri üretmesine neden olur.

İstek işleme için özgün istek bilgilerini uygulama için kullanılabilir hale getirmek üzere Iletilen üstbilgiler ara yazılımını kullanın.

Daha fazla bilgi için bkz. Yapılandırma ASP.NET Core sunucuları ve yük dengeciler ile çalışacak şekilde yapılandırma.

Sorun giderme

  • ASP.NET Core 2.x: içinde çağrısıyla yapılandırılmamışsa, kimlik doğrulaması yapmaya çalışıldığında Identity services.AddIdentity ConfigureServices ArgumentException: 'SignInScheme' seçeneği sağlanmalıdır. Bu örnekte kullanılan proje şablonu, bunun yapılmasına sağlar.
  • İlk geçişi uygulayarak site veritabanı oluşturulmadı ise, istek hatası işleniyorken bir veritabanı işlemi başarısız olur. Veritabanını oluşturmak için Geçişleri Uygula'ya dokunun ve hatayı geçe devam etmek için yenileyin.

Sonraki adımlar

  • Bu makalede Twitter ile nasıl kimlik doğrulamasına sahip olduğunuz gösterildi. Önceki sayfada listelenen diğer sağlayıcılarla kimlik doğrulaması yapmak için benzer bir yaklaşımı takip edebilirsiniz.

  • Web sitesini Azure web uygulamasında yayımladıktan sonra, Twitter geliştirici ConsumerSecret portalında 'ı sıfırlamanız gerekir.

  • uygulama ayarlarında Authentication:Twitter:ConsumerKey Authentication:Twitter:ConsumerSecret ve uygulama ayarlarını Azure portal. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okumak için ayarlanır.