Nastavení externího přihlášení k Twitteru pomocí ASP.NET CoreTwitter external sign-in setup with ASP.NET Core

Podle Valeriy Novytskyy a Rick AndersonBy Valeriy Novytskyy and Rick Anderson

V této ukázce se dozvíte, jak uživatelům povolit, aby se k účtu Twitter přihlásili pomocí ukázkového projektu ASP.NET Core 3,0 vytvořeného na předchozí stránce.This sample shows how to enable users to sign in with their Twitter account using a sample ASP.NET Core 3.0 project created on the previous page.

Vytvoření aplikace na TwitteruCreate the app in Twitter

  • Do projektu přidejte balíček NuGet Microsoft. AspNetCore. Authentication. Twitter .Add the Microsoft.AspNetCore.Authentication.Twitter NuGet package to the project.

  • Přejděte do https://apps.twitter.com/ a přihlaste se.Navigate to https://apps.twitter.com/ and sign in. Pokud ještě nemáte účet na Twitteru, vytvořte si ho pomocí odkazu zaregistrovat nyní .If you don't already have a Twitter account, use the Sign up now link to create one.

  • Vyberte Vytvořit aplikaci.Select Create an app. Vyplňte název aplikace, Popis aplikace a identifikátor URI veřejného webu (může to být dočasné, dokud nezaregistrujete název domény):Fill out the App name, Application description and public Website URI (this can be temporary until you register the domain name):

  • Zadejte identifikátor URI pro vývoj s /signin-twitter připojený do pole adresy URL zpětného volání (například: https://webapp128.azurewebsites.net/signin-twitter).Enter your development URI with /signin-twitter appended into the Callback URLs field (for example: https://webapp128.azurewebsites.net/signin-twitter). Schéma ověřování Twitteru, které je nakonfigurované později v této ukázce, automaticky zpracuje požadavky na trasách /signin-twitter k implementaci toku OAuth.The Twitter authentication scheme configured later in this sample will automatically handle requests at /signin-twitter route to implement the OAuth flow.

    Poznámka

    Segment identifikátoru URI /signin-twitter je nastaven jako výchozí zpětné volání poskytovatele ověřování Twitteru.The URI segment /signin-twitter is set as the default callback of the Twitter authentication provider. Výchozí identifikátor URI zpětného volání můžete změnit během konfigurace middleware pro ověřování Twitteru prostřednictvím zděděné vlastnosti RemoteAuthenticationOptions. CallbackPath třídy TwitterOptions .You can change the default callback URI while configuring the Twitter authentication middleware via the inherited RemoteAuthenticationOptions.CallbackPath property of the TwitterOptions class.

  • Vyplňte zbytek formuláře a vyberte vytvořit.Fill out the rest of the form and select Create. Zobrazí se nové podrobnosti o aplikaci:New application details are displayed:

Ukládá se klíč rozhraní API pro příjemce Twitteru a tajný kód.Storing Twitter Consumer API key and secret

Spuštěním následujících příkazů bezpečně uložte ClientId a ClientSecret pomocí správce tajných klíčů:Run the following commands to securely store ClientId and ClientSecret using Secret Manager:

dotnet user-secrets set Authentication:Twitter:ConsumerAPIKey <Key>
dotnet user-secrets set Authentication:Twitter:ConsumerSecret <Secret>

Pomocí správce tajnéhokódu můžete propojit citlivá nastavení, jako je Twitter Consumer Key, a Consumer Secret na konfiguraci vaší aplikace.Link sensitive settings like Twitter Consumer Key and Consumer Secret to your application configuration using the Secret Manager. Pro účely této ukázky pojmenujte tokeny Authentication:Twitter:ConsumerKey a Authentication:Twitter:ConsumerSecret.For the purposes of this sample, name the tokens Authentication:Twitter:ConsumerKey and Authentication:Twitter:ConsumerSecret.

Tyto tokeny najdete na kartě klíče a přístupové tokeny po vytvoření nové aplikace Twitter:These tokens can be found on the Keys and Access Tokens tab after creating a new Twitter application:

Konfigurace ověřování na TwitteruConfigure Twitter Authentication

Do souboru Startup.cs přidejte do metody ConfigureServices službu Twitter:Add the Twitter service in the ConfigureServices method in Startup.cs file:

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

}

Přetížení AddAuthentication (String) nastaví vlastnost DefaultScheme .The AddAuthentication(String) overload sets the DefaultScheme property. 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.The AddAuthentication(Action<AuthenticationOptions>) overload allows configuring authentication options, which can be used to set up default authentication schemes for different purposes. Následná volání AddAuthentication přepsat dříve nakonfigurované vlastnosti AuthenticationOptions .Subsequent calls to AddAuthentication override previously configured AuthenticationOptions properties.

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í.AuthenticationBuilder extension methods that register an authentication handler may only be called once per authentication scheme. Existují přetížení, která umožňují konfigurovat vlastnosti schématu, název schématu a zobrazované jméno.Overloads exist that allow configuring the scheme properties, scheme name, and display name.

Více poskytovatelů ověřováníMultiple authentication providers

Pokud aplikace vyžaduje několik zprostředkovatelů, zřetězení rozšiřující metody zprostředkovatele za AddAuthentication:When the app requires multiple providers, chain the provider extension methods behind AddAuthentication:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Další informace o možnostech Konfigurace podporovaných ověřováním pomocí Twitteru najdete v referenčních informacích k rozhraní TwitterOptions API.See the TwitterOptions API reference for more information on configuration options supported by Twitter authentication. To umožňuje požádat o jiné informace o uživateli.This can be used to request different information about the user.

Přihlášení pomocí TwitteruSign in with Twitter

Spusťte aplikaci a vyberte Přihlásit se.Run the app and select Log in. Zobrazí se možnost přihlásit se pomocí Twitteru:An option to sign in with Twitter appears:

Kliknutí na Twitter přesměruje na Twitter pro ověřování:Clicking on Twitter redirects to Twitter for authentication:

Po zadání přihlašovacích údajů pro Twitter budete přesměrováni zpět na web, kde můžete nastavit e-mail.After entering your Twitter credentials, you are redirected back to the web site where you can set your email.

Nyní jste přihlášeni pomocí svých přihlašovacích údajů k Twitteru:You are now logged in using your Twitter credentials:

Vpřed žádost o informace o proxy serveru nebo nástroj pro vyrovnávání zatíženíForward request information with a proxy or load balancer

Pokud je aplikace nasazena za proxy server nebo nástroje pro vyrovnávání zatížení, některé z původní informace o požadavku může být přeposílán aplikace v záhlaví požadavku.If the app is deployed behind a proxy server or load balancer, some of the original request information might be forwarded to the app in request headers. Tyto informace obvykle obsahuje schéma požadavku zabezpečení (https), hostitele a IP adresu klienta.This information usually includes the secure request scheme (https), host, and client IP address. Aplikace si automaticky tyto hlavičky žádosti mohli objevit a používat původní informace o žádostech.Apps don't automatically read these request headers to discover and use the original request information.

Schéma se používá při generování odkazů, které má vliv na tok ověřování u externích poskytovatelů.The scheme is used in link generation that affects the authentication flow with external providers. Zabezpečený režim ztráty (https) výsledkem generování adresy URL pro přesměrování nesprávné nezabezpečené aplikace.Losing the secure scheme (https) results in the app generating incorrect insecure redirect URLs.

Předané Middleware záhlaví využívat k zpřístupňování původní informace o požadavku do aplikace pro zpracování požadavku.Use Forwarded Headers Middleware to make the original request information available to the app for request processing.

Další informace naleznete v tématu Konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.For more information, see Konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

Odstraňování problémůTroubleshooting

  • ASP.NET Core 2.x pouze: pokud identita není nakonfigurována voláním services.AddIdentity v ConfigureServices, bude výsledkem pokusu o ověření ArgumentException: musí být Zadaná možnost "SignInScheme" .ASP.NET Core 2.x only: If Identity isn't configured by calling services.AddIdentity in ConfigureServices, attempting to authenticate will result in ArgumentException: The 'SignInScheme' option must be provided. Šablona projektu použitá v této ukázce zajišťuje, že je to hotové.The project template used in this sample ensures that this is done.
  • Pokud nebyl vytvořen použití počáteční migraci databáze lokality, se zobrazí databázová operace selhala při zpracování požadavku chyby.If the site database has not been created by applying the initial migration, you will get A database operation failed while processing the request error. Klepněte na migrace použít k vytvoření databáze a aktualizovat a pokračovat po chybě.Tap Apply Migrations to create the database and refresh to continue past the error.

Další krokyNext steps

  • Tento článek ukazuje, jak se dá ověřit pomocí Twitteru.This article showed how you can authenticate with Twitter. Můžete postupovat podle podobný přístup k ověření u jiných poskytovatelů na předchozí stránce.You can follow a similar approach to authenticate with other providers listed on the previous page.

  • Po publikování webu do webové aplikace Azure byste měli resetovat ConsumerSecret na portálu pro vývojáře na Twitteru.Once you publish your web site to Azure web app, you should reset the ConsumerSecret in the Twitter developer portal.

  • Nastavte Authentication:Twitter:ConsumerKey a Authentication:Twitter:ConsumerSecret jako nastavení aplikace na webu Azure Portal.Set the Authentication:Twitter:ConsumerKey and Authentication:Twitter:ConsumerSecret as application settings in the Azure portal. Konfigurační systém je nastavený na klíče pro čtení z proměnných prostředí.The configuration system is set up to read keys from environment variables.