Appeler une API web ASP.NET Core avec insomnie

Cet article vous montre comment appeler une API web ASP.NET Core protégée à l’aide de insomnie. L’insomnie est une application qui vous permet d’envoyer des requêtes HTTP à une API web pour tester ses stratégies d’autorisation et de contrôle d’accès (authentification). Dans cet article, vous inscrivez une application web et une API web dans un locataire. L’application web sert à obtenir un jeton d’accès généré par le plateforme d'identités Microsoft. Ensuite, vous utilisez le jeton pour effectuer un appel autorisé à l’API web à l’aide d’Insomnie.

Cet article vous montre comment appeler une API web ASP.NET Core protégée à l’aide de insomnie. L’insomnie est une application qui vous permet d’envoyer des requêtes HTTP à une API web pour tester ses stratégies d’autorisation et de contrôle d’accès (authentification). À la suite du Tutoriel Implémenter un point de terminaison protégé pour votre API, où vous avez créé une API protégée, vous devez inscrire une application web auprès de la plateforme d’identités Microsoft pour générer un jeton d’accès. Ensuite, vous utilisez le jeton pour effectuer un appel autorisé à l’API à l’aide d’Insomnie.

Prérequis

  • Compte Azure avec un abonnement actif. Créez un compte gratuitement.
  • Ce compte Azure doit disposer des autorisations nécessaires pour gérer des applications. Les rôles Microsoft Entra suivants incluent les autorisations requises :
    • Administrateur d’application
    • Développeur d’applications
    • Administrateur d’application cloud
  • Téléchargez et installez Insomnie. Vous utilisez Insomnie pour obtenir un jeton d’accès pour vos demandes d’API.
  • Exigence minimale de SDK .NET 8.0.

Inscrire une application

Avec la plateforme d’identités Microsoft, votre application doit d’abord être inscrite avant de pouvoir fournir des services de gestion des identités et des accès. Au moment d’inscrire l’application, vous pouvez spécifier le nom et le type de l’application ainsi que l’audience de connexion. L’audience de connexion spécifie les types de comptes d’utilisateur autorisés à se connecter à une application donnée.

Inscrire l’API web

Conseil

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

Suivez ces étapes pour créer l’inscription de l’API web :

  1. Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.

  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.

  4. Sélectionnez Nouvelle inscription.

  5. Attribuez un Nom à l’application, par exemple NewWebAPI1.

  6. Pour les Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel. Pour plus d’informations sur les différents types de comptes, sélectionnez l’option M’aider à choisir.

  7. Sélectionnez Inscription.

    Capture d’écran montrant comment entrer un nom et sélectionner le type de compte.

  8. Vous pouvez voir le volet Vue d’ensemble de l’application une fois l’inscription terminée. Enregistrez l’ID de l’annuaire (locataire) et l’ID d’application (client) à utiliser dans les étapes suivantes.

    Capture d’écran montrant les valeurs d’identificateur dans la page Vue d’ensemble.

Notes

Il est possible de modifier les Types de comptes pris en charge. Pour cela, reportez-vous à Modifier les comptes pris en charge par une application.

Exposer l’API

Une fois l’API inscrite, vous pouvez configurer son autorisation en définissant les étendues qu’elle expose aux applications clientes. Les applications clientes demandent l’autorisation d’effectuer des opérations en passant un jeton d’accès et les demandes associées à l’API web protégée. L’API web n’effectue ensuite l’opération demandée que si le jeton d’accès qu’elle reçoit est valide.

  1. Sous Gérer, sélectionnez Exposer une API > Ajouter une étendue. Acceptez l’URI d’ID d’application (api://{clientId})proposée en sélectionnant Enregistrer et continuer. {clientId} est la valeur enregistrée depuis la page Vue d’ensemble. Entrez ensuite les informations suivantes :

    1. Pour Nom de l’étendue, entrez Forecast.Read.
    2. Pour Qui peut donner son consentement, vérifiez que l’option Administrateurs et utilisateurs est sélectionnée.
    3. Dans la zone Nom d’affichage du consentement administrateur, entrez Read forecast data.
    4. Dans Description du consentement de l’administrateur, entrez Allows the application to read weather forecast data.
    5. Dans la zone Nom d’affichage du consentement utilisateur, entrez Read forecast data.
    6. Dans la zone Description du consentement de l’utilisateur, entrez Allows the application to read weather forecast data.
    7. Vérifiez que l’État défini est Activé.
  2. Sélectionnez Ajouter une étendue. Si l’étendue a été correctement entrée, elle apparaît dans le volet Exposer une API volet.

    Capture d’écran montrant les valeurs des champs pendant l’ajout de l’étendue à une API.

Inscrire l’application web

Il n’est pas suffisant d’avoir une API web, vous avez également besoin d’une application web pour obtenir un jeton d’accès pour accéder à l’API web.

Effectuez les étapes suivantes pour créer l’inscription d’application web :

  1. Sélectionnez Accueil pour revenir à la page d’accueil. Accédez à Identité>Applications>Inscriptions d’applications.
  2. Sélectionnez Nouvelle inscription.
  3. Entrez un nom pour l'application, tel que web-app-calls-web-api.
  4. Pour les Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel. Pour plus d’informations sur les différents types de comptes, sélectionnez l’option M’aider à choisir.
  5. Sous URI de redirection (facultatif), sélectionnez Web, puis entrez http://localhost dans la zone de texte de l’URL.
  6. Sélectionnez Inscrire.
  1. Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.
  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.
  4. Sélectionnez Nouvelle inscription.
  5. Entrez un nom pour l'application, tel que web-app-calls-web-api.
  6. Pour les Types de comptes pris en charge, sélectionnez Comptes dans cet annuaire organisationnel. Pour plus d’informations sur les différents types de comptes, sélectionnez l’option M’aider à choisir.
  7. Sous URI de redirection (facultatif), sélectionnez Web, puis entrez http://localhost dans la zone de texte de l’URL.
  8. Sélectionnez Inscrire.

Vous pouvez voir le volet Vue d’ensemble de l’application une fois l’inscription terminée. Enregistrez l’ID de l’annuaire (locataire) et l’ID d’application (client) à utiliser dans les étapes suivantes.

Ajouter un secret client

Une clé secrète client est une valeur de chaîne dont se sert votre application pour s’identifier elle-même, qui est parfois appelée mot de passe d’application. L’application web se sert de la clé secrète client pour prouver son identité au moment de demander des jetons.

Suivez ces étapes pour configurer une clé secrète client :

  1. Dans le volet Vue d’ensemble, sous Gérer, sélectionnez Certificats et secrets>Secrets client>Nouveau secret client.

  2. Ajoutez une description pour votre clé secrète client, par exemple Ma clé secrète client.

  3. Sélectionnez un délai d’expiration pour le secret ou spécifiez une durée de vie personnalisée.

    • La durée de vie d’une clé secrète client est limitée à deux ans (24 mois) voire moins. Vous ne pouvez pas spécifier une durée de vie personnalisée supérieure à 24 mois.
    • Microsoft vous recommande de définir une valeur d’expiration inférieure à 12 mois.
  4. Sélectionnez Ajouter.

  5. Veillez à enregistrer la Valeur de la clé secrète client. Cette valeur secrète ne sera plus jamais affichée lorsque vous aurez quitté cette page.

Pour plus d’informations sur la façon de stocker en toute sécurité votre clé secrète client, consultez Meilleures pratiques pour la gestion des secrets dans Key Vault.

Ajouter des autorisations pour accéder à votre API web

En spécifiant les étendues d’une API web, l’application web peut obtenir un jeton d’accès contenant les étendues fournies par la plateforme d’identités Microsoft. À l’intérieur du code, l’API web peut ensuite fournir un accès basé sur les autorisations à ses ressources en fonction des étendues se trouvant dans le jeton d’accès.

Effectuez les étapes ci-dessous pour configurer les autorisations du client pour l’API web :

  1. Dans le volet Présentation de votre application, sous Gérer, sélectionnez Autorisations API>Ajouter une autorisation>API utilisées par mon organisation.
  2. Sélectionnez NewWebAPI1 ou l’API à laquelle vous souhaitez ajouter les autorisations.
  3. Sous Sélectionner des autorisations, cochez la case en regard de Forecast.Read. Vous devrez peut-être développer la liste Autorisation. Les autorisations dont doit disposer l’application cliente pour le compte de l’utilisateur connecté sont alors sélectionnées.
  4. Sélectionnez Ajouter des autorisations pour terminer le processus.

Une fois ces autorisations ajoutées à votre API, les autorisations sélectionnées doivent figurer dans Autorisations configurées.

Il se peut que vous remarquiez aussi la présence de l’autorisation User.Read pour l’API Microsoft Graph. Cette autorisation est automatiquement ajoutée lorsque vous inscrivez une application.

Tester l’API web

Pour vous assurer que votre API est opérationnelle et prête à gérer les requêtes, procédez comme suit :

  1. Clonez le référentiel ms-identity-docs-code-dotnet.

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  2. Accédez à ms-identity-docs-code-dotnet/web-api et ouvrez appsettings.json, remplacez le {APPLICATION_CLIENT_ID} et {DIRECTORY_TENANT_ID} par les valeurs suivantes :

    • {APPLICATION_CLIENT_ID} correspond à l’ID d’application (client) de l’API web dans le volet Vue d’ensemble de l’application.
    • {DIRECTORY_TENANT_ID} correspond à l’ID de répertoire (locataire) de l’API web dans le volet Vue d’ensemble de l’application.
  3. Exécutez la commande suivante pour démarrer l’application :

    dotnet run
    
  4. Une sortie similaire à la suivante apparaît. Enregistrez le numéro de port dans l’URL https://localhost:{port}.

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

Tester l’API web

Pour vous assurer que votre API est opérationnelle et prête à gérer les requêtes, procédez comme suit :

  1. Accédez à l’API web qui a été créée dans Tutoriel : Créer un projet ASP.NET Core et configurer l’API, par exemple NewWebAPILocal, puis ouvrez le dossier.

  2. Ouvrez une nouvelle fenêtre de terminal et accédez au dossier où se trouve le projet de l’API web.

    1. Exécutez la commande suivante pour démarrer l’application :

      dotnet run
      
  3. Une sortie similaire à la suivante apparaît. Enregistrez le numéro de port dans l’URL https://localhost:{port}.

    ...
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: https://localhost:{port}
    ...
    

Configurer une demande autorisée sur l’API web en insomnie

Pour obtenir un jeton d’accès pour vos demandes d’API, procédez comme suit :

  1. Lancez l’application Insomnie.

  2. Sélectionnez nouvelle requête HTTP, ou vous pouvez utiliser Ctrl+ N pour créer une requête HTTP.

  3. Dans le modal Nouvelle requête, sélectionnez une méthode GET dans la liste déroulante.

  4. Pour l’URL de la demande, entrez l’URL du point de terminaison exposé par l’API web, https://localhost:{port}/weatherforecast.

  5. Dans le menu déroulant Auth, sélectionnez OAuth 2.0. Cela affiche le formulaire OAuth 2.0.

  6. Entrez les valeurs suivantes dans le formulaire OAuth 2.0 :

    Paramètre Valeur
    TYPE DE SUBVENTION Sélectionner Code d’autorisation
    URL D'AUTORISATION https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
    Remplacer {tenantId} par l'ID d'annuaire (locataire)
    URL DU JETON D'ACCÈS https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    Remplacez {tenantId} par l’ID d’annuaire (locataire).
    ID CLIENT Valeur d’ID d’application (client) de l’inscription d’application web.
    CLÉ SECRÈTE CLIENT Valeur de clé secrète client de l’inscription d’application web.
    URL DE REDIRECTION Entrez http://localhost, qui définit l'URL de REDIRECT sur l'URI de redirection enregistré avec Microsoft Entra ID.
    Options avancées>PORTÉ api://{application_client_id}/Forecast.Read
    Accédez à l’inscription de votre application web, sous Gérer, sélectionnez Autorisations des API, puis Forecast.Read.
    Copiez la valeur dans la zone de texte, qui contient la valeur d’étendue.

Obtenir un jeton d’accès et envoyer une requête à l’API web

  1. Une fois ces valeurs saisies, sélectionnez Récupérer les jetons à la fin du formulaire. Cela lance une fenêtre de navigateur Insomnia dans laquelle vous vous authentifiez avec vos informations d'identification utilisateur. Veillez à autoriser les fenêtres contextuelles à partir de l’application Insomnie dans le navigateur.
  2. Après l’authentification, sélectionnez Envoyer pour envoyer la requête au point de terminaison de l’API web protégée.

Avec un jeton d’accès valide inclus dans la demande, la réponse attendue est 200 OK avec une sortie similaire à la sortie suivante :

[
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": -16,
    "summary": "Scorching",
    "temperatureF": 4
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 1,
    "summary": "Sweltering",
    "temperatureF": 33
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 26,
    "summary": "Freezing",
    "temperatureF": 78
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 54,
    "summary": "Mild",
    "temperatureF": 129
  },
  {
    "date": "YYYY-MM-DDTHH:MM:SS",
    "temperatureC": 11,
    "summary": "Bracing",
    "temperatureF": 51
  }
]

Pour plus d’informations sur le flux de code d’autorisation OAuth 2.0 et les types d’applications, consultez :