Partager via


Scénario : API web appelant une API web (pour le scénario)

Découvrez comment créer une API web appelant une autre API web au nom de l’utilisateur.

Avant de lire cet article, vous devez vous familiariser avec les Concepts d’AD FS et le Flux On-Behalf_Of

Vue d’ensemble

  • Un client (application web), non représenté sur le diagramme ci-dessous, appelle une API web protégée et fournit un jeton de porteur JWT dans son en-tête HTTP « Autorisation ».

  • L’API web protégée valide le jeton et utilise la méthode MSAL AcquireTokenOnBehalfOf pour demander (à partir d’AD FS) un autre jeton afin d’appeler lui-même une deuxième API web (appelée API web en aval) pour le compte de l’utilisateur.

  • L’API web protégée utilise ce jeton pour appeler une API en aval. Elle peut également appeler AcquireTokenSilentlater ultérieurement afin de demander des jetons pour les autres API en aval (mais toujours pour le compte du même utilisateur). AcquireTokenSilent actualise le jeton, si besoin.

    vue d’ensemble

Pour mieux comprendre comment configurer pour le compte du scénario d’authentification dans AD FS, nous allons utiliser un exemple disponible ici et suivre pas à pas les étapes d’inscription d’application et de configuration du code.

Conditions préalables

  • Outils clients GitHub
  • AD FS 2019 (ou version ultérieure) configuré et en cours d’exécution
  • Visual Studio 2013 ou une version ultérieure

Inscription d’application dans AD FS

Cette section montre comment inscrire l’application native en tant que client public et les API web en tant que parties de confiance dans AD FS

  1. Dans Gestion AD FS, cliquez avec le bouton droit sur Groupes d’applications et sélectionnez Ajouter un groupe d’applications.

  2. Dans l’Assistant Groupe d’applications, pour Nom, entrez WebApiToWebApi, et sous Applications client-serveur, sélectionnez Application native accédant à un modèle d’API web. Cliquez sur Suivant.

    Capture d’écran de la page d’accueil de l’Assistant Ajout d’un groupe d’applications montrant l’application native accédant à un modèle d’API web mise en évidence.

  3. Copiez la valeur d’Identificateur du client. Nous l’utiliserons ultérieurement comme valeur pour ClientId dans le fichier App.config de l’application. Entrez ce qui suit pour URI de redirection : - https://ToDoListClient. Cliquez sur Add. Cliquez sur Suivant.

    Capture d’écran de la page Application native de l’Assistant Ajout d’un groupe d’applications montrant l’URL de redirection.

  4. Dans l’écran Configurer l’API web, entrez Identificateur :https://localhost:44321/. Cliquez sur Add. Cliquez sur Suivant. Cette valeur sera utilisée plus tard dans les fichiers App.config et Web.Config de l’application .

    Capture d’écran de la page Configurer l’API web de l’Assistant Ajout d’un groupe d’applications montrant l’identificateur correct.

  5. Sur l’écran Appliquer la stratégie de contrôle d’accès, sélectionnez Autoriser tout le monde, puis cliquez sur Suivant.

    Capture d’écran de la page Choisir une stratégie de contrôle d’accès de l’Assistant Ajout d’un groupe d’applications montrant l’option Autoriser tout le monde mise en évidence.

  6. Dans l’écran Configurer les autorisations d’application, sélectionnez openid et user_impersonation. Cliquez sur Suivant.

    Capture d’écran de la page Configurer les autorisations d’application de l’Assistant Ajout d’un groupe d’applications montrant Open ID sélectionné.

  7. Dans l’écran Résumé, cliquez sur Suivant.

  8. Dans la page Terminé, cliquez sur Fermer.

  9. Dans Gestion AD FS, sélectionnez Groupes d’applications, puis le groupe d’applications WebApiToWebApi. Effectuez un clic droit et sélectionnez Propriétés.

    Capture d’écran de la boîte de dialogue Gestion d’AD FS montrant le groupe WebApiToWebApi mis en évidence et l’option Propriétés dans la liste déroulante.

  10. Dans l’écran des propriétés WebApiToWebApi, cliquez sur Ajouter une application....

    Capture d’écran de la boîte de dialogue Propriétés de WebApiToWebApi montrant l’application WebApiToWebApi - API web répertoriée.

  11. Sous Applications autonomes, sélectionnez Application serveur.

    Capture d’écran de la page d’accueil de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’option Application serveur mise en évidence.

  12. Dans l’écran Application serveur, ajoutez https://localhost:44321/ comme Identificateur client et l’URI de redirection.

    Capture d’écran de la page Application serveur de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’identificateur client correct et l’ID de redirection.

  13. Dans l’écran Configurer les informations d’identification de l’application, sélectionnez Générer un secret partagé. Copiez le secret en vue d’une utilisation ultérieure.

    Capture d’écran de la page Configurer les informations d’identification de l’application de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’option Générer un secret partagé sélectionnée et le secret partagé généré mis en évidence.

  14. Dans l’écran Résumé, cliquez sur Suivant.

  15. Dans la page Terminé, cliquez sur Fermer.

  16. Dans Gestion AD FS, sélectionnez Groupes d’applications, puis le groupe d’applications WebApiToWebApi. Effectuez un clic droit et sélectionnez Propriétés.

    Deuxième capture d’écran de la boîte de dialogue Gestion d’AD FS montrant le groupe WebApiToWebApi mis en évidence et l’option Propriétés dans la liste déroulante.

  17. Dans l’écran des propriétés WebApiToWebApi, cliquez sur Ajouter une application....

    Deuxième capture d’écran de la boîte de dialogue Propriétés de WebApiToWebApi montrant l’application WebApiToWebApi - API web répertoriée.

  18. Sous Applications autonomes, sélectionnez API web.

    Capture d’écran de la page Bienvenue de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’option API web mise en évidence.

  19. Dans Configurer l’API web, ajoutez https://localhost:44300 comme Identificateur.

    Capture d’écran de la page Configurer l’API web de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’URL de redirection correcte.

  20. Dans l’écran Appliquer la stratégie de contrôle d’accès, sélectionnez Autoriser tout le monde, puis Suivant.

    Capture d’écran de la page Choisir une stratégie de contrôle d’accès de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’option Autoriser tout le monde mise en évidence.

  21. Dans l’écran Configurer les autorisations d’application, cliquez sur Suivant.

    Capture d’écran de la page Configurer les autorisations d’application de l’Assistant Ajouter une nouvelle application à WebApiToWebApi montrant l’option Suivant mise en évidence.

  22. Dans l’écran Résumé, cliquez sur Suivant.

  23. Dans la page Terminé, cliquez sur Fermer.

  24. Cliquez sur OK sur l’écran WebApiToWebApi – Propriétés de l’API web 2

  25. Dans l’écran Propriétés WebApiToWebApi, sélectionnez WebApiToWebApi – API web, puis Modifier....

    Capture d’écran de la boîte de dialogue Propriétés de WebApiToWebApi montrant l’application WebApiToWebApi - API web en évidence.

  26. Dans l’écran WebApiToWebApi – Propriétés de l’API web, sélectionnez l’onglet Règles de transformation d’émission, puis Ajouter une règle....

    Capture d’écran de la boîte de dialogue Propriétés de l’API web de WebApiToWebApi montrant l’onglet Règles de transformation d’émission.

  27. Dans l’Assistant Ajouter une règle de revendication de transformation, sélectionnez Envoyer des revendications à l’aide d’une règle personnalisée dans la liste déroulante Suivante, puis sélectionnez Suivant.

    Capture d’écran de la page Sélectionner un modèle de règle de l’Assistant Ajouter une règle de revendication de transformation montrant l’option Envoyer des revendications à l’aide d’une règle personnalisée sélectionnée.

  28. Entrez PassAllClaims dans Nom de la règle de revendication : champ et la règle de revendication x:[] = issue(claim=x); dans le champ Règle personnalisée :, puis cliquez sur >Terminer.

    Capture d’écran de la page Configurer une règle de l’Assistant Ajouter une règle de revendication de transformation montrant la configuration expliquée ci-dessus.

  29. Cliquez sur OK sur l’écran WebApiToWebApi – Propriétés de l’API web

  30. Dans l’écran Propriétés de WebApiToWebApi, sélectionnez WebApiToWebApi – API web 2, puis cliquez sur Modifier...
    Capture d’écran de la boîte de dialogue Propriétés WebApiToWebApi montrant l’application WebApiToWebApi - API web 2 mise en évidence.

  31. Dans l’écran WebApiToWebApi – Propriétés de l’API web 2, sélectionnez l’onglet Règles de transformation d’émission, puis Ajouter une règle...

  32. Dans l’Assistant Ajouter une règle de revendication de transformation, sélectionnez Envoyer des revendications à l’aide d’une règle personnalisée dans la liste déroulante, puis sélectionnez Suivant La deuxième capture d’écran de la page Sélectionner un modèle de règle de l’Assistant Ajouter une règle de transformation montrant l’option Envoyer des revendications à l’aide d’une règle personnalisée sélectionnée.

  33. Entrez PassAllClaims dans Nom de la règle de revendication : champ et la règle de revendication x:[] => issue(claim=x); dans le champ Règle personnalisée :, puis cliquez sur Terminer.

    Deuxième capture d’écran de la page Configurer une règle de l’Assistant Ajouter une règle de revendication de transformation montrant la configuration expliquée ci-dessus.

  34. Cliquez sur OK sur l’écran WebApiToWebApi – Propriétés de l’API web 2, puis sur l’écran Propriétés de WebApiToWebApi.

Configuration du code

Cette section montre comment configurer une API web pour appeler une autre API web

  1. Téléchargez l’exemple ici

  2. Ouvrez l’exemple à l’aide de Visual Studio.

  3. Ouvrez le fichier App.config. Modifiez les éléments suivants :

    • ida:Authority - entrez https://[votre nom d’hôte AD FS]/adfs/

    • ida:ClientId - entrez la valeur de #3 dans la section Inscription de l’application dans AD FS ci-dessus.

    • ida:RedirectUri - entrez la valeur de #3 dans la section Inscription de l’application dans AD FS ci-dessus.

    • todo:TodoListResourceId - entrez la valeur Identificateur de # 4 dans la section Inscription des applications dans AD FS ci-dessus

    • ida : todo:TodoListBaseAddress - entrez la valeur Identificateur de # 4 dans la section Inscription des applications dans AD FS ci-dessus.

      Capture d’écran du fichier de configuration de l’application montrant les valeurs modifiées.

  4. Ouvrez le fichier Web.config sous ToDoListService. Modifiez les éléments suivants :

    • ida:Audience : entrez la valeur de l’identificateur client de # 12 dans la section Inscription d’application dans AD FS ci-dessus

    • ida:ClientId - entrez la valeur de l’identificateur client de #12 dans la section Inscription d’application dans AD FS ci-dessus.

    • Ida : ClientSecret - entrez le secret partagé copié à partir de #13 dans la section Inscription de l’application dans AD FS ci-dessus.

    • ida:RedirectUri - entrez la valeur RedirectUri de #12 dans la section Inscription de l’application dans AD FS ci-dessus.

    • ida:AdfsMetadataEndpoint : entrez https://[votre nom d’hôte AD FS]/federationmetadata/2007-06/federationmetadata.xml

    • ida:OBOWebAPIBase - entrez la valeur Identificateur de # 19 dans la section Inscription d’application dans AD FS ci-dessus.

    • ida:Authority - entrez https://[votre nom d’hôte AD FS]/adfs

      Capture d’écran du fichier de configuration web sous ToDoListService montrant les valeurs modifiées.

  5. Ouvrez le fichier Web.config sous WebAPIOBO. Modifiez les éléments suivants :

    • ida:AdfsMetadataEndpoint : entrez https://[votre nom d’hôte AD FS]/federationmetadata/2007-06/federationmetadata.xml

    • ida:Audience : entrez la valeur de l’identificateur client de # 12 dans la section Inscription d’application dans AD FS ci-dessus

      Capture d’écran du fichier de configuration web sous WebAPIOBO montrant les valeurs modifiées.

Tester l’exemple

Cette section montre comment tester l’exemple configuré ci-dessus.

Une fois les modifications apportées au code, regénérez la solution.

  1. Dans Visual Studio, cliquez avec le bouton droit sur la solution et sélectionnez Définir les projets de démarrage…

    Capture d’écran de la liste qui s’affiche lorsque vous cliquez avec le bouton droit sur la solution avec l’option Configurer les projets de démarrage mise en évidence.

  2. Dans les pages Propriétés, vérifiez qu’Action est défini sur Démarrer pour chacun des projets, à l’exception de TodoListSPA.

    Capture d’écran de la boîte de dialogue Pages de propriétés de la solution montrant l’option Plusieurs projets de démarrage sélectionnée et les actions de tous les projets définies sur Démarrer.

  3. En haut de Visual Studio, cliquez sur la flèche verte.

    Capture d’écran de l’interface utilisateur de Visual Studio avec l’option Démarrer mise en évidence.

  4. Dans l’écran principal de l’application native, cliquez sur Se connecter.

    Capture d’écran de la boîte de dialogue Client de liste de tâches.

    Si vous ne voyez pas l’écran de l’application native, recherchez et supprimez les fichiers *msalcache.bin du dossier où le référentiel du projet est enregistré sur votre système.

  5. Vous devriez être redirigé vers la page de connexion AD FS. Connectez-vous.

    Capture d’écran de la page Connexion.

  6. Après connexion, entrez le texte d’API web dans l’appel d’API web dans l’élément Créer une tâche. Cliquez sur Add Item (Ajouter un élément). Cela appelle l’API web (To Do List Service) qui appelle ensuite l’API web 2 (WebAPIOBO) et ajoute l’élément dans le cache.

    Capture d’écran de la boîte de dialogue Client de liste de tâches avec la nouvelle tâche qui remplit la section Liste de tâches.

Étapes suivantes

Flux OpenID Connect/OAuth avec AD FS et scénarios d’application