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-twitter připojeným kódem (například https://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-twitter nastavený 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:

  1. Podle pokynů v tématu Povolení úložiště tajných klíče inicializejte projekt pro úložiště tajných klíčů.

  2. Ukládejte citlivá nastavení do místního úložiště tajných kódů pomocí klíčů tajných kódů a Authentication:Twitter:ConsumerKey Authentication: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.AddIdentity ConfigureServices SignInScheme. Š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 ConsumerSecret vývojáře na Twitteru.

  • Nastavte Authentication:Twitter:ConsumerKey Authentication:Twitter:ConsumerSecret a jako nastavení aplikace v Azure Portal. Systém konfigurace je nastavený tak, aby načítal klíče z proměnných prostředí.