Share via


ASP.NET Core ile Twitter dış oturum açma kurulumu

Yayınlayanlar Valeriy Novytskyy ve Rick Anderson

Bu örnek, kullanıcıların önceki sayfada oluşturulan bir örnek ASP.NET Core projesi kullanarak Twitter hesaplarıyla oturum açmasına nasıl olanak tanıyacaklarını gösterir.

Not

Aşağıda açıklanan Microsoft.AspNetCore.Authentication.Twitter paketi, Twitter tarafından sağlanan OAuth 1.0 API'lerini kullanır. Twitter o zamandan beri farklı bir işlev kümesine sahip OAuth 2.0 API'leri eklemiştir. OpenIddict ve AspNet.Security.OAuth.Twitter paketleri, yeni OAuth 2.0 API'lerini kullanan topluluk uygulamalarıdır.

Uygulamayı Twitter'da oluşturma

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

  • Twitter geliştirici portalı Panosu'na gidin ve oturum açın. Henüz bir Twitter hesabınız yoksa şimdi kaydolun bağlantısını kullanarak bir hesap oluşturun.

  • Projeniz yoksa bir proje oluşturun.

  • + Uygulama ekle'yi seçin. Uygulama adını doldurun ve oluşturulan API Anahtarını, API Anahtar Gizli Anahtarını ve Taşıyıcı Belirtecini kaydedin. Bunlar daha sonra gerekli olacaktır.

  • Uygulama Ayarlar sayfasında, Kimlik doğrulama ayarları bölümünde Düzenle'yiseçin ve ardından:

    • 3 bacaklı OAuth'u etkinleştirme
    • Kullanıcılardan e-posta adresi isteme
    • Gerekli alanları doldurun ve Kaydet'i seçin

    Not

    Microsoft.AspNetCore.Identity kullanıcıların varsayılan olarak bir e-posta adresine sahip olmasını gerektirir. Geliştirme sırasında geri çağırma URL'leri için https://localhost:{PORT}/signin-twitter, yer tutucunun {PORT} uygulamanın bağlantı noktası olduğu kullanın.

    Not

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

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

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

  1. Gizli depolamayı etkinleştirme başlığındaki yönergelere göre projeyi gizli depolama için başlatın.

  2. Gizli dizi anahtarları ve Authentication:Twitter:ConsumerSecretile hassas ayarları yerel gizli dizi deposunda depolayınAuthentication:Twitter:ConsumerKey:

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

: ayıracı, tüm platformlarda ortam değişkeni hiyerarşik anahtarlarıyla çalışmaz. __, çift alt çizgi:

  • Tüm platformlar tarafından desteklenir. Örneğin : ayıracı Bash tarafından desteklenmez ancak __ desteklenir.
  • Otomatik olarak bir : ile değiştirilir

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

Twitter Kimlik Doğrulamayı Yapılandırma

Kimlik Doğrulama hizmetini içine Startup.ConfigureServicesekleyin:

{
    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;
    });

}
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;

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

Aşırı AddAuthentication(IServiceCollection, String) yükleme özelliği ayarlar DefaultScheme . Aşırı AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) yükleme, farklı amaçlarla varsayılan kimlik doğrulama düzenlerini ayarlamak için kullanılabilen kimlik doğrulama seçeneklerini yapılandırmaya olanak tanır. Önceden yapılandırılmış AuthenticationOptions özellikleri geçersiz kılmak için AddAuthentication sonraki çağrılar.

AuthenticationBuilder kimlik doğrulama işleyicisini kaydeden uzantı yöntemleri, kimlik doğrulama düzeni başına yalnızca bir kez çağrılabilir. Düzen özelliklerini, düzen adını ve görünen adı yapılandırmaya olanak sağlayan aşırı yüklemeler vardır.

Çoklu kimlik doğrulaması sağlayıcıları

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

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 istemek 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 seçildiğinde kimlik doğrulaması için Twitter'a yönlendirilir:

Twitter kimlik bilgilerinizi girdikten sonra, e-postanızı ayarlayabileceğiniz web sitesine yeniden yönlendirilirsiniz.

Şimdi Twitter kimlik bilgilerinizi kullanarak oturum açtınız:

İstek bilgilerini ara sunucu veya yük dengeleyici ile iletme

Uygulama bir ara sunucunun veya yük dengeleyicinin arkasına dağıtılırsa, özgün istek bilgilerinden bazıları istek üst bilgilerinde uygulamaya iletilebilir. Bu bilgiler genellikle güvenli istek düzenini (https), ana bilgisayarı ve istemci IP adresini içerir. Uygulamalar, özgün istek bilgilerini bulmak ve kullanmak için bu istek üst bilgilerini otomatik olarak okumaz.

Düzen, dış sağlayıcılarla kimlik doğrulaması akışını etkileyen bağlantı oluşturmada kullanılır. Güvenli düzenin (https) kaybedilmesi, uygulamanın yanlış güvenli olmayan yeniden yönlendirme URL'leri oluşturmasını sağlar.

Özgün istek bilgilerini uygulamaya, istek işleme için kullanılabilir hale getirmek için İletilen Üstbilgiler Ara Yazılımını kullanın.

Daha fazla bilgi için bkz. ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma.

Sorun giderme

  • yalnızca Core 2.x ASP.NET: içinde çağrılarak ConfigureServicesservices.AddIdentity yapılandırılmazsaIdentity, kimlik doğrulaması denenmesi ArgumentException ile sonuçlanır: 'SignInScheme' seçeneği sağlanmalıdır. Bu örnekte kullanılan proje şablonu yapılandırıldığından emin olun Identity .
  • Site veritabanı ilk geçiş uygulanarak oluşturulmadıysa, istek hatası işlenirken veritabanı işlemi başarısız oldu iletisini alırsınız. Veritabanını oluşturmak için Geçişleri Uygula'ya dokunun ve hatadan sonra devam etmek için yenileyin.

Sonraki adımlar

  • Bu makalede Twitter ile nasıl kimlik doğrulaması yapabileceğiniz gösterildi. Önceki sayfada listelenen diğer sağlayıcılarla kimlik doğrulaması yapmak için benzer bir yaklaşım izleyebilirsiniz.

  • Web sitenizi Azure web uygulamasında yayımladıktan sonra Twitter geliştirici portalında öğesini sıfırlamanız ConsumerSecret gerekir.

  • Azure portalında Authentication:Twitter:ConsumerKey ve'yi Authentication:Twitter:ConsumerSecret uygulama olarak ayarlayın. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okuyacak şekilde ayarlanır.