Scénario : Application native appelant une API web
Découvrez comment créer une application native pour connecter des utilisateurs authentifiés par AD FS 2019 et acquérir des jetons à l’aide de la bibliothèque MSAL pour appeler des API web.
Avant de lire cet article, vous devez vous familiariser avec les concepts d’AD FS et le flux d’octroi du code d’autorisation.
Vue d’ensemble
Dans ce flux, vous ajoutez une authentification à votre application native (client public), qui peut alors connecter des utilisateurs et appeler une API web. Pour appeler une API web à partir d’une application native qui connecte des utilisateurs, vous pouvez utiliser la méthode d’acquisition de jeton AcquireTokenInteractive de MSAL. Pour permettre cette interaction, MSAL utilise un navigateur web.
Pour mieux comprendre comment configurer une application native dans AD FS afin d’acquérir un jeton d’accès de manière interactive, nous allons utiliser un exemple disponible ici et parcourir pas à pas les étapes d’inscription de l’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 l’API web en tant que partie de confiance dans AD FS.
Dans Gestion AD FS, cliquez avec le bouton droit sur Groupes d’applications et sélectionnez Ajouter un groupe d’applications.
Dans l’Assistant Groupe d’applications, pour Nom, entrez NativeAppToWebApi, puis sous Applications client-serveur, sélectionnez le modèle Application native accédant à une API web. Cliquez sur Suivant.
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.
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.
Sur l’écran Appliquer la stratégie de contrôle d’accès, sélectionnez Autoriser tout le monde, puis cliquez sur Suivant.
Dans l’écran Configurer les autorisations d’application, vérifiez que openid est sélectionné, puis cliquez sur Suivant.
Dans l’écran Résumé, cliquez sur Suivant.
Dans la page Terminé, cliquez sur Fermer.
Dans Gestion AD FS, sélectionnez Groupes d’applications, puis le groupe d’applications NativeAppToWebApi. Effectuez un clic droit et sélectionnez Propriétés.
Dans l’écran des propriétés de NativeAppToWebApi, sélectionnez NativeAppToWebApi – API web sous API web, puis cliquez sur Modifier…
Dans l’écran Propriétés de NativeAppToWebApi – API web, sélectionnez l’onglet Règles de transformation d’émission, puis cliquez sur Ajouter une règle…
Dans l’Assistant Ajout d’une règle de revendication de transformation, sélectionnez Transformer une revendication entrante dans la liste déroulante Modèle de règle de revendication : et cliquez sur Suivant.
Entrez NameID dans le champ Nom de la règle de revendication. Sélectionnez Nom pour Type de revendication entrante, ID de nom pour Type de revendication sortante et Nom commun pour Format de l’identificateur du nom sortant. Cliquez sur Terminer.
Cliquez sur OK dans l’écran Propriétés de NativeAppToWebApi – API web, puis dans l’écran Propriétés de NativeAppToWebApi.
Configuration du code
Cette section montre comment configurer une application native pour connecter un utilisateur et récupérer un jeton pour appeler l’API web.
Téléchargez l’exemple ici.
Ouvrez l’exemple à l’aide de Visual Studio.
Ouvrez le fichier App.config. Modifiez les éléments suivants :
ida:Authority : entrez h
ttps://[your AD FS hostname]/adfs
ida:ClientId : entrez la valeur Identificateur du client issue de l’étape n° 3 de la section Inscription d’application dans AD FS ci-dessus.
ida:RedirectUri : entrez la valeur URI de redirection issue de l’étape n° 3 de la section Inscription d’application dans AD FS ci-dessus.
todo:TodoListResourceId : entrez la valeur Identificateur issue de l’étape n° 4 de la section Inscription d’application dans AD FS ci-dessus.
ida:todo:TodoListBaseAddress : entrez la valeur Identificateur issue de l’étape n° 4 de la section Inscription d’application dans AD FS ci-dessus.
Ouvrez le fichier Web.config. Modifiez les éléments suivants :
ida:Audience : entrez la valeur Identificateur issue de l’étape n° 4 de la section Inscription d’application dans AD FS ci-dessus.
ida:AdfsMetadataEndpoint : entrez
https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml
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.
Dans Visual Studio, cliquez avec le bouton droit sur la solution et sélectionnez Définir les projets de démarrage…
Dans les pages Propriétés, vérifiez que l’option Action est définie sur Démarrer pour chacun des projets.
En haut de Visual Studio, cliquez sur la flèche verte.
Dans l’écran principal de l’application native, cliquez sur Se connecter.
Si vous ne voyez pas l’écran de l’application native, recherchez et supprimez les fichiers *msalcache.bin
du dossier où le dépôt du projet est enregistré sur votre système.
Vous allez être redirigé vers la page de connexion AD FS. Connectez-vous.
Une fois connecté, entrez le texte Générer une application native sur l’API web dans Créer une tâche. Cliquez sur Ajouter un élément. Cette action appelle le service de liste de tâches (API web) et ajoute l’élément dans le cache.
Étapes suivantes
Flux OpenID Connect/OAuth avec AD FS et scénarios d’application