Démarrage rapide : connectez les utilisateurs et appelez l'API Microsoft Graph à partir d'une application Web ASP.NET

Dans ce démarrage rapide, vous allez télécharger et exécuter un exemple de code qui montre comment une application web ASP.NET peut connecter des utilisateurs avec des comptes Microsoft Entra.

Consultez Fonctionnement de l’exemple pour obtenir une illustration.

Prérequis

Inscrire et télécharger l’application

Conseil

Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.

Vous avez deux options pour commencer à créer votre application : configuration automatique ou configuration manuelle.

Configuration automatique

Si vous souhaitez configurer automatiquement votre application, puis télécharger l’exemple de code, procédez comme suit :

  1. Connectez-vous à l’expérience de démarrage rapide du centre d’administration de Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.
  2. Entrez un nom pour votre application, puis sélectionnez Inscrire.
  3. Suivez les instructions pour télécharger et configurer automatiquement votre nouvelle application en un seul clic.

Configuration manuelle

Si vous souhaitez configurer manuellement votre application et votre exemple de code, utilisez les procédures suivantes.

Étape 1 : Inscrivez votre application

  1. Connectez-vous au Centre d’administration de Microsoft Entra au minimum en tant qu’Administrateur d’application cloud.
  2. Si vous avez accès à plusieurs tenants, utilisez l’icône Paramètres dans le menu supérieur pour basculer vers le tenant dans lequel vous voulez inscrire l’application à partir du menu Répertoires + abonnements.
  3. Accédez à Identité>Applications>Inscriptions d’applications, puis sélectionnez Nouvelle inscription.
  4. Pour Nom, entrez un nom pour votre application. Par exemple, entrez ASPNET-Quickstart. Les utilisateurs de votre application verront ce nom, que vous pourrez changer ultérieurement.
  5. Définissez le type d’URI de redirection sur Web, et la valeur sur https://localhost:44368/.
  6. Sélectionnez Inscription.
  7. Sous Gérer, sélectionnez Authentification.
  8. Dans la section Implicit grant and hybrid flows (Flux d’octroi implicite et flux hybride), sélectionnez Jetons d’ID.
  9. Sélectionnez Enregistrer.

Étape 2 : Téléchargez le projet

Télécharger l’exemple de code ASP.NET

Conseil

Pour éviter les erreurs dues à des limitations de longueur de chemin dans Windows, nous vous recommandons d’extraire l’archive ou de cloner le référentiel dans un répertoire près de la racine de votre lecteur.

Étape 3 : Exécuter le projet

  1. Extrayez le fichier .zip dans un dossier local proche du dossier racine. Par exemple, extrayez-le dans C:\Azure-Samples.

    Nous vous recommandons d’extraire l’archive dans un répertoire près de la racine de votre lecteur pour éviter les erreurs dues à des limitations de longueur de chemin sur Windows.

  2. Ouvrez la solution dans Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).

  3. Selon la version de Visual Studio, vous devrez peut-être cliquer avec le bouton droit sur le projet AppModelv2-WebApp-OpenIDConnect-DotNet, puis sélectionner Restaurer les packages NuGet.

  4. Ouvrez la console du Gestionnaire de package en sélectionnant Afficher>Autres fenêtres>Console du Gestionnaire de package. Exécutez ensuite Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r.

  5. Modifiez appsettings.json et remplacez les paramètres ClientId, Tenant et redirectUri par :

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    Dans ce code :

    • Enter_the_Application_Id_here est l’ID d’application (client) de l’inscription d’application que vous avez créée. Recherchez l’ID d’application (client) dans la page Vue d’ensemble de l’application dans Inscriptions d’applications au sein du centre d’administration Microsoft Entra.
    • Enter_the_Tenant_Info_Here est l’une des options suivantes :
      • Si votre application prend en charge Mon organisation uniquement, remplacez cette valeur par l’ID d’annuaire (locataire) ou le nom du locataire (par exemple, contoso.onmicrosoft.com). Recherchez l’ID d’annuaire (locataire) dans la page Vue d’ensemble de l’application dans Inscriptions d’applications au sein du centre d’administration Microsoft Entra.
      • Si votre application prend en charge Comptes dans un annuaire organisationnel, remplacez cette valeur par organizations.
      • Si votre application prend en charge tous les utilisateurs de compte Microsoft, remplacez cette valeur par common.
    • redirectUri est l’URI de redirection que vous avez entré dans Inscriptions d’applications dans le centre d’administration Microsoft Entra.

Plus d’informations

Cette section offre une vue d’ensemble du code requis pour connecter les utilisateurs. Cette vue d’ensemble peut être utile pour comprendre comment le code fonctionne, quels sont les principaux arguments et comment ajouter une connexion à une application ASP.NET existante.

Fonctionnement de l’exemple

Diagramme de l’interaction entre le navigateur web, l’application web et la plateforme d’identités Microsoft dans l’exemple d’application.

Packages NuGet de l’intergiciel (middleware) OWIN

Vous pouvez configurer le pipeline d’authentification avec une authentification basée sur les cookies en utilisant OpenID Connect dans ASP.NET avec des packages du middleware OWIN. Vous pouvez installer ces packages en exécutant les commandes suivantes dans la console du Gestionnaire de package au sein de Visual Studio :

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

Classe de démarrage OWIN

Le middleware OWIN utilise une classe de démarrage qui s’exécute lors du démarrage du processus d’hébergement. Dans ce guide de démarrage rapide, le fichier startup.cs se trouve dans le dossier racine. Le code suivant montre les paramètres qu’utilise ce guide de démarrage rapide :

    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();

        app.AddMicrosoftIdentityWebApp(factory);
        factory.Services
            .Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
            .AddMicrosoftGraph()
            .AddInMemoryTokenCaches();
        factory.Build();
    }
Where Description
ClientId ID de l’application inscrite dans le portail Azure.
Authority Point de terminaison du service d’émission de jeton de sécurité (STS) pour l’utilisateur à authentifier. Il s’agit généralement de https://login.microsoftonline.com/{tenant}/v2.0 pour le cloud public. Dans cette URL, {tenant} est le nom de votre locataire, votre ID de locataire ou common pour une référence au point de terminaison commun. (Le point de terminaison commun est utilisé pour les applications multilocataires.)
RedirectUri URL vers laquelle les utilisateurs sont dirigés après authentification auprès de la plateforme d’identités Microsoft.
PostLogoutRedirectUri URL vers laquelle les utilisateurs sont envoyés après validation.
Scope Liste des étendues demandées, séparées par des espaces.
ResponseType Demande que la réponse de l’authentification contienne un code d’autorisation et un jeton d’ID.
TokenValidationParameters Liste de paramètres pour la validation du jeton. Dans ce cas, ValidateIssuer a la valeur false pour indiquer qu’il peut accepter des connexions à partir de tout type de compte : personnel, professionnel ou scolaire.
Notifications Liste de délégués qui peuvent être exécutés sur des messages OpenIdConnect.

Demande d’authentification

Vous pouvez forcer un utilisateur à se connecter en effectuant une demande d’authentification dans votre contrôleur :

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Conseil

La demande d’une demande d’authentification avec cette méthode est facultative. Normalement, vous l’utilisez quand vous souhaitez qu’une vue soit accessible par des utilisateurs à la fois authentifiés et non authentifiés. Vous pouvez également protéger les contrôleurs à l’aide de la méthode décrite dans la section suivante.

Attribut pour protéger un contrôleur ou les actions d’un contrôleur

Vous pouvez protéger un contrôleur ou les actions d’un contrôleur en utilisant l’attribut [Authorize]. Cet attribut limite l’accès au contrôleur ou aux actions en autorisant uniquement les utilisateurs authentifiés à accéder aux actions dans le contrôleur. Une demande d’authentification se produit alors automatiquement quand un utilisateur non authentifié tente d’accéder à l’une des actions ou à l’un des contrôleurs décorés par l’attribut [Authorize].

Appeler Microsoft Graph à partir du contrôleur

Vous pouvez appeler Microsoft Graph à partir du contrôleur en obtenant l’instance de GraphServiceClient avec la méthode d’extension GetGraphServiceClient sur le contrôleur, comme dans le code suivant :

    try
    { 
        var me = await this.GetGraphServiceClient().Me.GetAsync();
        ViewBag.Username = me.DisplayName;
    }
    catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
        return View();
    }

Aide et support

Si vous avez besoin d’aide, si vous souhaitez signaler un problème ou si vous voulez en savoir plus sur vos options de support, consultez Aide et support pour les développeurs.

Étapes suivantes

Pour apprendre à créer, étape par étape, des applications et des fonctionnalités, et pour obtenir une explication complète de ce démarrage rapide, essayez le tutoriel ASP.NET.