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'yi seç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:
Gizli depolamayı etkinleştirme başlığındaki yönergelere göre projeyi gizli depolama için başlatın.
Gizli dizi anahtarları ve
Authentication:Twitter:ConsumerSecret
ile 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. Örneğin, :
ayırıcı Bash tarafından desteklenmez. Çift alt çizgi olan , __
şöyledir:
- Tüm platformlar tarafından desteklenir.
- otomatik olarak iki nokta üst üste 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.ConfigureServices
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;
});
}
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
ConfigureServices
services.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'yiAuthentication:Twitter:ConsumerSecret
uygulama olarak ayarlayın. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okuyacak şekilde ayarlanır.
ASP.NET Core