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 2,2 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 2.2 project created on the previous page.

Vytvoření aplikace na TwitteruCreate the app in Twitter

  • 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.

  • Klepněte na vytvořit novou aplikaci a vyplňte názevaplikace, Popis a identifikátor URI veřejného webu (může to být dočasné, dokud nezaregistrujete název domény):Tap Create New App and fill out the application Name, Description and public Website URI (this can be temporary until you register the domain name):

  • Zadejte identifikátor URI pro vývoj /signin-twitter s připojením k platným poli s platnými identifikátory URI pro přesměrování OAuth (například: https://webapp128.azurewebsites.net/signin-twitter).Enter your development URI with /signin-twitter appended into the Valid OAuth Redirect URIs 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, /signin-twitter automaticky zpracuje požadavky na trase 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 /signin-twitter identifikátoru URI 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 klepněte na vytvořit aplikaci Twitter.Fill out the rest of the form and tap Create your Twitter application. 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 použijte 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 Consumer Key můžete Consumer Secret propojit citlivá nastavení, jako je Twitter a konfigurace 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:ConsumerSecretFor 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

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>()
        .AddDefaultUI(UIFramework.Bootstrap4)
        .AddEntityFrameworkStores<ApplicationDbContext>();

    services.AddAuthentication().AddTwitter(twitterOptions =>
    {
        twitterOptions.ConsumerKey = Configuration["Authentication:Twitter:ConsumerAPIKey"];
        twitterOptions.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"];
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

Volání AddDefaultIdentity nakonfiguruje výchozí nastavení schéma.The call to AddDefaultIdentity configures the default scheme settings. AddAuthentication(String) přetížení sad DefaultScheme vlastnost.The AddAuthentication(String) overload sets the DefaultScheme property. AddAuthentication (akce<AuthenticationOptions>) přetížení umožňuje konfigurovat možnosti ověřování, které je možné použít k nastavení výchozí schémata 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ásledující volání AddAuthentication přepsání, které jste dříve nakonfigurovali AuthenticationOptions vlastnosti.Subsequent calls to AddAuthentication override previously configured AuthenticationOptions properties.

AuthenticationBuilder rozšiřující metody, které se zaregistrovat obslužnou rutinu ověřování může být volána pouze jednou za 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í konfiguraci vlastností schéma, název schématu a zobrazovaný název.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í.

Poradce při potížíchTroubleshooting

  • Pouze ASP.NET Core 2. x: Pokud identita není nakonfigurována voláním services.AddIdentity v ConfigureServices, výsledkem pokusu o ověření bude ArgumentException: Je nutné zadatmož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ší postupNext 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 na ConsumerSecret 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.