# Authentification

## Aperçu

Cette section fournit les instructions sur comment configurer l'authentification déléguée WorkflowGen avec Okta. À la fin de la section, vous aurez une instance de WorkflowGen en fonctionnement qui utilise Okta pour authentifier vos utilisateurs.

{% hint style="info" %}
Si vous n'avez pas besoin de l'API GraphQL, vous n'aurez pas besoin de créer un serveur d'autorisation. Voir la section [Configurer l'authentification sans l'API GraphQL](https://docs.workflowgen.com/tech-fr/9.3/integration-okta/..#configurer-lauthentification-sans-lapi-graphql) pour obtenir des instructions.
{% endhint %}

## 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 un accès administrateur Okta pour pouvoir le configurer correctement.
* Assurez-vous d'avoir approvisionné un utilisateur Okta existant avec lequel vous pourrez vous authentifier à WorkflowGen et que cet utilisateur a les permissions d'accès d'administrateur. Ceci est important car une fois que vous aurez activé la délégation, vous devrez toujours pouvoir gérer l'application. (L'utilisateur Okta est en fait un utilisateur d'un fournisseur d'identité qui est lié à Okta, comme GitHub ou Google. Vous devez avoir approvisionné au moins un des utilisateurs.)
* Le mode de chiffrement AES et sa clé sont requis pour que l'authentification fonctionne.

{% hint style="warning" %}

* Le **nom d'utilisateur** de l'utilisateur WorkflowGen doit correspondre au **nom d'utilisateur** de son utilisateur Okta afin d'identifier et d'authentifier l'utilisateur correct d'Okta.
* Pour tester la configuration après avoir suivi les étapes suivantes, vous pouvez ajouter un utilisateur Okta dans la section **Users** du portail Okta.
* Lorsque vous importez des utilisateurs dans WorkflowGen depuis la base de données d'Okta, assurez-vous de définir le nom d'utilisateur comme son adresse email (p.ex. `jean.tremblay@exemple.com`).
  {% endhint %}

## Configuration de l'authentification avec l'API GraphQL

La configuration d'Okta se fait dans plusieurs étapes. D'abord, vous devez configurer un serveur d'autorisation dans l'interface Web; ensuite, vous devez y ajouter une application Web régulière.

{% hint style="warning" %}
La configuration de l'API WorkflowGen GraphQL (serveur d'autorisation) est **requise** si vous souhaitez utiliser l'application mobile **WorkflowGen Plus v2**.
{% endhint %}

### Étape 1 : Créez un serveur d'authentification

Un serveur d'autorisation Okta est un élément logique qui définit les limites de sécurité de votre système lorsqu'une application tente d'accéder à vos ressources depuis une API.

> An authorization server defines your security boundary, and is used to mint access and identity tokens for use with OIDC clients and OAuth 2.0 service accounts when accessing your resources via API. Within each authorization server you can define your own OAuth scopes, claims, and access policies.\
> \
> \&#xNAN;*Source : Encadré d'informations dans le panneau d'administration d'Okta*

Pour plus d'informations sur les serveurs d'autorisation, voir [le site Web des développeurs d'Okta](https://developer.okta.com/authentication-guide/implementing-authentication/set-up-authz-server) (disponible en Anglais seulement).

#### **Pour créer un serveur d'autorisation avec une utilisation classique :**

1. Accédez au portail des développeurs Okta et connectez-vous à votre compte.<br>
2. Dans le panneau de gauche, choisissez **API** dans le menu **Sécurité**.<br>
3. Cliquez sur **Add Authorization Server** dans l'onglet **Authorization Servers**.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/UUvW4zCkX3XfQUUvsiRG/image.png)<br>
4. Entrez les informations suivantes :
   * **Name :** `WorkflowGen GraphQL API`
   * **Audience :** `<workflowgen url>/graphql`
   * **Description :** `WorkflowGen GraphQL API` (ou la description que vous voulez)<br>

     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/fYfU5JTVteL9nYSZSZW2/image.png)<br>
5. Cliquez sur le bouton **Save**.

#### **Pour créer un serveur d'autorisation avec support multi-audiences :**

1. Accédez au portail des développeurs Okta et connectez-vous à votre compte.<br>
2. Dans le panneau de gauche, choisissez **API** dans le menu **Sécurité**.<br>
3. Cliquez sur **Add Authorization Server** dans l'onglet **Authorization Servers**.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/r10vk6fxcCYY6io2Rt6W/image.png)<br>
4. Entrez les informations suivantes :

   * **Name :** `My APIs`
   * **Audience :** `my-apis`
   * **Description :** `Authorization server for all my APIs` (ou la description que vous voulez)<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/wyHeCLTeRYIYIv1vK2Lo/image.png)<br>
5. Cliquez sur le bouton **Save**.

### Étape 2 : Ajoutez la portée

#### **Pour une utilisation classique :**

1. Accédez à l'onglet **Scopes** du serveur d'autorisation de l'API WorkflowGen GraphQL.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/8xJhjKxWu3o2D8TAWmN6/image.png)<br>
2. Cliquez sur le bouton **Add Scope**.<br>
3. Entrez les informations suivantes :

   * **Name :** `default`
   * **Display phrase :** `default`
   * **Description :** `Use the default scope if no other scope is specified`
   * **Default scope :** Cochez `Set as a default scope`<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/0SSeIiT72jojrYBTCqqD/image.png)<br>
4. Cliquez sur le bouton **Create**.

#### **Pour le support multi-audiences :**

1. Accédez à l'onglet **Scopes** du serveur d'autorisation de l'API WorkflowGen GraphQL.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/ygMnd0cCMZXj0HsN3NV2/image.png)<br>
2. Cliquez sur le bouton **Add scopes**.<br>
3. Entrez les informations suivantes :

   * **Name :** `wfgen-graphql-full-access`
   * **Display phrase :** `wfgen-graphql-full-access`
   * **Description :** `Full access to the WorkflowGen GraphQL API.`<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/ALOfYL5py4kWQz48wUkr/image.png)<br>
4. Cliquez sur le bouton **Create**.

Vous avez maintenant correctement configuré votre serveur d'autorisation Okta pour l'API WorkflowGen GraphQL.

### Étape 3 : Ajoutez une revendication

1. Naviguez à la section **Claims**, puis cliquez sur le bouton **Add Claim**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/xmfLWTCo8dQY4y9Ps3bL/image.png)<br>
2. Entrez les informations suivantes :

   * **Name :** `com.workflowgen.api.username`&#x20;
   * **Include in token type :** Sélectionnez `Access Token`
   * **Value Type :** Sélectionnez `Expression`
   * **Mapping :** Entrez le code Okta suivant :

     ```javascript
     appuser.username != null ? appuser.username : appuser.email != null ? appuser.email : appuser.nickame != null ? appuser.nickname : null
     ```
   * **Include in :** Sélectionnez `Any scope`

   ✏️ **Note :** Cette étape garantira que WorkflowGen et l'API GraphQL obtiendront toujours un nom d'utilisateur via la même revendication au lieu d'avoir à faire de nombreuses déclarations conditionnelles.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/kLV0SkALudx8ebM6dw3H/image.png)<br>
3. Cliquez sur le bouton **Create**.<br>
4. Ajoutez une **deuxième revendication** avec les mêmes informations, mais cette fois-ci réglez la propriété **Include in token type** sur `Id Token`.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/sE61Erby8t9IftNPAtFB/image.png)<br>
5. Cliquez sur le bouton **Create**.

### Étape 4 : Ajouter la stratégie d'accès au serveur

Vous devez maintenant configurer la stratégie d'accès au serveur d'autorisation.

1. Accédez à l'onglet **Access Policies** du serveur d'autorisation WorkflowGen GraphQL API.<br>
2. Cliquez sur le bouton **Add Policy**.\
   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/j9gnJ9z3FYi3qBK71A3D/image.png)<br>
3. Entrez les informations suivantes :
   * **Name :** `All Clients Policy`
   * **Description :** `Enables all clients to have access to this application server.`&#x20;
   * **Assign to :** `All clients` \
     \
     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/SLSBmKCkaWS1Jez7MZfX/image.png)<br>
4. Cliquez sur le bouton **Create Policy**.<br>
5. Cliquez sur le bouton **Add Rule**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/CpPA3glZwXA9Rrq7jOD9/image.png)<br>
6. Entrez les informations suivantes :
   * **Rule Name :** `All Grant Types; Any Scopes; Any User assigned`&#x20;
   * Laissez les autres paramétrages réglés sur leurs valeurs par défaut.<br>

     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/Ar0EWgaNcPZeZIsLI4og/image.png)<br>
7. Cliquez sur le bouton **Create Rule**.

Vous avez maintenant configuré avec succès la stratégie d'accès au serveur d'autorisation. Il ne reste plus qu'une étape pour que le flux d'informations d'identification du client fonctionne, ce qui vous permettra d'utiliser l'authentification de machine à machine avec Okta et l'API WorkflowGen GraphQL.

### Étape 5 : Créez l'application Web WorkflowGen

1. Accédez au portail des développeurs Okta.<br>
2. Dans l'élément **Applications** du menu **Applications**, cliquez sur le bouton **Create App Integration**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/UxkdAZ9yG7vtGHhjNzCR/image.png)<br>
3. Sélectionnez les options suivantes dans **Create a new app integration**, puis cliquez sur **Next** :

   * **Sign-in method :** `OIDC - OpenID Connect`
   * **Application type :** `Web Application` <br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/XKVFgLR4DF5GMomqoqls/image.png)<br>
4. Entrez les informations suivantes :
   * **App integration name :** `WorkflowGen`
   * **Grant type :** Cochez `Authorization Code`
   * **Sign-in redirect URIs :** `<workflowgen url>/auth/callback`
   * **Sign-out redirect URIs :** `<workflowgen url>/auth/logout/return`
   * **Base URIs :** `<workflowgen url>` sans aucun chemin, par example, `https://localhost`, si `<workflowgen url>` est `https://localhost/wfgen`
   * **Controlled access :** Cochez `Allow everyone in your organization to access`
   * Laissez les propriétés restantes réglées sur leurs valeurs par défaut.\
     \
     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/6wLILDCXwuc8PTTEZoob/image.png)

     <br>
5. Cliquez sur le bouton **Save**.
6. Dans l'onglet **General** dans la page de votre application Web WorkflowGen, cliquez sur le bouton **Edit** dans la section **General Settings**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/fizPgeQVWwp8NlE6peM5/image.png)<br>
7. Entrez les informations suivantes :

   * **Initiate login URI** : `<workflowgen url>/auth/callback`

   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/QutNZ2UMtI5Ukdt9CBtO/image.png)
8. Cliquez sur **Save**.

Vous avez maintenant configuré Okta pour votre instance de WorkflowGen.

### Vérifiez l'inscription

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

* Un ID client et un secret client, qui se trouvent dans l'onglet **General** de l'application Web **WorkflowGen** d'Okta.\
  \
  ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/pFLjjWaV0c3e3w8Wx0sT/image.png)<br>
* Une audience et un point de terminaison des métadonnées (`Metadata URI`), qui se trouvent sur la page du serveur d'autorisation **WorkflowGen GraphQL API** d'Okta.\
  \
  ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/UHhdGSLu7FKg2unp6Hoh/image.png)

### Configuration de WorkflowGen

Maintenant, vous devez configurer WorkflowGen pour déléguer son authentification à Okta.

#### Étape 1 : Ajoutez les valeurs Okta au `web.config` de WorkflowGen

Ouvrez le fichier `web.config` de WorkflowGen et **ajouter/modifier** les propriétés suivantes :

**Utilisation classique :**

```markup
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <!-- Okta auth -->
        <add key="ApplicationSecurityAuthProvider" value="okta"/>
        <add key="ApplicationSecurityAuthClientId" value="<CLIENT ID>" />
        <add key="ApplicationSecurityAuthClientSecret" value="<CLIENT SECRET>" />
        <add key="ApplicationSecurityAuthMetadataUrl" value="<METADATA URL>" />
        <add key="ApplicationSecurityAuthUsernameClaim" value="com.workflowgen.api.username" />
        <add key="ApplicationSecurityAuthAppIdClaim" value="sub" />
        <add key="ApplicationSecurityAuthClockTolerance" value="60" />
        <add key="ApplicationSecurityAuthSessionRefreshEnableIFrame" value="Y"/>
    </appSettings>
</configuration>
```

**Avec support multi-audiences :**

```markup
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <!-- Okta auth -->
        <add key="ApplicationSecurityAuthProvider" value="okta"/>
        <add key="ApplicationSecurityAuthClientId" value="<CLIENT ID>" />
        <add key="ApplicationSecurityAuthClientSecret" value="<CLIENT SECRET>" />
        <add key="ApplicationSecurityAuthMetadataUrl" value="<METADATA URL>" />
        <add key="ApplicationSecurityAuthUsernameClaim" value="com.workflowgen.api.username" />
        <add key="ApplicationSecurityAuthAppIdClaim" value="sub" />
        <add key="ApplicationSecurityAuthClockTolerance" value="60" />
        <add key="ApplicationSecurityAuthSessionRefreshEnableIFrame" value="Y"/>
        <add key="ApplicationSecurityAuthAudience" value="my-apis"/>
        <add key="ApplicationSecurityAuthAdditionalScopes" value="wfgen-graphql-full-access"/>
        <add key="ApplicationSecurityAuthGraphQLScope" value="wfgen-graphql-full-access"/>
    </appSettings>
</configuration>
```

* Remplacez `<CLIENT ID>` par l'ID client de l'application Web **WorkflowGen** d'Okta.
* Remplacez `<CLIENT_SECRET>` par le secret client de l'application Web **WorkflowGen** d'Okta.
* Remplacez `<METADATA_URL>` par la propriété **Metadata URI** qui se trouve dans la page des paramètres **WorkflowGen GraphQL API**. Ensuite, remplacez la dernière partie, `/.well-known/oauth-authorization-server`, par `/.well-known/openid-configuration` (p.ex. `https://{YOUR_OKTA_DOMAIN}/oauth2/{AUTH_SERVER_ID}/.well-known/openid-configuration`).&#x20;

Vous avez probablement remarqué que le paramètre avec la clé `ApplicationSecurityAuthUsernameClaim` est réglé sur la valeur entrée précédemment dans une règle. Par conséquent, vous pouvez utiliser n'importe quelle valeur ici à condition que vous modifiiez également la règle.

{% hint style="info" %}
Pour des informations sur les options de configuration disponibles à utiliser avec votre instance, consultez l'annexe [Paramètres de configuration Web et d'application](https://docs.workflowgen.com/tech-fr/9.3/annexe-parametres-de-configuration-web-et-dapplication).
{% endhint %}

WorkflowGen est maintenant lié à Okta et réciproquement. Il ne reste plus qu'à configurer quelques options supplémentaires afin de terminer le « câblage interne » de WorkflowGen afin qu'il puisse déléguer son authentification.

#### É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/modifier** la propriété suivante sous `<appSettings>` :

   ```markup
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
       <appSettings>
           <!-- Auth -->
           <add key="ApplicationSecurityAuthSessionTokenSigningSecret" value="<SECRET>" />
       </appSettings>
   </configuration>
   ```
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 **Gestionnaire IIS**, cliquez sur l'application WorkflowGen dans l'arborescence.<br>
2. Cliquez sur le bouton **Authentification**.<br>
3. Activez **Authentification anonyme** et désactivez toutes les autres authentifications.<br>
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. Ouvrez le fichier `web.config` de WorkflowGen et **ajoutez/modifiez** la propriété suivante :

   ```markup
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
    <system.webServer>
        <modules>
            <add name="ApplicationSecurityAuthenticationModule" type="Advantys.Security.Http.JWTAuthenticationModule" />
        </modules>
    </system.webServer>
   </configuration>
   ```
2. Dans le fichier `web.config` du module `auth`, **ajoutez/modifiez** la propriété suivante :

   ```markup
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
    <system.webServer>
        <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.<br>
3. Répétez les deux étapes précédentes pour les modules `hooks` et `scim`.<br>
4. Copiez les assemblys et bibliothèques de dépendances .NET suivants de `\wfgen\bin` dans les dossiers `\bin` de tous les formulaires Web personnalisés (`\wfgen\wfapps\webforms\<custom webform>\bin`) :
   * `Advantys.My.dll`
   * `Advantys.Security.dll`
   * `Newtonsoft.Json.dll`
   * `jose-jwt.dll`

{% hint style="success" %}
Vous devriez maintenant avoir une instance de WorkflowGen en fonctionnement avec l'authentification déléguée à Okta via le protocole OpenID Connect. Assurez-vous d'avoir approvisionné vos utilisateurs à WorkflowGen afin qu'ils puissent accéder à WorkflowGen.
{% endhint %}

## Configurer l'authentification sans l'API GraphQL

Si, pour une raison quelconque, vous ne pouvez pas ajouter de serveur d'autorisation dans votre compte Okta et que vous n'avez pas besoin de l'authentification API GraphQL configurée avec le fournisseur, vous pouvez éviter de créer le serveur et configurer WorkflowGen avec le serveur d'autorisation Okta par défaut.

### Étape 1 : Créez l'application Web WorkflowGen

1. Accédez au portail des développeurs Okta.<br>
2. Dans l'élément **Applications** sous le menu **Applications**, cliquez sur le bouton **Create App Integration**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/C4xHHQZjJXNHWLxlnOqA/image.png)<br>
3. Sélectionnez les options suivantes dans **Create a new app integration**, puis cliquez sur **Next** :

   * **Sign-in method :** `OIDC - OpenID Connect`
   * **Application type :** `Web Application`<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/zDCik2RAD01jSSKzyAQS/image.png)<br>
4. Entrez les informations suivantes :
   * **App integration name :** `WorkflowGen`
   * **Grant type :** Check `Authorization Code`
   * **Sign-in redirect URIs :** `<workflowgen url>/auth/callback`
   * **Sign-out redirect URIs :** `<workflowgen url>/auth/logout/return`
   * **Base URIs :** `<workflowgen url>` without any path (just the base URL); for example, `https://localhost`, if `<workflowgen url>` is `https://localhost/wfgen`
   * **Controlled access :** Check  `Allow everyone in your organization to access`
   * Laissez les propriétés restantes définies sur leurs valeurs par défaut.\
     \
     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/N4oYH9PXngAROXyXwXNT/image.png)\
     \
     ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/b6kpfm8mD2OTrz2rUGYj/image.png)<br>
5. Cliquez sur le bouton **Save**.
6. Dans l'onglet **General** de la page de votre application Web WorkflowGen, cliquez sur le bouton **Edit** dans la section **General Settings**.<br>

   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/Th4RrrnzjKRVJqo06V7U/image.png)<br>
7. Entrez les informations suivantes :

   * **Initiate login URI :** `<workflowgen url>/auth/callback`

   \
   ![](https://content.gitbook.com/content/rfuzFgG3gihyiBjSeqXv/blobs/BQ8wLQEThP8dSANajf4Y/image.png)
8. Cliquez sur **Save**.

Vous avez maintenant configuré avec succès Okta pour votre instance WorkflowGen.

### Étape 2 : Configurez WorkflowGen

Ajoutez ou modifiez les options de configuration suivantes dans le fichier `web.config` de WorkflowGen :

* Remplacez la valeur de `MetadataUrl` par `https://<YOUR OKTA DOMAIN>/.well-known/openid-configuration`.
* Remplacez la valeur de `UsernameClaim` par `preferred_username`.
* Remplacez la valeur de `AuthAudience` par l'ID client de l'application Web **WorkflowGen** configurée dans Okta.
* Réglez l'option `ApplicationSecurityAuthDecodeAccessToken` sur `N`.

{% hint style="warning" %}

* Gardez à l'esprit qu'en définissant `ApplicationSecurityAuthDecodeAccessToken=N`, la date d'expiration du jeton de session généré par WorkflowGen sera basée sur celle du jeton d'ID.
* Vous ne pourrez pas utiliser le jeton d'accès reçu d'Okta pour interroger l'API GraphQL. Ce jeton d'accès vous donnera accès à l'API Okta et à rien d'autre. Pour interroger l'API GraphQL, vous devrez configurer l'authentification de GraphQL avec une autre méthode, comme l'authentification de base.
  {% endhint %}

#### **Usage classique :**

```markup
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <!-- Okta auth -->
        <add key="ApplicationSecurityAuthProvider" value="okta"/>
        <add key="ApplicationSecurityAuthClientId" value="<CLIENT ID>" />
        <add key="ApplicationSecurityAuthClientSecret" value="<CLIENT SECRET>" />
        <add key="ApplicationSecurityAuthMetadataUrl" value="https://<YOUR OKTA DOMAIN>/.well-known/openid-configuration" />
        <add key="ApplicationSecurityAuthUsernameClaim" value="preferred_username" />
        <add key="ApplicationSecurityAuthAppIdClaim" value="sub" />
        <add key="ApplicationSecurityAuthClockTolerance" value="60" />
        <add key="ApplicationSecurityAuthSessionRefreshEnableIFrame" value="Y"/>
        <add key="ApplicationSecurityAuthAudience" value="<CLIENT ID>"/>
        <add key="ApplicationSecurityAuthDecodeAccessToken" value="N"/>
    </appSettings>
</configuration>
```

### Étape 3 : 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 paramètres supplémentaires au fichier `web.config`.

1. Ouvrez le fichier `web.config` de WorkflowGen et **ajoutez/modifiez** la propriété suivante :

   ```markup
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
       <appSettings>
           <!-- Auth -->
           <add key="ApplicationSecurityAuthSessionTokenSigningSecret" value="<SECRET>" />
       </appSettings>
   </configuration>
   ```
2. Remplacez `<SECRET>` par une valeur difficile à deviner, telle qu'un UUID.

Le secret ne sera accessible qu'à l'intérieur de votre instance de WorkflowGen, donc lors de la génération d'un jeton de session, WorkflowGen le signera avec ce secret afin de vérifier la validité de tous les jetons de session qui lui sont transmis.

### Étape 4 :  Activez la délégation de l'authentification

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

#### **Configurez IIS**

1. Dans **Gestionnaire IIS**, cliquez sur l'application WorkflowGen dans l'arborescence.<br>
2. Cliquez sur le bouton **Authentification**.<br>
3. Activez l'**Authentification anonyme** et désactivez toutes les autres authentifications.

Effectuez également ces étapes pour toutes les sous-applications.

#### **Ajouter 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 `Advantys.Security.JWTAuthenticationModule` de WorkflowGen, mais certains autres modules ne le doivent pas car ils sont publics ou ne font pas partie du système d'authentification global.

1. Ouvrez le fichier `web.config` de WorkflowGen et **ajoutez/modifiez** la propriété suivante :

   ```markup
   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
    <system.webServer>
        <modules>
            <add name="ApplicationSecurityAuthenticationModule" type="Advantys.Security.Http.JWTAuthenticationModule" />
        </modules>
    </system.webServer>
   </configuration>
   ```
2. Dans le fichier `web.config` du module `auth`, **ajoutez/modifiez** la propriété suivante :

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

   Cette ligne supprime le module d'authentification Node.js du système d'authentification global, car cette application Node.js encapsule les mécanismes d'authentification OpenID Connect.<br>
3. Répétez les deux étapes ci-dessus pour les modules `hooks` et `scim` également.<br>
4. Copiez les assemblys .NET et les bibliothèques de dépendances suivants de `\wfgen\bin` dans le dossier `\bin` de chaque formulaire Web personnalisé (`\wfgen\wfapps\webforms<formulaire Web personnalisé>\bin`) :
   * `Advantys.My.dll`
   * `Advantys.Security.dll`
   * `Newtonsoft.Json.dll`
   * `jose-jwt.dll`

{% hint style="success" %}
Vous devriez maintenant avoir une instance WorkflowGen fonctionnelle avec l'authentification déléguée à Okta via le protocole OpenID Connect. Assurez-vous d'avoir provisionné vos utilisateurs sur WorkflowGen afin qu'ils puissent accéder avec succès à WorkflowGen.
{% endhint %}
