Externí přihlášení nastavení sítě Facebook v ASP.NET CoreFacebook external login setup in ASP.NET Core

Podle Valeriy Novytskyy a Rick AndersonBy Valeriy Novytskyy and Rick Anderson

Tento kurz s příklady kódu ukazuje, jak se uživatelům umožní přihlásit se pomocí účtu na Facebooku pomocí ukázkového projektu ASP.NET Core 2,0 vytvořeného na předchozí stránce.This tutorial with code examples shows how to enable your users to sign in with their Facebook account using a sample ASP.NET Core 2.0 project created on the previous page. Začneme tím, že vytvoříte podle ID aplikace pro Facebook oficiální kroky.We start by creating a Facebook App ID by following the official steps.

Vytvoření aplikace na FacebookuCreate the app in Facebook

  • Přejděte Facebook vývojáři aplikace stránky a přihlaste se.Navigate to the Facebook Developers app page and sign in. Pokud ještě nemáte účet služby Facebook, použijte zaregistrovat Facebooku odkaz na přihlašovací stránku k jejímu vytvoření.If you don't already have a Facebook account, use the Sign up for Facebook link on the login page to create one.

  • Klepněte přidejte novou aplikaci tlačítko v pravém horním rohu k vytvoření nového ID aplikace.Tap the Add a New App button in the upper right corner to create a new App ID.

    Facebook pro portál pro vývojáře otevřít v Microsoft Edge

  • Vyplňte formulář a klepněte vytvoření ID aplikace tlačítko.Fill out the form and tap the Create App ID button.

    Vytvoření nové aplikace ID formuláře

  • Na vyberte produkt klikněte na Set Up na přihlášení k Facebooku karty.On the Select a product page, click Set Up on the Facebook Login card.

    Stránka nastavení produktu

  • Rychlý Start průvodce se spustí s zvolte platformu jako první stránka.The Quickstart wizard will launch with Choose a Platform as the first page. Vynechat Průvodce teď kliknutím nastavení odkaz v nabídce na levé straně:Bypass the wizard for now by clicking the Settings link in the menu on the left:

    Přeskočit rychlý Start

  • Zobrazí se nastavení klienta OAuth stránky:You are presented with the Client OAuth Settings page:

    Stránka nastavení OAuth klienta

  • Zadejte identifikátor URI vývoje s /signin-facebook připojí do identifikátory URI pro přesměrování platný OAuth pole (například: https://localhost:44320/signin-facebook).Enter your development URI with /signin-facebook appended into the Valid OAuth Redirect URIs field (for example: https://localhost:44320/signin-facebook). Ověřování přes síť Facebook později v tomto kurzu konfiguruje automaticky zpracovává požadavky na /signin-facebook trasy, která má implementovat tok OAuth.The Facebook authentication configured later in this tutorial will automatically handle requests at /signin-facebook route to implement the OAuth flow.

Poznámka

Identifikátor URI /signin-facebook je nastaven jako výchozí zpětného volání zprostředkovatele ověřování sítě Facebook.The URI /signin-facebook is set as the default callback of the Facebook authentication provider. Můžete změnit výchozí identifikátor URI zpětného volání při konfiguraci middlewaru Facebook ověřování prostřednictvím zděděnou RemoteAuthenticationOptions.CallbackPath vlastnost FacebookOptions Třída.You can change the default callback URI while configuring the Facebook authentication middleware via the inherited RemoteAuthenticationOptions.CallbackPath property of the FacebookOptions class.

  • Klikněte na tlačítko uložit změny.Click Save Changes.

  • Klikněte na tlačítko nastavení > základní odkaz v levém navigačním panelu.Click Settings > Basic link in the left navigation.

    Na této stránce si poznamenejte vaše App ID a App Secret.On this page, make a note of your App ID and your App Secret. Přidá do vaší aplikace ASP.NET Core v následující části:You will add both into your ASP.NET Core application in the next section:

  • Při nasazování webu potřebujete revidovat přihlášení k Facebooku stránce instalace a registrace nový veřejný identifikátor URI.When deploying the site you need to revisit the Facebook Login setup page and register a new public URI.

ID aplikace pro Store Facebook a tajný klíč aplikaceStore Facebook App ID and App Secret

Propojit citlivá nastavení, jako je Facebook App ID a App Secret pomocí konfigurace aplikace manažera tajných.Link sensitive settings like Facebook App ID and App Secret to your application configuration using the Secret Manager. Pro účely tohoto kurzu se název tokeny Authentication:Facebook:AppId a Authentication:Facebook:AppSecret.For the purposes of this tutorial, name the tokens Authentication:Facebook:AppId and Authentication:Facebook:AppSecret.

Když pracujete s hierarchickými klíči v proměnných prostředí, oddělovač dvojtečky (:) nemusí fungovat na všech platformách (například bash).When working with hierarchical keys in environment variables, a colon separator (:) may not work on all platforms (for example, Bash). Dvojité podtržítko (__) je podporováno všemi platformami a je automaticky nahrazeno dvojtečkou.A double underscore (__) is supported by all platforms and is automatically replaced by a colon.

Spusťte následující příkazy zabezpečeně ukládat App ID a App Secret pomocí manažera tajných:Execute the following commands to securely store App ID and App Secret using Secret Manager:

dotnet user-secrets set Authentication:Facebook:AppId <app-id>
dotnet user-secrets set Authentication:Facebook:AppSecret <app-secret>

Konfigurace ověřování sítě FacebookConfigure Facebook Authentication

Přidání služby Facebook v ConfigureServices metodu Startup.cs souboru:Add the Facebook service in the ConfigureServices method in the Startup.cs file:

services.AddDefaultIdentity<IdentityUser>()
        .AddDefaultUI(UIFramework.Bootstrap4)
        .AddEntityFrameworkStores<ApplicationDbContext>();

services.AddAuthentication().AddFacebook(facebookOptions =>
{
    facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
    facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});

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 => { ... });

Nainstalujte Microsoft.AspNetCore.Authentication.Facebook balíčku.Install the Microsoft.AspNetCore.Authentication.Facebook package.

  • K instalaci tohoto balíčku pomocí sady Visual Studio 2017, klikněte pravým tlačítkem na projekt a vyberte spravovat balíčky NuGet.To install this package with Visual Studio 2017, right-click on the project and select Manage NuGet Packages.

  • Instalace s .NET Core CLI, spusťte v adresáři projektu následující:To install with .NET Core CLI, execute the following in your project directory:

    dotnet add package Microsoft.AspNetCore.Authentication.Facebook

Přidat v middlewaru Facebook Configure metoda ve Startup.cs souboru:Add the Facebook middleware in the Configure method in Startup.cs file:

app.UseFacebookAuthentication(new FacebookOptions()
{
    AppId = Configuration["Authentication:Facebook:AppId"],
    AppSecret = Configuration["Authentication:Facebook:AppSecret"]
});

Zobrazit FacebookOptions reference k rozhraní API pro další informace o konfiguraci možností podporovaných příkazem ověřování sítě Facebook.See the FacebookOptions API reference for more information on configuration options supported by Facebook authentication. Možnosti konfigurace umožňuje:Configuration options can be used to:

  • Požádat o jiné informace o uživateli.Request different information about the user.
  • Přidáte argumenty řetězce dotazu přizpůsobit přihlašovací prostředí.Add query string arguments to customize the login experience.

Přihlášení pomocí FacebookuSign in with Facebook

Spusťte aplikaci a klikněte na tlačítko přihlášení.Run your application and click Log in. Zobrazí se možnost přihlásit se přes Facebook.You see an option to sign in with Facebook.

Webová aplikace: Uživatel nebyl ověřen.

Po kliknutí na Facebook, budete přesměrováni na Facebook pro ověření:When you click on Facebook, you are redirected to Facebook for authentication:

Stránka pro ověřování sítě Facebook

Požadavky na ověření sítě Facebook veřejný profil a e-mailovou adresu ve výchozím nastavení:Facebook authentication requests public profile and email address by default:

Obrazovka pro vyjádření souhlasu stránky ověřování sítě Facebook

Po zadání vašich přihlašovacích údajů k Facebooku budete přesměrováni zpět na váš web, kde můžete nastavit e-mailu.Once you enter your Facebook credentials you are redirected back to your site where you can set your email.

Nyní jste přihlášeni pomocí vašich přihlašovacích údajů k Facebooku:You are now logged in using your Facebook credentials:

Webová aplikace: Ověřeno uživatelem

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 tomto kurzu zajistí, že to se provádí.The project template used in this tutorial ensures that this is done.
  • Pokud nebyl vytvořen použití počáteční migraci databáze lokality, můžete získat 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 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

  • Přidejte do projektu balíček NuGet Microsoft. AspNetCore. Authentication. Facebook pro pokročilé scénáře ověřování na Facebooku.Add the Microsoft.AspNetCore.Authentication.Facebook NuGet package to your project for advanced Facebook authentication scenarios. Tento balíček není potřebný pro integraci funkce externích přihlášení ke službě Facebook s vaší aplikací.This package isn't required to integrate Facebook external login functionality with your app.

  • V tomto článku jsme si ukázali, jak ověřování pomocí Facebooku.This article showed how you can authenticate with Facebook. 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, měli byste resetovat AppSecret na portálu pro vývojáře služby Facebook.Once you publish your web site to Azure web app, you should reset the AppSecret in the Facebook developer portal.

  • Nastavte Authentication:Facebook:AppId a Authentication:Facebook:AppSecret jako nastavení aplikace na webu Azure Portal.Set the Authentication:Facebook:AppId and Authentication:Facebook:AppSecret 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.