Partager via


Authentification du fournisseur externe dans ASP.NET Core Identity

Par Valeriy Novytskyy et Rick Anderson

Cet article explique comment créer une application ASP.NET Core qui permet aux utilisateurs de se connecter à l’aide d’OAuth 2.0 avec des informations d’identification provenant de fournisseurs d’authentification externes.

Les fournisseurs Facebook, Twitter, Google et Microsoft sont couverts dans les sections suivantes et utilisent le projet de démarrage créé dans cet article. D’autres fournisseurs sont disponibles dans des packages tiers, comme OpenIddict, AspNet.Security.OAuth.Providers et AspNet.Security.OpenId.Providers.

Permettre aux utilisateurs de se connecter avec leurs informations d’identification existantes est pratique pour les utilisateurs et déplace de nombreuses complexités du processus de connexion sur un tiers.

Créer un projet ASP.NET Core

  • Sélectionnez le modèle Application web ASP.NET Core. Cliquez sur OK.
  • Dans l’entrée Type d’authentification, sélectionnez Comptes individuels.

Appliquer des migrations

  • Exécutez l’application et sélectionnez le lien S’inscrire.
  • Entrez l’adresse e-mail et le mot de passe du nouveau compte, puis sélectionnez S’inscrire.
  • Suivez les instructions pour effectuer des migrations.

Transmettre les informations de la requête avec un proxy ou un équilibreur de charge

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. Ces informations incluent généralement le schéma de demande sécurisé (https), l’hôte et l’adresse IP du client. 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.

Le schéma est utilisé dans la génération de lien qui affecte le processus d’authentification avec des fournisseurs externes. 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.

Utilisez l’intergiciel Forwarded Headers afin de mettre les informations de demande d’origine à la disposition de l’application pour le traitement des demandes.

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

Utiliser secret Manager pour stocker les jetons attribués par les fournisseurs de connexion

Les fournisseurs de connexion de réseaux sociaux affectent des jetons ID d’application et Secret de l’application lors du processus d’inscription. Les noms de jeton exacts varient selon le fournisseur. Ces jetons représentent les informations d’identification que l’application utilise pour accéder à l’API du fournisseur. Les jetons constituent des secrets utilisateur qui peuvent être liés à la configuration de votre application à l’aide de Secret Manager. Les secrets utilisateur sont une alternative plus sûre au stockage des jetons dans un fichier de configuration, comme appsettings.json.

Importante

Secret Manager est uniquement destiné au développement et aux tests locaux. Protégez les secrets de préproduction et de production avec le fournisseur de configuration Azure Key Vault, qui peut également être utilisé pour le développement et les tests locaux si vous préférez ne pas utiliser le Gestionnaire de secrets localement.

Pour obtenir des conseils sur le stockage des jetons attribués par chaque fournisseur de connexion, consultez Stockage sécurisé des secrets d’application dans le développement dans ASP.NET Core.

Configurer des fournisseurs de connexion

Utilisez les articles suivants pour configurer les fournisseurs de connexion et l’application :

Fournisseurs d’authentification multiple

Lorsque l’application nécessite plusieurs fournisseurs, chaînez les méthodes d’extension du fournisseur sur AddAuthentication:

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

Pour obtenir des conseils de configuration détaillés sur chaque fournisseur, consultez leurs articles respectifs.

Si vous le souhaitez, définissez un mot de passe

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. Cela vous dispense de créer et de mémoriser un mot de passe pour le site, mais vous rend également entièrement dépendant du prestataire d'authentification externe pour l'accès au site. Si le fournisseur de connexion externe n’est pas disponible, vous ne pourrez pas vous connecter à l’application.

Pour créer un mot de passe et vous connecter à l’aide de votre e-mail que vous avez défini pendant le processus de connexion avec des fournisseurs externes :

  • Cliquez sur le lien Bonjour <alias d’e-mail> dans le coin supérieur droit pour accéder à la vue Gérer :

Vue de gestion de l’application web

  • Cliquez sur Créer :

Page de définition de votre mot de passe

  • Définissez un mot de passe valide et vous pouvez utiliser ces informations d’identification pour vous connecter avec votre adresse e-mail.

Informations supplémentaires