Authentification Azure Active Directory

Aperçu

Cette section contient les instructions sur la configuration de l'authentification déléguée de WorkflowGen avec le point de terminaison (« endpoint ») v1 de l'API d'authentification Azure AD. Elle contient également des instructions sur la configuration d'une instance de WorkflowGen en fonctionnement qui utilise Azure pour l'authentification des utilisateurs.

Dans les instructions, remplacez <workflowgen url> par le domaine et le chemin de votre instance de WorkflowGen; par exemple, localhost/wfgen ou www.macompagnie.com/wfgen.

Prérequis

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

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

  • Assurez-vous d'avoir approvisionné un utilisateur Azure AD existant depuis lequel vous pourrez vous authentifier à WorkflowGen et que cet utilisateur a les permissions administratives. Ceci est important car une fois que vous aurez activé la délégation, vous devrez toujours pouvoir gérer l'application.

Configuration d'Active Directory

La configuration d'Azure AD se fait dans plusieurs étapes. D'abord, vous devez inscrire l'application Web WorkflowGen et l'associer à votre instance de WorkflowGen; ensuite, vous devez inscrire l'API GraphQL de WorkflowGen pour pouvoir inscrire des applications personnalisées pour y accéder.

Étape 1 : Créez une nouvelle application Web

  1. Dans le portail Azure, cliquez sur App registrations dans la section Azure Active Directory.

  2. Cliquez sur New application registration et saisissez les propriétés :

    • Name : WorkflowGen Web app

    • Application type : Web app / API

    • Sign-on URL : https://<workflowgen url>

  3. Cliquez sur Create en bas de la page.

Vous devriez maintenant voir la page d'aperçu de l'application WorkflowGen inscrite.

Étape 2 : Générez une clé secrète client pour l'application

Vous devez maintenant générer une clé secrète client pour utiliser dans le module d'authentification de WorkflowGen.

  1. Cliquez sur Settings.

  2. Dans la section Keys, ajouter une nouvelle clé.

    • DESCRIPTION : secret, ou quelque chose de semblable pour rappeler que ceci est la clé secrète client.

    • EXPIRES : Choisissez Never expires.

    • VALUE : Une valeur avec une entropie suffisante pour être impossible à deviner.

  3. Cliquez sur Save. La valeur que vous avez saisi sera maintenant cryptée.

  4. Copiez la valeur générée car vous ne pourrez plus la rechercher par la suite.

Étape 3 : Inscrivez une nouvelle application API

Vous devez maintenant inscrire le module de l'API GraphQL de WorkflowGen en tant que nouvelle application. Ceci permettra à d'autres applications d'accéder à l'API et s'inscrire sur Azure en utilisant le protocole OpenID Connect. Pour ce faire :

  1. Dans le portail Azure, cliquez App registrations dans la section Azure Active Directory.

  2. Cliquez sur New application registration et saisissez les propriétés :

    • Name : WorkflowGen GraphQL API

    • Application type : Web app / API

    • Sign-on URL : https://<workflowgen url>/graphql

  3. Cliquez sur Create en bas de la page.

Vous devriez maintenant voir l'API GraphQL de WorkflowGen inscrite dans la page d'aperçu de l'application.

Étape 4 : Changez l'URI ID d'application

Pour créer une valeur audience significative, vous devez changer sa valeur par défaut pour qu'elle pointe vers l'API GraphQL de votre instance. Pour ce faire :

  1. Sur la page d'aperçu de l'application d'API de GraphQL inscrite, cliquez sur Settings.

  2. Naviguez à la section Properties.

  3. Changez la valeur de l'ID de l'URI d'application en https://<workflowgen url>/graphql, puis cliquez sur Save.

Étape 5 : Ajoutez un URL de réponse

Pour que la communication entre WorkflowGen et Azure fonctionne, vous devez ajouter des URLs de réponse autorisé à l'application WorkflowGen Web app inscrite.

  1. Sur la page d'aperçu de l'application WorkflowGen Web app inscrite, cliquez sur Settings.

  2. Naviguez à la section Reply URLs.

  3. Ajoutez les URLs suivants :

    • https://<workflowgen url>/auth/callback

    • https://<workflowgen url>/auth/logout/return

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

Vous devez maintenant donner à l'application Web WorkflowGen accès à l'API GraphQL. Pour ce faire :

  1. Sur la page d'aperçu de l'application Web WorkflowGen, cliquez sur Settings.

  2. Naviguez à la section Required permissions.

  3. Cliquez sur Add, puis cliquez Select an API.

  4. Recherchez l'API GraphQL de WorkflowGen.

  5. Cliquez sur l'application GraphQL API, puis cliquez sur Select.

  6. Cliquez sur Select permissions, puis cochez toutes les cases à cocher.

  7. Cliquez sur Select, puis cliquez sur Done.

Vous devriez maintenant voir l'API GraphQL de WorkflowGen dans la liste des permissions requises.

Vérifiez les inscriptions

Vous devriez maintenant avoir toutes les informations dont vous aurez besoin pour configurer WorkflowGen pour déléguer l'authentification à Azure AD. Voici un résumé :

  • Un ID client. Ceci est l'ID de l'application WorkflowGen inscrite dans Azure. Vous pouvez l'ID sur la page d'aperçu de l'application.

  • Une clé secrète client. Ceci est la clé secrète générée antérieurement.

  • Une audience. Ceci est la propriété App ID URI de l'application GraphQL API inscrite.

  • Le point de terminaison des métadonnées. Cet URL est lié à votre annuaire Azure. Pour le trouver :

    1. Naviguez à la section des propriétés de l'annuaire.

    2. Copiez la valeur Directory ID.

    3. Le point de terminaison est formulé comme suit : https://login.microsoftonline.com/<Directory ID>/.well-known/openid-configuration.

Vous devriez maintenant avoir toutes les informations requises pour lier votre instance de WorkflowGen à Azure AD.

Configuration de WorkflowGen

Vous devez maintenant configurer WorkflowGen pour déléguer l'authentification à Azure AD.

Étape 1 : Ajoutez les valeurs Azure AD au web.config de WorkflowGen

  1. Ouvrez le fichier web.config de WorkflowGen et ajouter les propriétés suivantes sous <appSettings> :

    <!-- Azure v1 auth -->
    <add key="ApplicationSecurityAuthProvider" value="azure-v1"/>
    <add key="ApplicationSecurityAuthClientId" value="<CLIENT ID>" />
    <add key="ApplicationSecurityAuthClientSecret" value="<CLIENT SECRET>" />
    <add key="ApplicationSecurityAuthMetadataUrl" value="<METADATA URL>" />
    <add key="ApplicationSecurityAuthCheckSessionUrl" value="<CHECK SESSION URL>" />
    <add key="ApplicationSecurityAuthAppIdClaim" value="appid" />
    <add key="ApplicationSecurityAuthUsernameClaim" value="upn" />
    <add key="ApplicationSecurityAuthClockTolerance" value="60" />
    <add key="ApplicationSecurityAuthSessionRefreshEnableIFrame" value="Y"/>
  2. Remplacez <CLIENT ID> par l'ID de l'application.

  3. Remplacez <CLIENT SECRET> par la clé secrète de l'application inscrite WorkflowGen générée dans Azure.

  4. Remplacez <METADATA URL> par l'URL que vous avez formulé antérieurement depuis la valeur Directory ID de votre annuaire Azure AD.

  5. Remplacez <CHECK SESSION URL> par la valeur de la propriété check_session_iframe de la point de terminaison des métadonnées. Il y a deux façons pour ce faire : Option 1 : Utilisez le format suivant : https://login.microsoftonline.com/<Directory ID>/oauth2/checksession Remplacez <Directory ID> par votre ID de répertoire Azure AD, qui se trouve dans la section Propriétés de votre page de portail Azure AD. Option 2 : Demandez le <METADATA_URL> et obtenez la valeur :

    Exemple de requête Linux / macOS :

    curl "<METADATA URL>" | python -m json.tool

    Note : Enlevez | python -m json.tool si vous n'avez pas Python; ceci est pour l'impression automatique (« pretty printing »).

    Exemple de requête Windows PowerShell : Invoke-RestMethod -Uri "<METADATA URL>" -Method GET | ConvertTo-JSON

    Pour plus d'informations sur cette propriété, voir le tableau ci-dessous.

Note : Si votre serveur empêche les navigateurs d'incorporer du contenu Web dans des iframes (p.ex. en renvoyant l'en-tête X-Frame-Options: DENY), il est fortement recommandé de définir la valeur de ApplicationSecurityAuthSessionRefreshEnableIFrame.

Tableau des options web.config

Option

Description

ApplicationSecurityAuthProvider

Le nom du fournisseur d'identité supporté par WorkflowGen. À présent, seulement Azure Active Directory, Auth0, AD FS et Okta sont supportés. Valeur : azure-v1, auth0, adfs ou okta

ApplicationSecurityAuthClientId

Chaque fournisseur d'identité génère un code qui identifie uniquement votre application. Dans ce cas, cette valeur est le code qui identifie uniquement l'application Web WorkflowGen dans Azure Active Directory, Auth0 ou AD FS.

ApplicationSecurityAuthClientSecret

Comme pour l'ID client, cette valeur est aussi générée par le fournisseur d'identité, mais est plutôt comme un mot de passe d'utilisateur. Il est important de le garder secret parce qu'un logiciel malveillant ayant accès pourrait agir au nom de l'application. Cette valeur doit être générée explicitement dans Azure Active Directory.

ApplicationSecurityAuthMetadataUrl

Le point de terminaison fourni par le fournisseur d'identité qui supporte le standard OpenID Connect Discovery. Il permet à WorkflowGen de récupérer des informations publiques sur votre domaine Azure Active Directory, sans lequel vous devrez effectuer beaucoup plus de configurations dans le fichier web.config.

ApplicationSecurityAuthAppIdClaim

Le nom de la revendication contenu dans le jeton d'accès obtenu du fournisseur d'identité qui identifie uniquement un client non-interactif. Il est utilisé seulement si vous avez une application machine-à-machine qui doit accéder à l'API GraphQL. Pour le configurer, voir la section Configuration d'Azure Active Directory pour les applications monopages. Note : Il est recommandé de garder la valeur par défaut.

ApplicationSecurityAuthUsernameClaim

Le nom de la revendication contenue dans le jeton d'accès qui identifie l'utilisateur dans WorkflowGen. Il est utilisé par WorkflowGen pour générer un jeton de session ainsi que par l'API GraphQL en récupérant un jeton d'accès. Note : Il est recommandé de garder la valeur par défaut.

ApplicationSecurityAuthClockTolerance

Cette valeur est utilisée lors de la vérification d'un jeton dans WorkflowGen. Il est essentiellement pour gérer des différences mineures entre les horloges des serveurs. Note : Il est recommandé de garder la valeur par défaut.

ApplicationSecurityAuthSessionRefreshEnableIFrame

Lorsqu'elle est activée (Y), cette option active la fonctionnalité d'auto-rafraîchissement de session à l'aide d'un <iframe> invisible. Cela permet aux utilisateurs de saisir leurs mots de passe moins souvent en actualisant leur session en arrière-plan pendant qu'ils travaillent.

Note : Cette option est uniquement disponible lorsque WorkflowGen est configuré avec l'authentification OIDC.

WorkflowGen est maintenant lié à Azure AD et réciproquement. La dernière étape est de configurer quelques options pour finaliser le « câblage interne ».

Étape 2 : Ajoutez des valeurs de sécurité pour la génération de session

Pour générer un jeton de session, vous devez ajouter quelques configurations au fichier web.config.

  1. Ouvrez le fichier web.config de WorkflowGen et ajouter la propriété suivante sous <appSettings> :

    <!-- Auth -->
    <add key="ApplicationSecurityAuthSessionTokenSigningSecret" value="<SECRET>" />
  2. Remplacez <SECRET> par une valeur qui ne peut pas être devinée, comme un UUID.

Le secret sera seulement accessible dans votre instance de WorkflowGen, donc lors de la génération du jeton de session, WorkflowGen le signera avec ce secret afin de vérifier la validité de tous les jetons qui seront envoyés.

Étape 3 : Activez la délégation d'authentification

Vous devez maintenant activer la délégation en remplaçant le système d'authentification dans IIS et faire pointer les modules de WorkflowGen au module d'authentification correct.

Configurez IIS

  1. Dans IIS Manager, cliquez sur l'application WorkflowGen dans l'arborescence.

  2. Cliquez sur le bouton Authentication.

  3. Activez Anonymous Authentication et désactivez toutes les autres authentification.

  4. Répétez ces étapes pour toutes les sous-applications.

Ajoutez des propriétés aux fichiers web.config de certains modules

Certains modules doivent faire vérifier leur authentification par le module d'authentification spécial de WorkflowGen Advantys.Security.JWTAuthenticationModule, tandis que certains autres modules ne le doivent pas parce qu'ils sont soit publics ou ne font pas partie du système d'authentification global.

  1. Ajoutez la propriété suivante au fichier web.config de WorkflowGen :

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <modules>
    <add name="ApplicationSecurityAuthenticationModule" type="Advantys.Security.Http.JWTAuthenticationModule" />
    </modules>
    </system.webServer>
    </configuration>
  2. Ajoutez la propriété suivante au fichier web.config du module auth :

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>ains
    <modules>
    <remove name="ApplicationSecurityAuthenticationModule"/>
    </modules>
    </system.webServer>
    </configuration>

    Cette ligne enlève le module d'authentification Node.js du système d'authentification global, car cette application Node.js encapsule les mécanismes d'authentification de OpenID connect.

  3. Répétez les deux étapes ci-haut pour les modules hooks et scim.

  4. Si vous avez développé des formulaires Web personnalisés avec leurs propres dossiers \bin, vous devez copier les assemblies .NET et les bibliothèques de dépendances suivants de \wfgen\bin dans le dossier \bin de chaque formulaire Web personnalisé (\wfgen\wfapps\webforms\bin) :

    • Advantys.My.dll

    • Advantys.Security.dll

    • Newtonsoft.Json.dll

    • jose-jwt.dll

Vous devriez maintenant avoir une instance de WorkflowGen en fonctionnement avec l'authentification déléguée à Azure AD via le protocole OpenID Connect. Assurez-vous d'avoir approvisionné vos utilisateurs à WorkflowGen afin qu'ils puissent accéder à WorkflowGen.

Options configurables

Ce tableau liste toutes les options configurables dans WorkflowGen que vous pouvez utiliser pour personnaliser votre expérience d'authentification; elles se trouvent dans le fichier web.config de WorkflowGen.

Option

Description

ApplicationSecurityAuthSessionTokenCookie

Le nom du cookie de session généré par le module d'authentification. Valeur par défaut : wfgen_token Note : Ceci est utile quand vous avez de multiples instances de WorkflowGen en fonctionnement auxquelles vous voulez accéder lorsque vous y êtes authentifié en même temps.

ApplicationSecurityAuthSessionTimeOut

La durée de la session en secondes. Elle The duration of the session in seconds. Sa valeur par défaut est le temps d'expiration du jeton d'ID reçu d'Azure. Valeur par défaut : la valeur d'expiration (« exp value » du jeton Azure ID

ApplicationSecurityAuthMobileSessionTimeOut

La durée de la section en secondes lorsqu'elle est demandée par des appareils mobiles sur le point de terminaison de jeton. Valeur par défaut : 7200 secondes