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

S’applique à : Windows Server 2022, Windows Server 2019, AD FS 2019 et versions ultérieures

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.

    overview

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.

    Screenshot of the Welcome page of the Add Application Group Wizard showing the Native application accessing a Web API template highlighted.

  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.

    Screenshot of the Native application page of the Add Application Group Wizard showing the redirect U R I .

  4. Sur 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 .

    Screenshot of the Configure Web API page of the Add Application Group Wizard showing the correct identifier.

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

    Screenshot of the Choose Access Control Policy page of the Add Application Group Wizard showing the Permit everyone option highlighted.

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

    Screenshot of the Configure Application Permissions page of the Add Application Group Wizard showing open I D selected.

  7. Sur 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.

    Screenshot of the A D F S Management dialog box showing the WebApiToWebApi group highlighted and the Properties option in the dropdown list.

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

    Screenshot of the WebApiToWebApi Properties dialog box showing the WebApiToWebApi - Web A P I application listed.

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

    Screenshot of the Welcome page of the Add a new application to WebApiToWebApi wizard showing the Server application option highlighted.

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

    Screenshot of the Server application page of the Add a new application to WebApiToWebApi wizard showing the correct client identifier and redirect U R I.

  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.

    Screenshot of the Configure Application Credentials application page of the Add a new application to WebApiToWebApi wizard showing the Generate a shared secret option selected and the generated shared secret highlighted.

  14. Sur 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.

    Second screenshot of the A D F S Management dialog box showing the WebApiToWebApi group highlighted and the Properties option in the dropdown list.

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

    Second screenshot of the WebApiToWebApi Properties dialog box showing the WebApiToWebApi - Web A P I application listed.

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

    Screenshot of the Welcome page of the Add a new application to WebApiToWebApi wizard showing the Web A P I option highlighted.

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

    Screenshot of the Configure Web A P I page of the Add a new application to WebApiToWebApi wizard showing the correct redirect U R I.

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

    Screenshot of the Choose Access Control Policy page of the Add a new application to WebApiToWebApi wizard showing the Permit everyone option highlighted.

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

    Screenshot of the Configure Application Permissions page of the Add a new application to WebApiToWebApi wizard showing the Next option called out.

  22. Sur 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....

    Screenshot of the WebApiToWebApi Properties dialog box showing the WebApiToWebApi - Web A P I application highlighted.

  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....

    Screenshot of the WebApiToWebApi - Web A P I Properties dialog box showing the Issuance Transform Rules tab.

  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.

    Screenshot of the Select Rule Template page of the Add Transform Claim Rule Wizard showing the Send Claims Using a Custom Rule option selected.

  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.

    Screenshot of the Configure Rule page of the Add Transform Claim Rule Wizard showing the configuration explained above.

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

  30. Sur l’écran Propriétés WebApiToWebApi, sélectionnez WebApiToWebApi – API web 2, puis cliquez sur Modifier...
    Screenshot of the WebApiToWebApi Properties dialog box showing the WebApiToWebApi - Web A P I 2 application highlighted.

  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 Second screenshot of the Select Rule Template page of the Add Transform Claim Rule Wizard showing the Send Claims Using a Custom Rule option selected.

  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.

    Second screenshot of the Configure Rule page of the Add Transform Claim Rule Wizard showing the configuration explained above.

  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.

      Screenshot of the App config file showing the modified values.

  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

      Screenshot of the web config file under ToDoListService showing the modified values.

  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

      Screenshot of the web config file under WebAPIOBO showing the modified values.

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…

    Screenshot of the list that appears when you right-click the solution with the Set Start Up Projects option highlighted.

  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.

    Screenshot of the Solution Property Pages dialog box showing the Multiple startup project option selected and all of the projects' actions set to Start.

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

    Screenshot of the Visual Studio UI with the Start option called out.

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

    Screenshot of the To Do List Client dialog box.

    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. Allez-y et connectez-vous.

    Screenshot of the Sign In page.

  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.

    Screenshot of the To Do List Client dialog box with the new to do item populating the To Do Items section.

Étapes suivantes

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