Nastavení externího přihlašování na Twitteru pomocí ASP.NET Core
Předěly Novytskyy a Rick Anderson
Tato ukázka ukazuje, jak uživatelům umožnit přihlášení pomocí svého účtu na Twitteru pomocí ukázkového ASP.NET Core 3.0 vytvořeného na předchozí stránce.
Vytvoření aplikace na Twitteru
Přidejte do projektu balíček NuGet Microsoft.AspNetCore.Authentication.Twitter.
Přejděte na a https://apps.twitter.com/ přihlaste se. Pokud ještě nemáte účet Twitteru, vytvořte si ho pomocí odkazu Zaregistrovat se.
Vyberte Vytvořit aplikaci. Vyplňte název aplikace, popis aplikace a identifikátor URI veřejného webu (to může být dočasné, dokud nezaregistrujete název domény):
Zaškrtněte políčko vedle možnosti Povolit přihlášení pomocí Twitteru.
Microsoft.AspNetCore.Identity vyžaduje, aby uživatelé ve výchozím nastavení získali e-mailovou adresu. Přejděte na kartu Oprávnění, klikněte na tlačítko Upravit a zaškrtněte políčko vedle položky Požádat o e-mailovou adresu od uživatelů.
Do pole Adresy URL pro zpětné volání zadejte identifikátor URI pro vývoj s
/signin-twitterpřipojeným kódem (napříkladhttps://webapp128.azurewebsites.net/signin-twitter). Schéma ověřování Twitteru nakonfigurované později v této ukázce bude automaticky zpracovávat požadavky na trase za/signin-twitterúčelem implementace toku OAuth.Poznámka
Segment URI je
/signin-twitternastavený jako výchozí zpětné volání zprostředkovatele ověřování Twitteru. Při konfiguraci ověřovacího middlewaru Twitteru můžete změnit výchozí identifikátor URI zpětného volání prostřednictvím zděděné vlastnosti RemoteAuthenticationOptions.CallbackPath třídy TwitterOptions.Vyplňte zbývající část formuláře a vyberte Vytvořit. Zobrazí se podrobnosti o nové aplikaci:
Uložení klíče a tajného klíče rozhraní Twitter Consumer API
Ukládejte citlivá nastavení, jako je klíč rozhraní Twitter Consumer API a tajný kód, pomocí Secret Manageru. Pro tuto ukázku použijte následující postup:
Podle pokynů v tématu Povolení úložiště tajných klíče inicializejte projekt pro úložiště tajných klíčů.
Ukládejte citlivá nastavení do místního úložiště tajných kódů pomocí klíčů tajných kódů a
Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecret:dotnet user-secrets set "Authentication:Twitter:ConsumerAPIKey" "<consumer-api-key>" dotnet user-secrets set "Authentication:Twitter:ConsumerSecret" "<consumer-secret>"
:Oddělovač nefunguje s hierarchickými klíči proměnné prostředí na všech platformách. __, je dvojité podtržítko:
- Podporováno všemi platformami. Například
:oddělovač není podporován bash, ale__je. - Automaticky nahrazeno
:
Tyto tokeny najdete po vytvoření nové aplikace Twitter na kartě Klíče a přístupové tokeny:
Konfigurace ověřování Twitteru
Do metody v souboru ConfigureServices Startup.cs přidejte službu Twitter:
{
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;
});
}
Přetížení AddAuthentication (String) nastaví vlastnost DefaultScheme . Přetížení AddAuthentication (Action<AuthenticationOptions>) umožňuje konfigurovat možnosti ověřování, které lze použít k nastavení výchozích schémat ověřování pro různé účely. Následná volání AddAuthentication přepsat dříve nakonfigurované vlastnosti AuthenticationOptions .
Metody rozšíření AuthenticationBuilder , které registrují obslužnou rutinu ověřování, se můžou volat jenom jednou pro každé schéma ověřování. Existují přetížení, která umožňují konfigurovat vlastnosti schématu, název schématu a zobrazované jméno.
Zprostředkovatelé více ověřování
Když aplikace vyžaduje víc poskytovatelů, nařetězení rozšiřujících metod poskytovatele za AddAuthentication:
services.AddAuthentication()
.AddMicrosoftAccount(microsoftOptions => { ... })
.AddGoogle(googleOptions => { ... })
.AddTwitter(twitterOptions => { ... })
.AddFacebook(facebookOptions => { ... });
Další informace o možnostech konfigurace podporovaných ověřováním twitteru najdete v referenčních informacích k rozhraní TwitterOptions API. Můžete ji použít k vyžádání různých informací o uživateli.
Přihlášení pomocí Twitteru
Spusťte aplikaci a vyberte Log in (Přihlásit se). Zobrazí se možnost přihlášení pomocí Twitteru:
Kliknutím na Twitteru se přesměruje na Twitter k ověření:
Po zadání přihlašovacích údajů twitteru budete přesměrováni zpět na web, kde můžete nastavit e-mail.
Teď jste přihlášení pomocí svých přihlašovacích údajů k Twitteru:
Dopředné informace o žádosti pomocí proxy serveru nebo nástroje pro vyrovnávání zatížení
Pokud je aplikace nasazená za proxy server nebo nástrojem pro vyrovnávání zatížení, můžou se některé původní informace žádosti přeslat do aplikace v hlavičkách žádostí. Tyto informace obvykle zahrnují schéma zabezpečeného požadavku ( https ), hostitele a IP adresu klienta. Aplikace nečtou tyto hlavičky požadavků automaticky ke zjištění a používání původních informací o požadavku.
Schéma se používá v generaci odkazů, které má vliv na tok ověřování s externími poskytovateli. Výsledkem ztráty zabezpečeného schématu ( https ) je, že aplikace generuje nesprávné adresy URL nezabezpečeného přesměrování.
Použijte middleware předaných hlaviček k zpřístupnění původních informací o požadavku aplikaci pro zpracování žádostí.
Další informace naleznete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.
Řešení potíží
- ASP.NET Core 2.x: Pokud není nakonfigurovaná voláním v , pokus o ověření bude mít za následek výjimku ArgumentException: Musí být k dispozici možnost Identity
services.AddIdentityConfigureServicesSignInScheme. Šablona projektu použitá v této ukázce zajistí, že se to udělá. - Pokud se databáze lokality nevytyla pomocí počáteční migrace, zobrazí se při zpracování chyby požadavku operace databáze, která selhala. Klepnutím na Použít migrace vytvořte databázi a aktualizujte ji, abyste mohli pokračovat za chybou.
Další kroky
Tento článek vám ukázal, jak se můžete ověřit na Twitteru. Podobným způsobem můžete provést ověření u jiných zprostředkovatelů uvedených na předchozí stránce.
Po publikování webu do webové aplikace Azure byste měli resetovat na portálu pro
ConsumerSecretvývojáře na Twitteru.Nastavte
Authentication:Twitter:ConsumerKeyAuthentication:Twitter:ConsumerSecreta jako nastavení aplikace v Azure Portal. Systém konfigurace je nastavený tak, aby načítal klíče z proměnných prostředí.