Partager via


Configuration de connexion externe du compte Microsoft avec ASP.NET Core

Par Valeriy Novytskyy et Rick Anderson

Cet exemple montre comment permettre aux utilisateurs de se connecter avec leur compte Microsoft professionnel, scolaire ou personnel à l’aide du projet ASP.NET Core créé sur la page précédente.

Créer l’application dans le Centre d’administration Microsoft Entra

Créer une clé secrète client

Générez une clé secrète client dans le Centre d’administration Microsoft Entra en suivant les étapes de l’inscription d’une application auprès de la plateforme d’identités Microsoft : Ajouter des informations d’identification.

Stocker l’ID client et le secret Microsoft

Stockez les paramètres sensibles tels que l’ID d’application Microsoft (client) et le secret client créés à l’étape précédente avec secret Manager. Pour cet exemple, procédez comme suit :

  1. Initialisez le projet pour le stockage secret conformément aux instructions de Activer le stockage secret.

  2. Stockez les paramètres sensibles dans le magasin de secrets local avec les clés secrètes Authentication:Microsoft:ClientId et Authentication:Microsoft:ClientSecret. Le <client-id> est répertorié sur le volet d'inscription des applications Azure sous l’ID de l’application (client). Le <client-secret> figure dans la liste des secrets de certificats& en tant que valeur, et non en tant qu’ID du secret.

    dotnet user-secrets set "Authentication:Microsoft:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Microsoft:ClientSecret" "<client-secret>"
    

Le séparateur : ne fonctionne pas avec les clés hiérarchiques des variables d’environnement sur toutes les plateformes. Par exemple, le séparateur : n’est pas pris en charge par Bash. Le double trait de soulignement __ est :

  • Pris en charge par toutes les plateformes.
  • Remplacé automatiquement par deux points, :.

Configurer l’authentification de compte Microsoft

Ajoutez le service d’authentification au Program:

builder.Services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
    microsoftOptions.ClientId = configuration["Authentication:Microsoft:ClientId"];
    microsoftOptions.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
});

La surcharge AddAuthentication(IServiceCollection, String) définit la propriété DefaultScheme. La surcharge AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) permet de configurer des options d’authentification, qui peuvent être utilisées pour configurer des schémas d’authentification par défaut à des fins différentes. Les appels suivants à AddAuthentication remplacent les propriétés AuthenticationOptions précédemment configurées.

AuthenticationBuilder méthodes d’extension qui inscrivent un gestionnaire d’authentification ne peuvent être appelées qu’une seule fois par schéma d’authentification. Il existe des surcharges qui permettent de configurer les propriétés du schéma, le nom du schéma et le nom d’affichage.

Pour plus d’informations sur les options de configuration prises en charge par l’authentification par compte Microsoft, consultez la référence de l’API MicrosoftAccountOptions . Cela peut être utilisé pour demander différentes informations sur l’utilisateur.

Se connecter avec un compte Microsoft

  • Exécutez l’application et sélectionnez Se connecter. Une option permettant de se connecter avec Microsoft s’affiche.
  • Sélectionnez cette option pour vous connecter avec Microsoft pour accéder à Microsoft pour l’authentification. Une fois connecté avec votre compte Microsoft, vous êtes invité à autoriser l’application à accéder à vos informations :
  • Sélectionnez Oui pour revenir au site web où définir votre e-mail.

Vous êtes maintenant connecté à l’aide de vos informations d’identification Microsoft.

Pour utiliser plusieurs fournisseurs d’authentification, consultez Utilisation de fournisseurs de connexion externes avec Identity ASP.NET Core.

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.

Résolution des problèmes

  • Si le fournisseur de compte Microsoft redirige vers une page d’erreur de connexion, notez le titre de l’erreur et les paramètres de chaîne de requête de description directement après le # (hashtag) dans l’URI.

    Bien que le message d’erreur semble indiquer un problème avec l’authentification Microsoft, la cause la plus courante est que votre URI d’application ne correspond à aucun des URI de redirection spécifiés pour la plateforme Web .

  • Si Identity n’est pas configuré dans services.AddIdentity en appelant ConfigureServices, la tentative d’authentification entraînera l’exception ArgumentException : l’option « SignInScheme » doit être fournie. Le modèle de projet utilisé dans cet exemple garantit que cela est effectué.

  • Si la base de données de site n’a pas été créée en appliquant la migration initiale, une opération de base de données a échoué lors du traitement de l’erreur de demande se produit. Appuyez sur Appliquer les migrations pour créer la base de données, puis actualisez pour passer outre l'erreur.

Étapes suivantes

  • Cet article a montré comment s’authentifier auprès de Microsoft. Suivez une approche similaire pour vous authentifier auprès d’autres fournisseurs répertoriés sur la page précédente.
  • Une fois le site web publié dans l’application web Azure, créez un nouveau secret client dans le Centre d’administration Microsoft Entra.
  • Définissez Authentication:Microsoft:ClientId et Authentication:Microsoft:ClientSecret en tant que paramètres d'application dans le Centre d'administration Microsoft Entra. Le système de configuration est configuré pour lire des clés à partir de variables d’environnement.

Cet exemple vous montre comment permettre aux utilisateurs de se connecter avec leur compte Microsoft professionnel, scolaire ou personnel à l’aide du projet ASP.NET Core 3.0 créé sur la page précédente.

Créer l’application dans le Centre d’administration Microsoft Entra

Créer un secret client

Générez une clé secrète client dans le Centre d’administration Microsoft Entra en suivant les étapes de l’inscription d’une application auprès de la plateforme d’identités Microsoft : Ajouter des informations d’identification.

Stocker l’ID client et le secret Microsoft

Stockez les paramètres sensibles tels que l’ID d’application Microsoft (client) et le secret client que vous avez créés à l’étape précédente avec Secret Manager. Pour cet exemple, procédez comme suit :

  1. Initialisez le projet pour le stockage secret conformément aux instructions de Activer le stockage secret.

  2. Stockez les paramètres sensibles dans le magasin de secrets local avec les clés secrètes Authentication:Microsoft:ClientId et Authentication:Microsoft:ClientSecret:

    dotnet user-secrets set "Authentication:Microsoft:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Microsoft:ClientSecret" "<client-secret>"
    

Le séparateur : ne fonctionne pas avec les clés hiérarchiques des variables d’environnement sur toutes les plateformes. Par exemple, le séparateur : n’est pas pris en charge par Bash. Le double trait de soulignement __ est :

  • Pris en charge par toutes les plateformes.
  • Remplacé automatiquement par deux points, :.

Configurer l’authentification de compte Microsoft

Ajoutez le service de compte Microsoft au Startup.ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
        .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddRazorPages();

    services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
    {
        microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
        microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
    });
}

La surcharge AddAuthentication(IServiceCollection, String) définit la propriété DefaultScheme. La surcharge AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) permet de configurer des options d’authentification, qui peuvent être utilisées pour configurer des schémas d’authentification par défaut à des fins différentes. Les appels suivants à AddAuthentication remplacent les propriétés AuthenticationOptions précédemment configurées.

AuthenticationBuilder méthodes d’extension qui inscrivent un gestionnaire d’authentification ne peuvent être appelées qu’une seule fois par schéma d’authentification. Il existe des surcharges qui permettent de configurer les propriétés du schéma, le nom du schéma et le nom d’affichage.

Pour plus d’informations sur les options de configuration prises en charge par l’authentification par compte Microsoft, consultez la référence de l’API MicrosoftAccountOptions . Cela peut être utilisé pour demander différentes informations sur l’utilisateur.

Se connecter avec un compte Microsoft

Exécutez l’application et sélectionnez Se connecter. Une option permettant de se connecter avec Microsoft s’affiche. Sélectionnez Microsoft pour accéder à Microsoft pour l’authentification. Une fois connecté avec votre compte Microsoft, vous êtes invité à autoriser l’application à accéder à vos informations :

Appuyez sur Oui et vous êtes redirigé vers le site web où vous pouvez définir votre e-mail.

Vous êtes maintenant connecté à l’aide de vos informations d’identification Microsoft.

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.

Résolution des problèmes

  • Si le fournisseur de compte Microsoft vous redirige vers une page d’erreur de connexion, notez le titre de l’erreur et les paramètres de chaîne de requête de description directement après le # (hashtag) dans l’URI.

    Bien que le message d’erreur semble indiquer un problème avec l’authentification Microsoft, la cause la plus courante est que votre URI d’application ne correspond à aucun des URI de redirection spécifiés pour la plateforme Web .

  • Si Identity n’est pas configuré dans services.AddIdentity en appelant ConfigureServices, la tentative d’authentification entraînera l’exception ArgumentException : l’option « SignInScheme » doit être fournie. Le modèle de projet utilisé dans cet exemple garantit que cela est effectué.

  • Si la base de données de site n’a pas été créée en appliquant la migration initiale, vous obtiendrez une opération de base de données ayant échoué lors du traitement de l’erreur de requête . Appuyez sur Appliquer les migrations pour créer la base de données, puis actualisez pour passer outre l'erreur.

Étapes suivantes

  • Cet article a montré comment vous pouvez vous authentifier auprès de Microsoft. Vous pouvez suivre une approche similaire pour vous authentifier auprès d’autres fournisseurs répertoriés sur la page précédente.
  • Une fois que vous avez publié votre site web sur l’application web Azure, créez un nouveau secret client dans le Centre d’administration Microsoft Entra.
  • Définissez Authentication:Microsoft:ClientId et Authentication:Microsoft:ClientSecret en tant que paramètres d’application dans le Centre d’administration Microsoft Entra. Le système de configuration est configuré pour lire des clés à partir de variables d’environnement.

Ressources supplémentaires

Plusieurs fournisseurs d’authentification