• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 29/03/2023

Authentifiez des utilisateurs avec des comptes externes

Qu'est-ce qu'une authentification par un compte externe ?

De nombreux sites vous proposent de vous connecter avec les identifiants que vous utilisez sur des réseaux sociaux. Ce type de connexion est appelé authentification par un compte externe. Elle permet à l'application de récupérer vos informations depuis un autre compte vérifié et de les utiliser pour vous créer un nouveau compte. Dans cette partie, nous allons voir comment utiliser l'authentification par un compte externe pour inscrire et authentifier des utilisateurs dans une application Web .NET Core.

La configuration et l'autorisation de ce type d'authentification se déroulent généralement en trois grandes étapes :

  1. Créez une application dans l'espace de développement du fournisseur d'identification tiers.

  2. Utilisez  SecretManager  pour stocker les tokens affectés par les fournisseurs d'identification.

  3. Configurez les fournisseurs d'identification pour votre application.

Même si le fonctionnement est pratiquement le même, chaque fournisseur est différent et impose un processus précis. Nous allons nous limiter à un seul fournisseur dans ce chapitre. Pour en savoir plus sur les processus des autres fournisseurs, consultez les liens suivants (en anglais):

Ajoutez l'authentification à l'aide d'un compte Facebook

Passons en revue le processus de configuration de l'authentification des utilisateurs d'une application MVC à l'aide d'un compte Facebook. Vous devez effectuer les trois étapes décrites dans la section précédente selon les modalités spécifiques à Facebook :

  1. Créez une application Facebook.

  2. Enregistrez l'identifiant et la clé secrète de l'application Facebook.

  3. Configurez l'authentification Facebook.

Créez une application Facebook

Pour créer des applications Facebook, il suffit d'accéder à https://developers.facebook.com/. Si vous n'êtes pas connecté à Facebook, vous devez le faire dans l'espace des développeurs.

Facebook pour les développeurs
Facebook pour les développeurs

Cliquez sur Mes applications pour accéder au menu des applications Facebook. Vous y trouverez toutes les applications associées à votre compte et une option permettant de créer une nouvelle application. 

Menu des applications Facebook avec l'option Créer une app
Menu des applications Facebook avec l'option Créer une app

Lorsque vous cliquez sur Créer une app, la page suivante s'affiche : 

Boîte de dialogue Créer une app
Boîte de dialogue Créer une app

Vous devez alors créer un nom pour votre application Facebook, ainsi qu'une adresse e-mail de contact, puis cliquer sur le bouton Créer un identifiant d'application. Vous serez invité à passer un Recaptcha pour confirmer que vous n'êtes pas un robot, puis vous serez dirigé vers le tableau de bord de votre nouvelle application.

Tableau de bord de l'application
Tableau de bord de l'application

Sur cette page, cliquez sur le bouton Paramètres dans l'encart Facebook Login.

L'assistant Quickstart affiche une page vous invitant à choisir une plateforme, mais ignorez-la pour l'instant. Cliquez directement sur le lien Paramètres dans le menu du côté gauche de la page. La page Paramètres OAuth client s'affiche :

Cliquez sur le lien Paramètres pour trouver le Client OAuth Settings page
Cliquez sur le lien Paramètres pour trouver le Client OAuth Settings page

Faites défiler la page jusqu'au champ URI de redirection OAuth valides. C'est là que vous devez saisir tous les URI qui utiliseront cette application pour l'authentification. Saisissez l'URI de développement de votre application (dans l'exemple ci-dessus, j'ai indiqué l'URI de mon application Watchlist créée sur Azure dans le cours MVC) et ajoutez-y /signin-facebook. /signin-facebook correspond à l'URI de rappel par défaut du fournisseur d'authentification de Facebook. Par la suite, nous configurerons l'authentification Facebook de votre projet de sorte qu'elle gère les requêtes adressées à cette route.

Après avoir saisi les URI appropriés, cliquez sur le bouton Enregistrer les modifications, puis sur le lien Paramètres > Général dans le menu de navigation sur la gauche de la page.

Notez l'identifiant de l'application et la clé secrète qui sont affichés sur la page. Par défaut, la clé secrète est masquée, mais vous pouvez la révéler en cliquant sur le bouton Afficher à droite du champ Clé secrète. Vous enregistrerez ces deux valeurs dans votre projet .NET Core dans la section suivante.

Et voilà, il n'y a quasiment plus rien à faire pour configurer une connexion à une application Facebook. La plupart des services tiers fonctionnent de la même façon et partagent la même terminologie. Une fois que vous en maîtriserez un, les autres ne vous poseront aucune difficulté.

Revenons maintenant à notre projet et configurons-le pour qu'il utilise la connexion Facebook tierce.

Enregistrez l'identifiant et la clé secrète de l'application Facebook

ASP.NET Core intègre un excellent outil pour stocker de manière sécurisée les paramètres sensibles comme l’identifiant et la clé secrète de votre application Facebook. Ces paramètres sont enregistrés dans la configuration de votre application à l'aide du Secret Manager, que vous pouvez appeler via la fenêtre de la console du gestionnaire de packages

Dans la console du gestionnaire de packages, exécutez les commandes suivantes pour enregistrer l'identifiant et la clé secrète de votre application de connexion via Facebook dans le Secret Manager :

dotnet user-secrets set "Authentication:Facebook:AppId" "<l'identifiant de votre application>" --project "<chemin du fichier .csproj du projet>"

dotnet user-secrets set "Authentication:Facebook:AppSecret" "<la clé secrète de votre application>" --project "<chemin du fichier .csproj du projet>"

À la fin de chaque commande, un message indiquant la réussite de la commande s'affiche dans la fenêtre de la console. Il s'agit du message suivant :

Successfully saved Authentication:Facebook:AppId = <l'identifiant de votre application > to the secret store.

Configurez l'authentification Facebook

Maintenant que l'identifiant de l'application et la clé secrète sont enregistrés de manière sécurisée, vous devez configurer l'utilisation du service d'authentification Facebook. Faites-le dans la méthode ConfigureServices du fichier Startup.cs :

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

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

Vous remarquerez que les chaînes de configuration AppID et AppSecret doivent être parfaitement identiques à celles utilisées lorsque vous avez enregistré les valeurs dans le Secret Manager. Si tel n'est pas le cas, les valeurs ne seront pas récupérées.

Vous devriez maintenant pouvoir exécuter votre application. Cliquez sur Log In (Connexion). Une option permettant de vous identifier avec Facebook s'affiche en haut à droite de la page.

En résumé 

Dans ce chapitre, nous avons appris que .NET Core simplifie l'authentification à l'aide de comptes externes et que le processus est très semblable pour tous les outils d'authentification tiers. Il suit généralement 3 étapes :

  1. Créer une application dans l'espace de développement du fournisseur d'identification tiers.

  2. Utiliser le Secret Manager pour stocker les tokens affectés par les fournisseurs d'identification.

  3. Configurer le fournisseur pour votre application.

Nous avons également vu en détail comment créer une application Facebook depuis votre compte de développeur Facebook pour utiliser l'authentification via un compte Facebook dans une application MVC. Vous êtes maintenant prêt à ajouter d'autres options d'authentification à votre application, comme Twitter, LinkedIn, Github, Google et Microsoft.

Dans le chapitre suivant, vous allez découvrir comment contrôler l'accès aux pages et aux données d'une application en utilisant des méthodes de sécurité basées sur des rôles et des stratégies.

Exemple de certificat de réussite
Exemple de certificat de réussite