Ověřování pro Facebook, Google a externí poskytovatele v ASP.NET CoreFacebook, Google, and external provider authentication in ASP.NET Core

Od Valeriy Novytskyy a Rick AndersonBy Valeriy Novytskyy and Rick Anderson

Tento kurz ukazuje, jak vytvořit aplikaci ASP.NET Core 3,0, která uživatelům umožňuje přihlásit se pomocí OAuth 2,0 s přihlašovacími údaji od externích zprostředkovatelů ověřování.This tutorial demonstrates how to build an ASP.NET Core 3.0 app that enables users to sign in using OAuth 2.0 with credentials from external authentication providers.

Poskytovatelé Facebooku, Twitteru, Googlea Microsoftu jsou popsaná v následujících částech a používají počáteční projekt vytvořený v tomto článku.Facebook, Twitter, Google, and Microsoft providers are covered in the following sections and use the starter project created in this article. Jiní poskytovatelé jsou k dispozici v balíčcích třetích stran, jako jsou ASPNET. Security. OAuth. Providers a ASPNET. Security. OpenId. Providers.Other providers are available in third-party packages such as AspNet.Security.OAuth.Providers and AspNet.Security.OpenId.Providers.

Povolení přihlášení uživatelů pomocí stávajících přihlašovacích údajů:Enabling users to sign in with their existing credentials:

  • Je vhodné pro uživatele.Is convenient for the users.
  • Posune mnoho složitých složitosti při správě procesu přihlašování na třetí stranu.Shifts many of the complexities of managing the sign-in process onto a third party.

Příklady, jak mohou sociální přihlášení prosazovat přenosy a převody zákazníků, najdete v tématu případové studie na Facebooku a Twitteru.For examples of how social logins can drive traffic and customer conversions, see case studies by Facebook and Twitter.

Vytvoření nového projektu ASP.NET CoreCreate a New ASP.NET Core Project

  • Vytvořte nový projekt.Create a new project.
  • Vyberte ASP.NET Core webová aplikace a Další.Select ASP.NET Core Web Application and Next.
  • Zadejte název projektu a potvrďte nebo změňte umístění.Provide a Project name and confirm or change the Location. Vyberte vytvořit.Select Create.
  • V rozevíracím seznamu vyberte ASP.NET Core 3,0 a pak vyberte Webová aplikace.Select ASP.NET Core 3.0 in the drop-down, and then select Web Application.
  • V části ověřovánívyberte změnit a nastavte ověřování na jednotlivé uživatelské účty.Under Authentication, select Change and set the authentication to Individual User Accounts. Vyberte OK.Select OK.
  • V okně vytvořit novou webovou aplikaci ASP.NET Core vyberte vytvořit.In the Create a new ASP.NET Core Web Application window, select Create.

Použít migraceApply migrations

  • Spusťte aplikaci a vyberte odkaz Registrovat .Run the app and select the Register link.
  • Zadejte e-mail a heslo nového účtu a pak vyberte zaregistrovat.Enter the email and password for the new account, and then select Register.
  • Při instalaci migrace postupujte podle pokynů.Follow the instructions to apply migrations.

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

Ukládat tokeny přiřazené poskytovateli přihlášení pomocí SecretManagerUse SecretManager to store tokens assigned by login providers

Poskytovatelé sociálního přihlášení přidělují ID aplikace a tajné tokeny aplikace během procesu registrace.Social login providers assign Application Id and Application Secret tokens during the registration process. Přesné názvy tokenů se liší podle poskytovatele.The exact token names vary by provider. Tyto tokeny reprezentují přihlašovací údaje, které aplikace používá pro přístup ke svým rozhraním API.These tokens represent the credentials your app uses to access their API. Tokeny představují "tajné klíče", které lze propojit s konfigurací aplikace pomocí správce tajných klíčů.The tokens constitute the "secrets" that can be linked to your app configuration with the help of Secret Manager. Správce tajných klíčů je bezpečnější alternativou pro ukládání tokenů do konfiguračního souboru, například appSettings. JSON.Secret Manager is a more secure alternative to storing the tokens in a configuration file, such as appsettings.json.

Důležité

Správce tajných klíčů je jenom pro účely vývoje.Secret Manager is for development purposes only. Pomocí poskytovatele konfigurace Azure Key Vaultmůžete ukládat a chránit tajné kódy Azure test a produkčního prostředí.You can store and protect Azure test and production secrets with the Azure Key Vault configuration provider.

Postupujte podle kroků v bezpečném úložišti tajných kódů aplikací ve vývoji v tématu ASP.NET Core tématu uložení tokenů přiřazených každým poskytovatelem přihlašovacích údajů níže.Follow the steps in Safe storage of app secrets in development in ASP.NET Core topic to store tokens assigned by each login provider below.

Nastavení poskytovatelů přihlášení požadovaných vaší aplikacíSetup login providers required by your application

Pomocí následujících témat můžete nakonfigurovat aplikaci tak, aby používala příslušné poskytovatele:Use the following topics to configure your application to use the respective providers:

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

Volitelně nastavit hesloOptionally set password

Když se zaregistrujete u externího poskytovatele přihlašovacích údajů, nemáte v aplikaci zaregistrovaným heslem.When you register with an external login provider, you don't have a password registered with the app. To vám pomůžeme při vytváření a zapamatování hesla pro web, ale také vám to závisí na externím poskytovateli přihlášení.This alleviates you from creating and remembering a password for the site, but it also makes you dependent on the external login provider. Pokud externí poskytovatel přihlášení není dostupný, nebudete se moct přihlásit k webu.If the external login provider is unavailable, you won't be able to sign in to the web site.

Pokud chcete vytvořit heslo a přihlásit se pomocí e-mailu, který jste nastavili během procesu přihlašování pomocí externích zprostředkovatelů:To create a password and sign in using your email that you set during the sign in process with external providers:

  • Výběrem odkazu hello <email alias> v pravém horním rohu přejděte do zobrazení Správa .Select the Hello <email alias> link at the top-right corner to navigate to the Manage view.

Správa zobrazení webové aplikace

  • Vyberte vytvořit .Select Create

Nastavení stránky pro heslo

  • Nastavte platné heslo a můžete ho použít k přihlášení pomocí e-mailu.Set a valid password and you can use this to sign in with your email.

Další krokyNext steps

  • Tento článek představil externí ověřování a vysvětluje požadavky potřebné k přidání externích přihlášení do vaší aplikace ASP.NET Core.This article introduced external authentication and explained the prerequisites required to add external logins to your ASP.NET Core app.

  • Stránky specifické pro poskytovatele odkazů pro konfiguraci přihlášení pro poskytovatele vyžadované vaší aplikacíReference provider-specific pages to configure logins for the providers required by your app.

  • Můžete chtít zachovat další data o uživateli a jejich přístup a aktualizovat tokeny.You may want to persist additional data about the user and their access and refresh tokens. Další informace najdete v tématu Trvalé další deklarace identity a tokeny od externích zprostředkovatelů v ASP.NET Core.For more information, see Trvalé další deklarace identity a tokeny od externích zprostředkovatelů v ASP.NET Core.