Authentification à l’aide de fournisseurs externes (Facebook, Google et autres) dans ASP.NET CoreFacebook, Google, and external provider authentication in ASP.NET Core

Par Valeriy Novytskyy et Rick AndersonBy Valeriy Novytskyy and Rick Anderson

Ce tutoriel montre comment créer une application ASP.NET Core 2.2 qui permet aux utilisateurs de se connecter à l’aide d’OAuth 2.0 avec des informations d’identification provenant de fournisseurs d’authentification externes.This tutorial demonstrates how to build an ASP.NET Core 2.2 app that enables users to sign in using OAuth 2.0 with credentials from external authentication providers.

Les fournisseurs Facebook, Twitter, Google et Microsoft sont traités dans les sections qui suivent.Facebook, Twitter, Google, and Microsoft providers are covered in the following sections. D’autres fournisseurs sont disponibles dans des packages tiers, comme AspNet.Security.OAuth.Providers et AspNet.Security.OpenId.Providers.Other providers are available in third-party packages such as AspNet.Security.OAuth.Providers and AspNet.Security.OpenId.Providers.

Icônes de réseau social pour Facebook, Twitter, Google plus et Windows

Permettre aux utilisateurs de se connecter avec leurs informations d’identification existantes :Enabling users to sign in with their existing credentials:

  • Est pratique pour les utilisateurs.Is convenient for the users.
  • Transfère une grande partie des complexités de la gestion du processus de connexion à un tiers.Shifts many of the complexities of managing the sign-in process onto a third party.

Pour obtenir des exemples de la façon dont les connexions des réseaux sociaux peuvent amener du trafic et des conversions de clients, consultez les études de cas par Facebook et Twitter.For examples of how social logins can drive traffic and customer conversions, see case studies by Facebook and Twitter.

Créer un projet ASP.NET CoreCreate a New ASP.NET Core Project

  • Créer un nouveau projet.Create a new project.
  • Sélectionnez Nouvelle application web ASP.NET Core et Suivant.Select ASP.NET Core Web Application and Next.
  • Fournissez un Nom de projet et confirmez ou changez l’Emplacement.Provide a Project name and confirm or change the Location. Sélectionnez Créer.Select Create.
  • Sélectionnez ASP.NET Core 2.2 dans la liste déroulante.Select ASP.NET Core 2.2 in the drop down. Sélectionnez Application web dans la liste des modèles.Select Web Application in the template list.
  • Sous Authentification, sélectionnez Changer et définissez l’authentification sur Comptes d’utilisateur individuels.Under Authentication, select Change and set the authentication to Individual User Accounts. Sélectionnez OK.Select OK.
  • Dans la fenêtre Créer une application web ASP.NET Core, sélectionnez Créer.In the Create a new ASP.NET Core Web Application window, select Create.

Appliquer des migrationsApply migrations

  • Exécutez l’application et sélectionnez le lien S’inscrire.Run the app and select the Register link.
  • Entrez l’adresse e-mail et le mot de passe du nouveau compte, puis sélectionnez S’inscrire.Enter the email and password for the new account, and then select Register.
  • Suivez les instructions pour appliquer des migrations.Follow the instructions to apply migrations.

Transférer les informations sur la demande avec un proxy ou un équilibreur de chargeForward request information with a proxy or load balancer

Si l’application est déployée derrière un serveur proxy ou un équilibreur de charge, certaines informations sur la demande d’origine peuvent être transférées vers l’application dans les en-têtes de demande.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. Ces informations incluent généralement le schéma de demande sécurisé (https), l’hôte et l’adresse IP du client.This information usually includes the secure request scheme (https), host, and client IP address. Les applications ne lisent pas automatiquement ces en-têtes de demande pour découvrir et d’utiliser les informations sur la demande d’origine.Apps don't automatically read these request headers to discover and use the original request information.

Le schéma est utilisé dans la génération de lien qui affecte le flux d’authentification dans le cas de fournisseurs externes.The scheme is used in link generation that affects the authentication flow with external providers. En cas de perte du schéma sécurisé (https), l’application génère des URL de redirection incorrectes et non sécurisées.Losing the secure scheme (https) results in the app generating incorrect insecure redirect URLs.

Utilisez l’intergiciel Forwarded Headers afin de mettre les informations de demande d’origine à la disposition de l’application pour le traitement des demandes.Use Forwarded Headers Middleware to make the original request information available to the app for request processing.

Pour plus d’informations, consultez Configurer ASP.NET Core pour l’utilisation de serveurs proxy et d’équilibreurs de charge.For more information, see Configurer ASP.NET Core pour l’utilisation de serveurs proxy et d’équilibreurs de charge.

Utilisez SecretManager pour stocker les jetons affectés par les fournisseurs de connexionUse SecretManager to store tokens assigned by login providers

Les fournisseurs de connexion de réseaux sociaux affectent des jetons ID d’application et Secret de l’application lors du processus d’inscription.Social login providers assign Application Id and Application Secret tokens during the registration process. Les noms de jeton exacts varient selon le fournisseur.The exact token names vary by provider. Ces jetons représentent les informations d’identification que votre application utilise pour accéder à son API.These tokens represent the credentials your app uses to access their API. Les jetons constituent les « secrets » qui peuvent être liés à la configuration de votre application à l’aide de Secret Manager.The tokens constitute the "secrets" that can be linked to your app configuration with the help of Secret Manager. Secret Manager est une alternative plus sécurisée pour stocker les jetons dans un fichier de configuration, tel que appsettings.json.Secret Manager is a more secure alternative to storing the tokens in a configuration file, such as appsettings.json.

Important

Secret Manager est uniquement réservé au développement.Secret Manager is for development purposes only. Vous pouvez stocker et protéger les secrets de test et de production Azure avec le fournisseur de configuration Azure Key Vault.You can store and protect Azure test and production secrets with the Azure Key Vault configuration provider.

Suivez les étapes de la rubrique Stockage sécurisé des secrets d’application lors du développement dans ASP.NET Core pour stocker les jetons affectés par chaque fournisseur de connexion ci-dessous.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.

Configurer les fournisseurs de connexion nécessaires à votre applicationSetup login providers required by your application

Utilisez les rubriques suivantes pour configurer votre application pour utiliser ces différents fournisseurs :Use the following topics to configure your application to use the respective providers:

Fournisseurs d’authentification multipleMultiple authentication providers

Lorsque l’application nécessite plusieurs fournisseurs, chaînez les méthodes d’extension de fournisseur derrière AddAuthentication :When the app requires multiple providers, chain the provider extension methods behind AddAuthentication:

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

Définition facultative d’un mot de passeOptionally set password

Quand vous vous inscrivez auprès d’un fournisseur de connexion externe, vous n’avez pas de mot de passe inscrit auprès de l’application.When you register with an external login provider, you don't have a password registered with the app. Ceci vous évite de devoir créer et mémoriser un mot de passe pour le site, mais vous rend aussi dépendant du fournisseur de connexion externe.This alleviates you from creating and remembering a password for the site, but it also makes you dependent on the external login provider. Si le fournisseur de connexion externe n’est pas disponible, vous ne pouvez pas vous connecter au site web.If the external login provider is unavailable, you won't be able to sign in to the web site.

Pour créer un mot de passe et vous connecter à l’aide de l’e-mail que vous avez défini lors du processus de connexion avec des fournisseurs externes :To create a password and sign in using your email that you set during the sign in process with external providers:

  • Sélectionnez le lien Bonjour <alias d’e-mail> en haut à droite pour accéder à la vue Gérer.Select the Hello <email alias> link at the top-right corner to navigate to the Manage view.

Vue Gérer de l’application web

  • Sélectionnez Créer.Select Create

Page Définir votre mot de passe

  • Définissez un mot de passe valide à utiliser pour vous connecter avec votre e-mail.Set a valid password and you can use this to sign in with your email.

Étapes suivantesNext steps