Applications monopage

Aperçu

Les applications JavaScript s'exécutant dans un navigateur sont souvent difficiles à sécuriser à cause de la nature ouverte du Web. Le stockage sécurisé est non-existant, et tout est en texte clair (pour HTTP version 1.1). Voici une citation (en anglais) de l'équipe Azure Active Directory qui synthétise l'état de l'authentification avec les applications monopage (« single-page applications ») :

The OAuth2 implicit grant is notorious for being the grant with the longest list of security concerns in the OAuth2 specification. And yet, that is the approach implemented by ADAL JS and the one we recommend when writing SPA applications. What gives? It’s all a matter of tradeoffs: and as it turns out, the implicit grant is the best approach you can pursue for applications that consume a Web API via JavaScript from a browser.

(Source : https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-dev-understanding-oauth2-implicit-grant)

Il est donc important de faire toutes les vérifications nécessaires pour assurer la validité de vos demandes et les réponses.

Cette section contient les instructions sur comment configurer AD FS avec une application monopage (« SPA ») avec laquelle les utilisateurs pourront s'authentifier et faire des requêtes à l'API GraphQL. Cette configuration est constituée de trois étapes : inscrire la SPA, donner accès à l'API et régler quelques URLs de redirection.

Prérequis

  • Assurez-vous d'avoir une copie de WorkflowGen sous licence installée et en fonctionnement sur un serveur.

  • Assurez-vous d'avoir l'accès d'administrateur AD FS pour pouvoir configurer AD FS.

  • Assurez-vous d'avoir approvisionné un utilisateur Active Directory existant depuis lequel vous pourrez vous authentifier à WorkflowGen pour pouvoir utiliser l'application.

  • Assurez-vous d'avoir bien configuré l'authentification déléguée à AD FS sur votre instance de WorkflowGen en suivant les instructions dans la section Authentification AD FS.

Configuration d'AD FS

Actuellement, AD FS supporte trois types d'applications : Native, Serveur et API Web. Comme vous pouvez le constater, il n'y a rien pour les applications monopages dans les navigateurs ou même dans les applications Web régulières qui affiche les pages sur le serveur. Cependant, vous pouvez utiliser les types supportés pour vos besoins. Le type d'application Native vous permet de récupérer un ID client et de définir un URI de rappel qui peuvent être utilisés pour effectuer un flux d'autorisation implicite avec une application monopage; AD FS répondra conformément car elle supporte le protocole OpenID Connect.

Cette configuration se fait dans plusieurs étapes. D'abord, vous devez inscrire une nouvelle application native dans AD FS. Ensuite, vous devez donner à l'application les permissions requises pour accéder à l'API GraphQL de WorkflowGen.

Étape 1 : Inscrivez une nouvelle application native

  1. Dans la fenêtre AD FS Management, naviguez au dossier Application Groups, puis doublez-cliquez sur le groupe WorkflowGen.

  2. Cliquez sur Add application.

  3. Configurez l'application :

    1. Name : Mon app monopage

    2. Copiez l'identifiant, dont vous aurez besoin dans l'application.

    3. Redirect URI : https://monappmonopage.com/callback

  4. Cliquez sur Add, puis cliquez sur Next.

  5. Vérifiez la configuration et lorsque vous aurez terminé, cliquez sur Next puis sur Close.

Étape 2 : Donnez accès à l'API GraphQL

  1. Dans la fenêtre AD FS Management, naviguez au dossier Application Groups, puis double-cliquez sur le groupe WorkflowGen.

  2. Double-cliquez sur l'application WorkflowGen GraphQL API.

  3. Dans l'onglet Client Permissions, cliquez sur l'application WorkflowGen Plus, puis cliquez sur Add.

  4. Choisissez Mon app monopage dans la liste des permissions des applications.

  5. Assurez-vous que les portées openid, profile et email sont cochées.

  6. Cliquez sur OK, puis cliquez sur OK dans le menu du groupe d'applications WorkflowGen.

Vous avez maintenant configuré votre application monopage dans AD FS.