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-twitteralanı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-twitteristekleri otomatik olarak işletir.Not
URI
/signin-twittersegmenti, 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:
Gizli depolamayı etkinleştirme yönergelerine göre gizli depolama için projeyi başlatma.
Gizli dizi anahtarları ve ile yerel gizli dizi deposuna hassas ayarları
Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecretdepolar: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.AddIdentityConfigureServicesArgumentException: '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
ConsumerSecretportalında 'ı sıfırlamanız gerekir.uygulama ayarlarında
Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecretve uygulama ayarlarını Azure portal. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okumak için ayarlanır.