Démarrage rapide : déployer une application API RESTful sur Azure Spring Apps

Remarque

Les 50 premières heures de processeur virtuel et 100 Go de mémoire sont gratuites chaque mois. Pour plus d’informations, consultez Price Reduction - Azure Spring Apps does more, costs less! sur le blog Apps on Azure.

Notes

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article décrit comment déployer une application API RESTful protégée par Microsoft Entra ID sur Azure Spring Apps. L’exemple de projet est une version simplifiée basée sur l’application web Simple Todo, qui fournit uniquement le service backend et utilise Microsoft Entra ID pour protéger les API RESTful.

Ces API RESTful sont protégées grâce à l’application du contrôle d’accès en fonction du rôle (RBAC). Les utilisateurs anonymes ne peuvent pas accéder à des données et ne sont pas autorisés à contrôler l’accès pour différents utilisateurs. Les utilisateurs anonymes disposent uniquement des trois autorisations suivantes :

  • Lecture : avec cette autorisation, un utilisateur peut lire les données ToDo.
  • Écriture : avec cette autorisation, un utilisateur peut ajouter ou mettre à jour les données ToDo.
  • Suppression : avec cette autorisation, un utilisateur peut supprimer les données ToDo.

Une fois le déploiement réussi, vous pouvez afficher et tester les API via l’interface utilisateur Swagger.

Screenshot of the Swagger UI that shows the API document.

Le diagramme suivant présente l’architecture du système :

Diagram that shows the architecture of a Spring web application.

Cet article décrit les options suivantes pour créer des ressources et les déployer sur Azure Spring Apps :

  • L’option Portail Azure + plug-in Maven fournit un moyen plus conventionnel de créer des ressources et de déployer des applications pas à pas. Cette option convient aux développeurs Spring qui utilisent les services cloud Azure pour la première fois.
  • L’option Azure Developer CLI est un moyen plus efficace de créer automatiquement des ressources et de déployer des applications par le biais de commandes simples. Azure Developer CLI utilise un modèle pour provisionner les ressources Azure nécessaires et déployer le code de l’application. Cette option convient aux développeurs Spring qui sont familiarisés avec les services cloud Azure.

Cet article décrit les options suivantes pour créer des ressources et les déployer sur Azure Spring Apps :

  • L’option Portail Azure + plug-in Maven fournit un moyen plus conventionnel de créer des ressources et de déployer des applications pas à pas. Cette option convient aux développeurs Spring qui utilisent les services cloud Azure pour la première fois.
  • L'option Azure CLI utilise un puissant outil de ligne de commande pour gérer les ressources Azure. Cette option convient aux développeurs Spring qui sont familiarisés avec les services cloud Azure.

1. Prérequis

2. Préparer le projet Spring

Pour déployer l’application API RESTful, la première étape consiste à préparer le projet Spring afin de l’exécuter localement.

Procédez comme suit pour cloner et exécuter l’application localement :

  1. Utilisez la commande suivante pour cloner l’exemple de projet à partir de GitHub :

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Si vous souhaitez exécuter l’application localement, commencez par suivre les étapes décrites dans les sections Exposer les API RESTful et Mettre à jour la configuration de l’application, puis utilisez la commande suivante pour exécuter l’exemple d’application avec Maven :

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Préparer l’environnement cloud

Pour exécuter cet exemple d’application, les principales ressources requises sont une instance Azure Spring Apps et une instance Azure Database pour PostgreSQL. Dans les sections suivantes, découvrez comment créer ces ressources.

3.1. Connectez-vous au portail Azure.

Accédez au Portail Microsoft Azure et entrez vos informations d’identification pour vous connecter au portail. Il s’ouvre par défaut sur le tableau de bord des services.

3.2. Créer une instance Azure Spring Apps

Utilisez les étapes suivante pour créer une instance de service Azure Spring Apps :

  1. Sélectionnez Créer une ressource dans le coin du portail Azure.

  2. Sélectionnez Calcul>Azure Spring Apps.

  3. Remplissez le formulaire Informations de base avec les informations suivantes :

    Paramètre Valeur suggérée Description
    Abonnement Nom de votre abonnement. Abonnement Azure que vous souhaitez utiliser pour votre serveur. Si vous disposez de plusieurs abonnements, choisissez celui dans lequel vous souhaitez que la ressource soit facturée.
    Groupe de ressources myresourcegroup Un nouveau nom de groupe de ressources ou un nom de groupe existant dans votre abonnement.
    Nom myasa Nom unique qui identifie votre instance Azure Spring Apps. Le nom doit comporter entre 4 et 32 caractères, et contenir uniquement des lettres minuscules, des chiffres et des traits d’union. Le premier caractère du nom du service doit être une lettre, et le dernier doit être une lettre ou un chiffre.
    Planifier Entreprise Plan tarifaire qui détermine la ressource et le coût associés à votre instance.
    Région La région la plus proche de vos utilisateurs. L’emplacement géographique le plus proche de vos utilisateurs.
    Redondant interzone Désactivé Option permettant de créer votre service Azure Spring Apps dans une zone de disponibilité Azure. Cette fonctionnalité n’est actuellement pas prise en charge dans toutes les régions.
    Plan IP logiciel Paiement à l’utilisation Plan tarifaire qui vous permet de payer au fur et à mesure à l’aide d’Azure Spring Apps.
    Terms Volumes sélectionnés Case à cocher du contrat associée à l’offre de la Place de marché. Vous devez cocher cette case.
    Déployer l’exemple de projet Désactivé Option permettant d’utiliser l’exemple d’application intégré.
  4. Sélectionnez Vérifier et créer pour passer en revue vos sélections. Ensuite, sélectionnez Créer pour approvisionner l’instance Azure Spring Apps.

  5. Dans la barre d’outils, sélectionnez l’icône Notifications (en forme de cloche) pour surveiller le processus de déploiement. Une fois le déploiement terminé, vous pouvez sélectionner Épingler au tableau de bord, ce qui crée une vignette pour ce service dans votre tableau de bord du Portail Microsoft Azure, en tant que raccourci vers la page Vue d’ensemble du service.

    Screenshot of the Azure portal that shows the Notifications pane for Azure Spring Apps creation.

  6. Sélectionnez Accéder à la ressource pour accéder à la page Vue d’ensemble d’Azure Spring Apps.

3.3. Préparer l’instance PostgreSQL

Suivez la procédure ci-dessous pour créer un serveur Azure Database pour PostgreSQL :

  1. Accédez au Portail Azure et sélectionnez Créer une ressource.

  2. Sélectionnez Bases de données>Azure Database pour PostgreSQL.

  3. Sélectionnez l’option de déploiement Serveur flexible.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Renseignez l’onglet Informations de base avec les informations suivantes :

    • Nom du serveur : my-demo-pgsql
    • Région : USA Est
    • Version PostgreSQL : 14
    • Type de charge de travail : Développement
    • Activer la haute disponibilité : désélectionné
    • Méthode d’authentification : Authentification PostgreSQL uniquement
    • Nom d’utilisateur administrateur : myadmin
    • Mot de passe et Confirmer le mot de passe : entrez un mot de passe.
  5. Utilisez les informations suivantes pour configurer l’onglet Mise en réseau :

    • Méthode de connectivité : Accès public (adresses IP autorisées)
    • Autoriser l’accès public à partir d’un service Azure dans Azure sur ce serveur : sélectionné
  6. Sélectionnez Examiner et créer pour passer en revue vos sélections, puis sélectionnez Créer pour approvisionner le serveur. Cette opération peut prendre quelques minutes.

  7. Accédez à votre serveur PostgreSQL dans le portail Azure. Dans la page Vue d’ensemble, recherchez la valeur Nom du serveur, puis enregistrez-la pour une utilisation ultérieure. Vous devez configurer les variables d’environnement de l’application dans Azure Spring Apps.

  8. Sélectionnez Bases de données dans le menu de navigation pour créer une base de données, par exemple ; todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Connecter une instance d’application à une instance PostgreSQL

Suivez la procédure ci-dessous pour connecter vos instances de service :

  1. Accédez à votre instance Azure Spring Apps dans le portail Azure.

  2. Dans le menu de navigation, ouvrez Applications, puis sélectionnez Créer une application.

  3. Dans la page Créer une application, renseignez le nom de l’application simple-todo-api, puis sélectionnez Artefacts Java comme type de déploiement.

  4. Sélectionnez Créer pour terminer la création de l’application, puis sélectionnez l’application pour en afficher les détails.

  5. Accédez à l’application que vous avez créée dans le Portail Azure. Dans la page Vue d’ensemble, sélectionnez Attribuer un point de terminaison pour exposer le point de terminaison public pour l’application. Enregistrez l’URL pour accéder à l’application après le déploiement.

  6. Sélectionnez Connecteur de service dans le volet de navigation, puis sélectionnez Créer pour créer une nouvelle connexion de service.

    Screenshot of the Azure portal that shows the enterprise plan Service Connector page with the Create button highlighted.

  7. Renseignez l’onglet Informations de base avec les informations suivantes :

    • Type de service : Serveur flexible DB pour PostgreSQL
    • Nom de connexion : un nom généré automatiquement est rempli et peut également être modifié.
    • Abonnement : sélectionnez votre abonnement.
    • Serveur flexible PostgreSQL : my-demo-pgsql
    • Base de données PostgreSQL : sélectionnez la base de données que vous avez créée.
    • Type de client : SpringBoot

    Screenshot of the Azure portal that shows the Basics tab of the Create connection pane for connecting to Service Bus.

  8. Configurez l’onglet Suivant : Authentification avec les informations suivantes :

    • Sélectionnez le type d’authentification que vous souhaitez utiliser entre votre service de calcul et le service cible. : sélectionnez Chaîne de connexion.
    • Continuer avec... : sélectionnez Informations d’identification de la base de données
    • Nom d’utilisateur : myadmin
    • Mot de passe : entrez votre mot de passe.

    Screenshot of the Azure portal that shows the Authentication tab of the Create connection pane with the Connection string option highlighted.

  9. Sélectionnez Suivant : Réseau. Utilisez l’option par défaut Configurer des règles de pare-feu pour activer l’accès au service cible.

  10. Sélectionnez Vérifier + créer pour passer en revue vos sélections, puis sélectionnez Créer pour créer la connexion.

3.5. Exposer les API RESTful

Pour exposer vos API RESTful dans Microsoft Entra ID, procédez comme suit :

  1. Connectez-vous au portail Azure.

  2. Si vous avez accès à plusieurs locataires, utilisez le filtre Répertoire + abonnement () pour sélectionner le locataire dans lequel vous voulez inscrire une application.

  3. Recherchez et sélectionnez Microsoft Entra ID.

  4. Sous Gérer, sélectionnez Inscriptions d’applications>Nouvelle inscription.

  5. Entrez un nom pour votre application dans le champ Nom, par exemple, Todo. Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement.

  6. Pour Types de comptes pris en charge, sélectionnez Comptes de tout répertoire d’organisation (tout répertoire Microsoft Entra : multilocataire) et comptes Microsoft personnels.

  7. Sélectionnez Inscrire pour créer l’application.

  8. Dans la page Vue d’ensemble de l’application, recherchez la valeur ID d’application (client) , puis notez-la pour une utilisation ultérieure. Vous en avez besoin pour configurer le fichier de configuration YAML pour ce projet.

  9. Sous Gérer, sélectionnez Exposer une API, trouvez l’URI de l’ID d’application au début de la page, puis sélectionnez Ajouter.

  10. Dans la page Modifier l’URI de l’ID d’application, acceptez l’URI proposé de l’ID d’application (api://{client ID}) ou utilisez un nom utile au lieu de l’ID client, comme api://simple-todo, puis sélectionnez Enregistrer.

  11. Sous Gérer, sélectionnez Exposer une API>Ajouter une étendue, puis entrez les informations suivantes :

    • Pour Nom de l’étendue, entrez ToDo.Read.
    • Pour Qui peut donner son consentement ?, sélectionnez Administrateurs et utilisateurs.
    • Pour Nom d’affichage du consentement administrateur, entrez Lire les données ToDo.
    • Pour Description du consentement administrateur, entrez Autoriser les utilisateurs authentifiés à lire les données ToDo.
    • Pour État, maintenez l’état Activé.
    • Sélectionnez Ajouter une étendue.
  12. Répétez les étapes précédentes pour ajouter les deux autres étendus : ToDo.Write et ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Mettre à jour la configuration de l’application

Procédez comme suit pour mettre à jour le fichier YAML afin d’utiliser les informations de votre application inscrite Microsoft Entra pour établir une relation avec l’application API RESTful :

  1. Recherchez le fichier src/main/resources/application.yml pour l’application simple-todo-api. Mettez à jour la configuration dans la section spring.cloud.azure.active-directory pour qu’elle corresponde à l’exemple suivant. Veillez à remplacer les espaces réservés par les valeurs que vous avez créées précédemment.

    spring:
      cloud:
        azure:
          active-directory:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Remarque

    Dans les jetons v1.0, la configuration nécessite l’ID client de l’API, tandis que dans les jetons v2.0, vous pouvez utiliser l’ID client ou l’URI d’ID d’application dans la requête. Vous pouvez configurer les deux types de jetons pour effectuer correctement la validation de l’audience.

    Les valeurs autorisées pour tenant-id sont : common, organizations, consumersou l’ID de locataire. Pour plus d’informations sur ces valeurs, consultez la section Utilisation d’un point de terminaison incorrect (comptes personnels et d’organisation) de l’article Erreur AADSTS50020 : Le compte d’utilisateur du fournisseur d’identité n’existe pas dans le locataire. Pour plus d’informations sur la conversion de votre application monolocataire, consultez Convertir une application monolocataire en application multilocataire sur Microsoft Entra ID.

  2. Utilisez la commande suivante pour régénérer l’échantillon de projet :

    ./mvnw clean package
    

4. Déployer l’application sur Azure Spring Apps

Vous pouvez maintenant déployer l’application sur Azure Spring Apps.

Utilisez la procédure suivante pour le déploiement en utilisant le plug-in Maven pour Azure Spring Apps :

  1. Accédez au répertoire complete, puis exécutez la commande suivante pour configurer l’application dans Azure Spring Apps :

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
    

    La liste suivante décrit les interactions de commande :

    • Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.
    • Sélectionnez un abonnement : sélectionnez le numéro de liste d’abonnements de l’instance Azure Spring Apps créée, qui correspond par défaut au premier abonnement de la liste. Si vous utilisez le nombre par défaut, appuyez directement sur Entrée.
    • Utiliser Azure Spring Apps dans Azure : appuyez sur y (oui) pour utiliser l’instance Azure Spring Apps existante.
    • Sélectionner Azure Spring Apps pour le déploiement : sélectionnez le numéro de l’instance Azure Spring Apps que vous avez créée. Si vous utilisez le nombre par défaut, appuyez directement sur Entrée.
    • Utiliser l’application existante dans Azure Spring Apps <your-instance-name> : appuyez sur y (oui) pour utiliser l’application créée.
    • Confirmez pour enregistrer toutes les configurations ci-dessus : appuyez sur y (oui). Si vous entrez N, la configuration n’est pas enregistrée dans les fichiers POM.
  2. Utilisez la commande suivante pour déployer l’application :

    ./mvnw azure-spring-apps:deploy
    

    La liste suivante décrit l’interaction de commande :

    • Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.

    Une fois la commande exécutée, les messages de journal suivants indiquent que le déploiement a réussi :

[INFO] Deployment Status: Running
[INFO]   InstanceName:simple-todo-api-default-15-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:N/A       
[INFO] Getting public url of app(simple-todo-api)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-api.azuremicroservices.io

5. Valider l’application

Vous pouvez désormais accéder à l’API RESTful pour voir si cela fonctionne.

5.1. Demander un jeton d’accès

Les API RESTful agissent en tant que serveur de ressources, qui est protégé par Microsoft Entra ID. Avant d’acquérir un jeton d’accès, vous devez inscrire une autre application dans Microsoft Entra ID et accorder des autorisations à l’application cliente, nommée ToDoWeb.

Inscrire l’application cliente

Procédez comme suit pour inscrire une application dans Microsoft Entra ID, qui est utilisé pour ajouter les autorisations pour l’application ToDo :

  1. Connectez-vous au portail Azure.

  2. Si vous avez accès à plusieurs locataires, utilisez le filtre Répertoire + abonnement () pour sélectionner le locataire dans lequel vous voulez inscrire une application.

  3. Recherchez et sélectionnez Microsoft Entra ID.

  4. Sous Gérer, sélectionnez Inscriptions d’applications>Nouvelle inscription.

  5. Entrez un nom pour votre application dans le champ Nom, par exemple, ToDoWeb. Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement.

  6. Pour Types de comptes pris en charge, utilisez la valeur par défaut Comptes dans ce répertoire d’organisation uniquement.

  7. Sélectionnez Inscrire pour créer l’application.

  8. Dans la page Vue d’ensemble de l’application, recherchez la valeur ID d’application (client) , puis notez-la pour une utilisation ultérieure. Vous en avez besoin pour obtenir un jeton d'accès.

  9. Sélectionnez Autorisations des API>Ajouter une autorisation>Mes API. Sélectionnez l’application ToDo que vous avez inscrite précédemment, puis sélectionnez les autorisations ToDo.Read, ToDo.Write et ToDo.Delete. Sélectionnez Ajouter des autorisations.

  10. Sélectionnez Accorder le consentement de l’administrateur pour <votre-nom-de-locataire> afin d’accorder le consentement administrateur aux autorisations que vous avez ajoutées.

    Screenshot of the Azure portal that shows the API permissions of a web application.

Ajouter un utilisateur pour accéder aux API RESTful

Procédez comme suit pour créer un utilisateur membre dans votre locataire Microsoft Entra. Ensuite, l’utilisateur peut gérer les données de l’application ToDo via des API RESTful.

  1. Sous Gérer, sélectionnez Utilisateurs>Nouvel utilisateur>Créer un utilisateur.

  2. Dans la page Créer un utilisateur, indiquez les informations suivantes :

    • Nom d’utilisateur principal : entrez un nom pour l’utilisateur.
    • Nom d’affichage : entrez un nom d’affichage pour l’utilisateur.
    • Mot de passe : copiez le mot de passe généré automatiquement fourni dans le champ Mot de passe.

    Remarque

    Les nouveaux utilisateurs doivent effectuer la première authentification de connexion et mettre à jour leurs mots de passe, sinon une erreur AADSTS50055: The password is expired s’affiche lorsqu’ils obtiennent le jeton d’accès.

    Lorsqu’un nouvel utilisateur se connecte, il reçoit une invite Action requise. Il peut choisir Demander ultérieurement pour ignorer la validation.

  3. Sélectionnez Vérifier + créer pour passer en revue vos sélections. Sélectionnez Créer pour créer l’utilisateur.

Mettre à jour la configuration OAuth2 pour l’autorisation de l’interface utilisateur Swagger

Procédez comme suit pour mettre à jour la configuration OAuth2 pour l’autorisation de l’interface utilisateur Swagger. Vous pouvez ensuite autoriser les utilisateurs à acquérir des jetons d’accès via l’application ToDoWeb.

  1. Ouvrez votre locataire Microsoft Entra ID dans le Portail Azure et accédez à l’application inscrite ToDoWeb.

  2. Sous Gérer, sélectionnez Authentification, Ajouter une plateforme, puis Application monopage.

  3. Utilisez le format <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html comme URL de redirection OAuth2 dans le champ URI de redirection, puis sélectionnez Configurer.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

2. Préparer le projet Spring

Pour déployer l’application API RESTful, la première étape consiste à préparer le projet Spring afin de l’exécuter localement.

Procédez comme suit pour cloner et exécuter l’application localement :

  1. Utilisez la commande suivante pour cloner l’exemple de projet à partir de GitHub :

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Si vous souhaitez exécuter l’application localement, commencez par suivre les étapes décrites dans les sections Exposer les API RESTful et Mettre à jour la configuration de l’application, puis utilisez la commande suivante pour exécuter l’exemple d’application avec Maven :

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Préparer l’environnement cloud

Pour exécuter cet exemple d’application, les principales ressources requises sont une instance Azure Spring Apps et une instance Azure Database pour PostgreSQL. Dans les sections suivantes, découvrez comment créer ces ressources.

3.1. Connectez-vous au portail Azure.

Accédez au Portail Microsoft Azure et entrez vos informations d’identification pour vous connecter au portail. Il s’ouvre par défaut sur le tableau de bord des services.

3.2. Créer une instance Azure Spring Apps

Utilisez la procédure suivante pour créer une instance de service :

  1. Sélectionnez Créer une ressource dans le coin du portail.

  2. Sélectionnez Calcul>Azure Spring Apps.

  3. Remplissez le formulaire Informations de base. Utilisez le tableau suivant comme guide afin de remplir le formulaire. La valeur de Plan recommandée est la Consommation standard et dédiée (préversion).

    Paramètre Valeur suggérée Description
    Abonnement Nom de votre abonnement. Abonnement Azure que vous souhaitez utiliser pour votre serveur. Si vous disposez de plusieurs abonnements, choisissez celui dans lequel vous souhaitez que la ressource soit facturée.
    Groupe de ressources myresourcegroup Un nouveau nom de groupe de ressources ou un nom de groupe existant dans votre abonnement.
    Nom myasa Nom unique qui identifie votre instance Azure Spring Apps. Le nom doit comporter entre 4 et 32 caractères, et contenir uniquement des lettres minuscules, des chiffres et des traits d’union. Le premier caractère du nom du service doit être une lettre, et le dernier doit être une lettre ou un chiffre.
    Planification Consommation standard et dédiée (préversion) Le plan tarifaire détermine les ressources et le coût associés à votre instance.
    Région La région la plus proche de vos utilisateurs. L’emplacement géographique le plus proche de vos utilisateurs.
    Environnement Container Apps myenvironment Option permettant de sélectionner l’instance d’environnement Container Apps pour partager le même réseau virtuel avec d’autres services et ressources.

    Utilisez le tableau suivant comme guide pour créer l’environnement Container Apps :

    Paramètre Valeur suggérée Description
    Nom de l’environnement myenvironment Un nom unique pour identifier votre service d’environnement Azure Container Apps.
    Planifier Consommation Le plan tarifaire détermine les ressources et le coût associés à votre instance.
    Redondant interzone Désactivé Option permettant de créer votre service d’environnement Container Apps dans une zone de disponibilité Azure.
  4. Sélectionnez Vérifier et créer pour passer en revue vos sélections. Ensuite, sélectionnez Créer pour approvisionner l’instance Azure Spring Apps.

  5. Dans la barre d’outils, sélectionnez l’icône Notifications (en forme de cloche) pour surveiller le processus de déploiement. Une fois le déploiement terminé, vous pouvez sélectionner Épingler au tableau de bord, ce qui crée une vignette pour ce service dans votre tableau de bord du Portail Microsoft Azure, en tant que raccourci vers la page Vue d’ensemble du service.

  6. Sélectionnez Accéder à la ressource pour ouvrir la page Vue d’ensemble du service.

    Screenshot of the Azure portal that shows the Overview page with the Notifications page open.

Important

Le profil de charge de travail Consommation a un modèle de facturation de paiement à l’utilisation, sans coût de départ. Vous êtes facturé pour le profil de charge de travail dédié en fonction des ressources approvisionnées. Pour plus d’informations, consultez Profils de charges de travail dans Azure Container Apps et Tarification d’Azure Spring Apps.

3.3. Préparer l’instance PostgreSQL

Suivez la procédure ci-dessous pour créer un serveur Azure Database pour PostgreSQL :

  1. Accédez au Portail Azure et sélectionnez Créer une ressource.

  2. Sélectionnez Bases de données>Azure Database pour PostgreSQL.

  3. Sélectionnez l’option de déploiement Serveur flexible.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Renseignez l’onglet Informations de base avec les informations suivantes :

    • Nom du serveur : my-demo-pgsql
    • Région : USA Est
    • Version PostgreSQL : 14
    • Type de charge de travail : Développement
    • Activer la haute disponibilité : désélectionné
    • Méthode d’authentification : Authentification PostgreSQL uniquement
    • Nom d’utilisateur administrateur : myadmin
    • Mot de passe et Confirmer le mot de passe : entrez un mot de passe.
  5. Utilisez les informations suivantes pour configurer l’onglet Mise en réseau :

    • Méthode de connectivité : Accès public (adresses IP autorisées)
    • Autoriser l’accès public à partir d’un service Azure dans Azure sur ce serveur : sélectionné
  6. Sélectionnez Examiner et créer pour passer en revue vos sélections, puis sélectionnez Créer pour approvisionner le serveur. Cette opération peut prendre quelques minutes.

  7. Accédez à votre serveur PostgreSQL dans le portail Azure. Dans la page Vue d’ensemble, recherchez la valeur Nom du serveur, puis enregistrez-la pour une utilisation ultérieure. Vous devez configurer les variables d’environnement de l’application dans Azure Spring Apps.

  8. Sélectionnez Bases de données dans le menu de navigation pour créer une base de données, par exemple ; todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Connecter une instance d’application à une instance PostgreSQL

Suivez la procédure ci-dessous pour connecter vos instances de service :

  1. Accédez à votre instance Azure Spring Apps dans le portail Azure.

  2. Dans le menu de navigation, ouvrez Applications, puis sélectionnez Créer une application.

  3. Dans la page Créer une application, renseignez le nom de l’application simple-todo-api, puis sélectionnez Artefacts Java comme type de déploiement.

  4. Sélectionnez Créer pour terminer la création de l’application, puis sélectionnez l’application pour en afficher les détails.

  5. Accédez à l’application que vous avez créée dans le Portail Azure. Dans la page Vue d’ensemble, sélectionnez Attribuer un point de terminaison pour exposer le point de terminaison public pour l’application. Enregistrez l’URL pour accéder à l’application après le déploiement.

  6. Accédez à l’application que vous avez créée, développez Paramètres et sélectionnez Configuration dans le menu de navigation, puis sélectionnez Variables d’environnement pour définir les variables d’environnement.

  7. Ajoutez les variables d’environnement suivantes pour la connexion PostgreSQL, puis sélectionnez Enregistrer pour terminer la mise à jour de configuration de l’application. Veillez à remplacer les espaces réservés par vos propres valeurs que vous avez créées précédemment.

    Variable d'environnement Valeur
    SPRING_DATASOURCE_URL jdbc:postgresql://<your-PostgreSQL-server-name>:5432/<your-PostgreSQL-database-name>
    SPRING_DATASOURCE_USERNAME <your-PostgreSQL-admin-user>
    SPRING_DATASOURCE_PASSWORD <your-PostgreSQL-admin-password>

    Screenshot of the Azure portal that shows the Environment variables tab with all the values for the PostgreSQL connection.

3.5. Exposer les API RESTful

Pour exposer vos API RESTful dans Microsoft Entra ID, procédez comme suit :

  1. Connectez-vous au portail Azure.

  2. Si vous avez accès à plusieurs locataires, utilisez le filtre Répertoire + abonnement () pour sélectionner le locataire dans lequel vous voulez inscrire une application.

  3. Recherchez et sélectionnez Microsoft Entra ID.

  4. Sous Gérer, sélectionnez Inscriptions d’applications>Nouvelle inscription.

  5. Entrez un nom pour votre application dans le champ Nom, par exemple, Todo. Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement.

  6. Pour Types de comptes pris en charge, sélectionnez Comptes de tout répertoire d’organisation (tout répertoire Microsoft Entra : multilocataire) et comptes Microsoft personnels.

  7. Sélectionnez Inscrire pour créer l’application.

  8. Dans la page Vue d’ensemble de l’application, recherchez la valeur ID d’application (client) , puis notez-la pour une utilisation ultérieure. Vous en avez besoin pour configurer le fichier de configuration YAML pour ce projet.

  9. Sous Gérer, sélectionnez Exposer une API, trouvez l’URI de l’ID d’application au début de la page, puis sélectionnez Ajouter.

  10. Dans la page Modifier l’URI de l’ID d’application, acceptez l’URI proposé de l’ID d’application (api://{client ID}) ou utilisez un nom utile au lieu de l’ID client, comme api://simple-todo, puis sélectionnez Enregistrer.

  11. Sous Gérer, sélectionnez Exposer une API>Ajouter une étendue, puis entrez les informations suivantes :

    • Pour Nom de l’étendue, entrez ToDo.Read.
    • Pour Qui peut donner son consentement ?, sélectionnez Administrateurs et utilisateurs.
    • Pour Nom d’affichage du consentement administrateur, entrez Lire les données ToDo.
    • Pour Description du consentement administrateur, entrez Autoriser les utilisateurs authentifiés à lire les données ToDo.
    • Pour État, maintenez l’état Activé.
    • Sélectionnez Ajouter une étendue.
  12. Répétez les étapes précédentes pour ajouter les deux autres étendus : ToDo.Write et ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Mettre à jour la configuration de l’application

Procédez comme suit pour mettre à jour le fichier YAML afin d’utiliser les informations de votre application inscrite Microsoft Entra pour établir une relation avec l’application API RESTful :

  1. Recherchez le fichier src/main/resources/application.yml pour l’application simple-todo-api. Mettez à jour la configuration dans la section spring.cloud.azure.active-directory pour qu’elle corresponde à l’exemple suivant. Veillez à remplacer les espaces réservés par les valeurs que vous avez créées précédemment.

    spring:
      cloud:
        azure:
          active-directory:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Remarque

    Dans les jetons v1.0, la configuration nécessite l’ID client de l’API, tandis que dans les jetons v2.0, vous pouvez utiliser l’ID client ou l’URI d’ID d’application dans la requête. Vous pouvez configurer les deux types de jetons pour effectuer correctement la validation de l’audience.

    Les valeurs autorisées pour tenant-id sont : common, organizations, consumersou l’ID de locataire. Pour plus d’informations sur ces valeurs, consultez la section Utilisation d’un point de terminaison incorrect (comptes personnels et d’organisation) de l’article Erreur AADSTS50020 : Le compte d’utilisateur du fournisseur d’identité n’existe pas dans le locataire. Pour plus d’informations sur la conversion de votre application monolocataire, consultez Convertir une application monolocataire en application multilocataire sur Microsoft Entra ID.

  2. Utilisez la commande suivante pour régénérer l’échantillon de projet :

    ./mvnw clean package
    

4. Déployer l’application sur Azure Spring Apps

Vous pouvez maintenant déployer l’application sur Azure Spring Apps.

Utilisez la procédure suivante pour le déploiement en utilisant le plug-in Maven pour Azure Spring Apps :

  1. Accédez au répertoire complete, puis exécutez la commande suivante pour configurer l’application dans Azure Spring Apps :

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
    

    La liste suivante décrit les interactions de commande :

    • Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.
    • Sélectionnez un abonnement : sélectionnez le numéro de liste d’abonnements de l’instance Azure Spring Apps créée, qui correspond par défaut au premier abonnement de la liste. Si vous utilisez le nombre par défaut, appuyez directement sur Entrée.
    • Utiliser Azure Spring Apps dans Azure : appuyez sur y (oui) pour utiliser l’instance Azure Spring Apps existante.
    • Sélectionner Azure Spring Apps pour le déploiement : sélectionnez le numéro de l’instance Azure Spring Apps que vous avez créée. Si vous utilisez le nombre par défaut, appuyez directement sur Entrée.
    • Utiliser l’application existante dans Azure Spring Apps <your-instance-name> : appuyez sur y (oui) pour utiliser l’application créée.
    • Confirmez pour enregistrer toutes les configurations ci-dessus : appuyez sur y (oui). Si vous entrez N, la configuration n’est pas enregistrée dans les fichiers POM.
  2. Utilisez la commande suivante pour déployer l’application :

    ./mvnw azure-spring-apps:deploy
    

    La liste suivante décrit l’interaction de commande :

    • Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.

    Une fois la commande exécutée, les messages de journal suivants indiquent que le déploiement a réussi :

[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO]   InstanceName:demo--default-xxxxxxx-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:NONE
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://demo.<unique-identifier>.<region-name>.azurecontainerapps.io

5. Valider l’application

Vous pouvez désormais accéder à l’API RESTful pour voir si cela fonctionne.

5.1. Demander un jeton d’accès

Les API RESTful agissent en tant que serveur de ressources, qui est protégé par Microsoft Entra ID. Avant d’acquérir un jeton d’accès, vous devez inscrire une autre application dans Microsoft Entra ID et accorder des autorisations à l’application cliente, nommée ToDoWeb.

Inscrire l’application cliente

Procédez comme suit pour inscrire une application dans Microsoft Entra ID, qui est utilisé pour ajouter les autorisations pour l’application ToDo :

  1. Connectez-vous au portail Azure.

  2. Si vous avez accès à plusieurs locataires, utilisez le filtre Répertoire + abonnement () pour sélectionner le locataire dans lequel vous voulez inscrire une application.

  3. Recherchez et sélectionnez Microsoft Entra ID.

  4. Sous Gérer, sélectionnez Inscriptions d’applications>Nouvelle inscription.

  5. Entrez un nom pour votre application dans le champ Nom, par exemple, ToDoWeb. Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement.

  6. Pour Types de comptes pris en charge, utilisez la valeur par défaut Comptes dans ce répertoire d’organisation uniquement.

  7. Sélectionnez Inscrire pour créer l’application.

  8. Dans la page Vue d’ensemble de l’application, recherchez la valeur ID d’application (client) , puis notez-la pour une utilisation ultérieure. Vous en avez besoin pour obtenir un jeton d'accès.

  9. Sélectionnez Autorisations des API>Ajouter une autorisation>Mes API. Sélectionnez l’application ToDo que vous avez inscrite précédemment, puis sélectionnez les autorisations ToDo.Read, ToDo.Write et ToDo.Delete. Sélectionnez Ajouter des autorisations.

  10. Sélectionnez Accorder le consentement de l’administrateur pour <votre-nom-de-locataire> afin d’accorder le consentement administrateur aux autorisations que vous avez ajoutées.

    Screenshot of the Azure portal that shows the API permissions of a web application.

Ajouter un utilisateur pour accéder aux API RESTful

Procédez comme suit pour créer un utilisateur membre dans votre locataire Microsoft Entra. Ensuite, l’utilisateur peut gérer les données de l’application ToDo via des API RESTful.

  1. Sous Gérer, sélectionnez Utilisateurs>Nouvel utilisateur>Créer un utilisateur.

  2. Dans la page Créer un utilisateur, indiquez les informations suivantes :

    • Nom d’utilisateur principal : entrez un nom pour l’utilisateur.
    • Nom d’affichage : entrez un nom d’affichage pour l’utilisateur.
    • Mot de passe : copiez le mot de passe généré automatiquement fourni dans le champ Mot de passe.

    Remarque

    Les nouveaux utilisateurs doivent effectuer la première authentification de connexion et mettre à jour leurs mots de passe, sinon une erreur AADSTS50055: The password is expired s’affiche lorsqu’ils obtiennent le jeton d’accès.

    Lorsqu’un nouvel utilisateur se connecte, il reçoit une invite Action requise. Il peut choisir Demander ultérieurement pour ignorer la validation.

  3. Sélectionnez Vérifier + créer pour passer en revue vos sélections. Sélectionnez Créer pour créer l’utilisateur.

Mettre à jour la configuration OAuth2 pour l’autorisation de l’interface utilisateur Swagger

Procédez comme suit pour mettre à jour la configuration OAuth2 pour l’autorisation de l’interface utilisateur Swagger. Vous pouvez ensuite autoriser les utilisateurs à acquérir des jetons d’accès via l’application ToDoWeb.

  1. Ouvrez votre locataire Microsoft Entra ID dans le Portail Azure et accédez à l’application inscrite ToDoWeb.

  2. Sous Gérer, sélectionnez Authentification, Ajouter une plateforme, puis Application monopage.

  3. Utilisez le format <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html comme URL de redirection OAuth2 dans le champ URI de redirection, puis sélectionnez Configurer.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

Obtenir le jeton d’accès

Procédez comme suit pour utiliser la méthode de flux de code d’autorisation OAuth 2.0 afin d’obtenir un jeton d’accès avec Microsoft Entra ID, puis accédez aux API RESTful de l’applicationToDo :

  1. Ouvrez l’URL exposée par l’application, puis sélectionnez Autoriser pour préparer l’authentification OAuth2.

  2. Dans la fenêtre Autorisations disponibles, entrez l’ID client de l’application ToDoWeb dans le champ client_id, sélectionnez toutes les étendues du champ Étendues. Ignorez le champ client_secret, puis sélectionnez Autoriser pour la redirection vers la page de connexion Microsoft Entra.

Une fois la connexion terminée avec l’utilisateur précédent, vous êtes renvoyé à la fenêtre Autorisations disponibles.

5.2. Accéder aux API RESTful

Pour accéder aux API RESTful de l’application ToDo dans l’interface utilisateur Swagger, procédez comme suit :

  1. Sélectionnez l’API POST /api/simple-todo/lists, puis sélectionnez Essayer. Entrez le corps de la demande suivant, puis sélectionnez Exécuter pour créer une liste ToDo.

    {
      "name": "My List"
    }
    

    Une fois l’exécution terminée, vous voyez le corps de réponse suivant :

    {
      "id": "<ID-of-the-ToDo-list>",
      "name": "My List",
      "description": null
    }
    
  2. Sélectionnez l’API POST /api/simple-todo/lists/{listId}/items, puis Essayer. Pour listId, entrez l’ID de liste ToDo que vous avez créé précédemment, entrez le corps de la demande suivant, puis sélectionnez Exécuter pour créer un élément ToDo.

    {
      "name": "My first ToDo item", 
      "listId": "<ID-of-the-ToDo-list>",
      "state": "todo"
    }
    

    Cette action retourne l’élément ToDo suivant :

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": null,
      "state": "todo",
      "dueDate": "2023-07-11T13:59:24.9033069+08:00",
      "completedDate": null
    }
    
  3. Sélectionnez l’API GET /api/simple-todo/lists, puis sélectionnez Exécuter pour interroger les listes ToDo. Cette action retourne les listes ToDo suivantes :

    [
      {
        "id": "<ID-of-the-ToDo-list>",
        "name": "My List",
        "description": null
      }
    ]
    
  4. Sélectionnez l’API GET /api/simple-todo/lists/{listId}/items, puis Essayer. Pour listId, entrez l’ID de liste ToDo que vous avez créé précédemment, puis sélectionnez Exécuter pour créer un élément ToDo. Cette action retourne l’élément ToDo suivant :

    [
      {
        "id": "<ID-of-the-ToDo-item>",
        "listId": "<ID-of-the-ToDo-list>",
        "name": "My first ToDo item",
        "description": null,
        "state": "todo",
        "dueDate": "2023-07-11T13:59:24.903307+08:00",
        "completedDate": null
      }
    ]
    
  5. Sélectionnez l’API PUT /api/simple-todo/lists/{listId}/items/{itemId}, puis Essayer. Pour listId, entrez l’ID de liste ToDo. Pour itemId, entrez l’ID d’élément ToDo, entrez le corps de la demande suivant, puis sélectionnez Exécuter pour mettre à jour l’élément ToDo.

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "dueDate": "2023-07-11T13:59:24.903307+08:00",
      "state": "inprogress"
    }
    

    Cette action retourne l’élément ToDo mis à jour suivant :

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "state": "inprogress",
      "dueDate": "2023-07-11T05:59:24.903307Z",
      "completedDate": null
    }
    
  6. Sélectionnez l’API DELETE /api/simple-todo/lists/{listId}/items/{itemId}, puis Essayer. Pour listId, entrez l’ID de liste ToDo. Pour itemId, entrez l’ID d’élément ToDo, puis sélectionnez Exécuter pour supprimer l’élément ToDo. Le code de réponse du serveur devrait être 204.

6. Nettoyer les ressources

Vous pouvez supprimer le groupe de ressources Azure qui inclut toutes les ressources du groupe de ressources.

Pour supprimer l’intégralité du groupe de ressources, y compris le serveur que vous venez de créer, utilisez les étapes suivantes :

  1. Localisez votre groupe de ressources dans le portail Azure.

  2. Dans le menu de navigation, sélectionnez Groupes de ressources. Sélectionnez ensuite le nom de votre groupe de ressources (par exemple, myresourcegroup).

  3. Dans la page de votre groupe de ressources, sélectionnez Supprimer. Pour confirmer la suppression, entrez le nom de votre groupe de ressources dans la zone de texte, par exemple, myresourcegroup. Ensuite, sélectionnez Supprimer.

Pour supprimer l’intégralité du groupe de ressources, y compris le serveur que vous venez de créer, utilisez les étapes suivantes :

  1. Localisez votre groupe de ressources dans le portail Azure.

  2. Dans le menu de navigation, sélectionnez Groupes de ressources. Sélectionnez ensuite le nom de votre groupe de ressources (par exemple, myresourcegroup).

  3. Dans la page de votre groupe de ressources, sélectionnez Supprimer. Pour confirmer la suppression, entrez le nom de votre groupe de ressources dans la zone de texte, par exemple, myresourcegroup. Ensuite, sélectionnez Supprimer.

7. Étapes suivantes

Pour plus d’informations, consultez les articles suivants :