> For the complete documentation index, see [llms.txt](https://documentation.efalia.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.efalia.com/documentations/efalia-doc/administration/ldap-sso.md).

# LDAP et SSO (Efalia Login)

### Vue d'Ensemble

Efalia Doc propose deux mécanismes complémentaires pour l'authentification et la gestion des utilisateurs :

{% columns %}
{% column %}
**LDAP / Active Directory**

Synchronisation des **comptes utilisateurs** depuis votre annuaire d'entreprise (Active Directory, OpenLDAP, etc.) vers Efalia Doc.

**Ce que ça apporte :** les utilisateurs sont créés automatiquement dans Efalia Doc à partir de votre référentiel RH, sans double saisie.

**Ce que ça ne fait pas :** le LDAP ne gère pas l'authentification (les utilisateurs continuent de se connecter avec un mot de passe Efalia Doc).
{% endcolumn %}

{% column %}
**SSO via Efalia Login**

Authentification unique basée sur **Efalia Login** (Keycloak), qui peut lui-même être connecté à votre Azure AD / Microsoft Entra ID (OpenID Connect).

**Ce que ça apporte :** vos utilisateurs se connectent avec leur compte entreprise (Microsoft 365, Azure AD…), sans mémoriser un mot de passe Efalia Doc séparé.

**Ce que ça ne fait pas :** Efalia Login ne synchronise pas automatiquement les comptes (une première connexion est nécessaire pour créer le compte).
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
💡 Les deux mécanismes sont **complémentaires et indépendants**. Vous pouvez utiliser le LDAP seul (synchronisation sans SSO), Efalia Login seul (SSO sans sync LDAP), ou les deux ensemble.
{% endhint %}

***

### Configuration LDAP

#### Paramétrage du serveur LDAP

{% hint style="warning" %}
⚠️ **Action Efalia requise**

Le paramétrage du serveur LDAP (informations de connexion, DN, etc.) est réalisé par **Efalia dans le QG** (back-office central), et non directement depuis l'interface d'administration d'Efalia Doc. Transmettez les informations ci-dessous à votre contact Efalia.
{% endhint %}

Les informations à transmettre à Efalia pour le paramétrage :

| Paramètre                 | Description                                                                    |
| ------------------------- | ------------------------------------------------------------------------------ |
| **DN**                    | Distinguished Name du compte de service utilisé pour requêter le LDAP          |
| **Mot de passe**          | Mot de passe du compte de service                                              |
| **DN Liste Utilisateurs** | Base DN de l'unité organisationnelle contenant les utilisateurs à synchroniser |
| **Attribut identifiant**  | Champ LDAP utilisé comme identifiant (`sAMAccountName` par défaut)             |

#### Synchronisation Manuelle

Une fois le LDAP configuré, vous pouvez lancer une synchronisation manuelle depuis Efalia Doc avec un **compte administrateur**.

{% stepper %}
{% step %}
**Accéder à la synchronisation LDAP**

Dans le **Menu Administration**, accédez à la section **LDAP** ou **Utilisateurs** selon votre version d'interface. Le bouton de synchronisation manuelle est disponible à cet endroit.

📸 **CAPTURE : admin-ldap-01-bouton-synchronisation.png**

> Capture du bouton de synchronisation LDAP dans l'interface d'administration
> {% endstep %}

{% step %}
**Lancer la synchronisation**

Cliquez sur le bouton de synchronisation. L'opération se déroule en arrière-plan.

**Comportement lors d'une synchronisation :**

* **Nouveaux utilisateurs LDAP** → créés dans Efalia Doc
* **Utilisateurs supprimés du LDAP** → supprimés s'ils n'ont réalisé aucune action dans Doc, **désactivés** s'ils ont un historique d'actions
* **Utilisateurs existants** → conservés sans mise à jour (les modifications LDAP ne sont pas répercutées automatiquement)
  {% endstep %}

{% step %}
**Vérifier le résultat dans le Journal fonctionnel**

Chaque synchronisation est enregistrée dans le **Journal fonctionnel** d'Efalia Doc, avec le nombre de nouveaux utilisateurs importés et d'utilisateurs supprimés/désactivés.

📸 **CAPTURE : admin-ldap-02-journal-synchronisation.png**

> Capture du Journal fonctionnel affichant une entrée de synchronisation LDAP avec les compteurs
> {% endstep %}
> {% endstepper %}

#### Synchronisation Automatique

Il est possible de configurer une **synchronisation automatique** via l'API d'Efalia Doc, pilotée par des tâches CRON depuis Efalia Utilities.

{% hint style="info" %}
💡 La mise en place de la synchronisation automatique est réalisée par l'**équipe projet Efalia** lors du déploiement. Contactez votre référent technique Efalia pour la configurer.
{% endhint %}

#### Visualisation des Utilisateurs LDAP

Les utilisateurs synchronisés depuis un LDAP sont identifiables dans la liste des utilisateurs grâce à un **indicateur visuel** précisant leur origine LDAP.

📸 **CAPTURE : admin-ldap-03-indicateur-ldap-utilisateur.png**

> Capture de la liste des utilisateurs avec l'indicateur LDAP sur les comptes synchronisés

{% hint style="warning" %}
⚠️ **Utilisateurs LDAP non modifiables depuis Efalia Doc**

Les comptes synchronisés depuis un LDAP **ne peuvent pas être modifiés** depuis Efalia Doc, et leur mot de passe ne peut pas y être changé (le mot de passe est géré exclusivement dans le LDAP).
{% endhint %}

***

### Configuration SSO via Efalia Login (Azure AD)

Efalia Login (basé sur Keycloak) permet de mettre en place le Single Sign-On avec Azure AD / Microsoft Entra ID via le protocole OpenID Connect.

{% hint style="warning" %}
⚠️ **Prérequis**

* Une instance **Efalia Login** doit être déployée et opérationnelle
* Vous devez avoir accès à **l'administration Azure** de votre organisation (pour créer une application dans Azure AD)
* Efalia Doc doit être paramétré pour utiliser Efalia Login (configuration dans le QG Efalia)
  {% endhint %}

#### Étape 1 — Créer l'Identity Provider Azure AD dans Efalia Login

{% stepper %}
{% step %}
**Ouvrir l'administration d'Efalia Login**

Connectez-vous à l'interface d'administration Keycloak d'Efalia Login. Sélectionnez le **royaume** (realm) Efalia.
{% endstep %}

{% step %}
**Accéder aux Identity Providers**

Dans le menu, cliquez sur **Identity Providers**.
{% endstep %}

{% step %}
**Créer un IDP OpenID Connect**

Cliquez sur **Add provider** et choisissez **OpenID Connect v1.0**.

{% hint style="danger" %}
⚠️ **Ne pas utiliser l'option "Microsoft"**

Bien que l'option "Microsoft" soit disponible et fonctionnelle, elle ne permet pas certains réglages avancés nécessaires. Choisissez impérativement **"OpenID Connect v1.0"**.
{% endhint %}
{% endstep %}

{% step %}
**Renseigner les paramètres de base**

* **Alias :** `azure`
* **Display Name :** `Azure AD` (ce libellé s'affichera sur le bouton de connexion)
* **Discovery Endpoint :** `https://login.microsoftonline.com/{ID_ANNUAIRE}/.well-known/openid-configuration`

Pour trouver l'**ID de l'annuaire** dans Azure, rendez-vous dans : votre application Azure > Authentification unique > Accéder à l'application > copier le champ **ID de l'annuaire (locataire)**.
{% endstep %}

{% step %}
**Configurer l'authentification client**

* **Client Authentication :** `Client send secret as post`
* **Client ID :** Application (client) ID de votre application Azure

Pour trouver le **Secret ID** dans Azure : votre application Azure > Authentification basée sur OIDC > Certificat et Secret > Créer le secret. Copiez la valeur immédiatement — **elle n'est visible qu'une seule fois**.

Collez cette valeur dans le champ **Client Secret** de Keycloak.

Cliquez sur **Add** pour enregistrer l'Identity Provider.
{% endstep %}
{% endstepper %}

#### Étape 2 — Finaliser le paramétrage avancé

{% stepper %}
{% step %}
**Ouvrir les Advanced Settings**

Retournez dans l'IDP que vous venez de créer. Dans **Advanced Settings**, ouvrez l'accordéon **Advanced**.
{% endstep %}

{% step %}
**Configurer les scopes et options**

* **Scopes :** `openid profile email`
* **Trust email :** `Off` (les emails provenant d'Azure sont considérés comme vérifiés)
* **Sync mode :** `Force` (met à jour les données utilisateur à chaque connexion, pas seulement à la première)

Enregistrez ces paramètres.
{% endstep %}

{% step %}
**Créer le mapping email**

Pour lier l'information email du token Azure avec l'attribut email dans Efalia Login :

1. Cliquez sur l'onglet **Mappers**
2. Créez un Mapper avec les paramètres suivants :

| Paramètre           | Valeur               |
| ------------------- | -------------------- |
| Name                | `Email`              |
| Sync Mode override  | `Force`              |
| Mapper type         | `Attribute Importer` |
| Claim               | `email`              |
| User attribute name | `email`              |
| {% endstep %}       |                      |
| {% endstepper %}    |                      |

#### Étape 3 — Autoriser l'URL de redirection dans Azure

{% stepper %}
{% step %}
**Copier l'URI de redirection depuis Keycloak**

Toujours dans la configuration de l'IDP dans Keycloak, copiez le contenu du champ **Redirect URI** affiché en haut de la page.
{% endstep %}

{% step %}
**Configurer l'URI dans Azure**

Dans Azure, accédez à votre application > menu **Authentication** > **Add a Platform** > choisissez **Web** > collez l'URI copié.
{% endstep %}
{% endstepper %}

#### Étape 4 — Configurer Efalia Doc pour utiliser Efalia Login

Cette étape est réalisée dans le **QG Efalia Doc** :

1. Éditer le manifeste correspondant à l'instance Efalia Doc concernée
2. Renseigner l'**URL d'Efalia Login** et le **client secret**
3. Sauvegarder et **mettre à jour l'instance** pour que les nouveaux paramètres soient pris en compte

{% hint style="info" %}
💡 Pour vous connecter à Efalia Doc **sans passer par Efalia Login** (connexion locale de secours), utilisez l'URL : `{baseURL}/login/local`
{% endhint %}

#### Étape 5 — Tester la configuration

{% stepper %}
{% step %}
**Tester la connexion SSO**

Accédez à votre instance Efalia Doc. Le bouton **Azure AD** doit apparaître sur la page de connexion. Cliquez dessus et vérifiez que le flux d'authentification fonctionne.
{% endstep %}

{% step %}
**Première connexion et attribution des droits**

{% hint style="warning" %}
⚠️ **Workflow première connexion obligatoire**

Lors de la première authentification SSO, les comptes sont créés dans Efalia Login mais **sans droits dans l'application**. Le workflow à suivre est :

1. L'utilisateur s'authentifie une première fois → son compte est créé dans Efalia Login
2. L'administrateur **synchronise les comptes** dans Efalia Doc (ex : onglet utilisateurs)
3. L'administrateur **attribue les droits** (rôles, armoires…) à l'utilisateur
4. L'utilisateur peut alors se connecter normalement et accéder à l'application
   {% endhint %}
   {% endstep %}
   {% endstepper %}

***

### Points d'Attention — Efalia Login avec Efalia Process

{% hint style="warning" %}
**Changement d'identifiant utilisateur**

Efalia Login utilise l'**adresse mail Azure AD** comme identifiant. Si vos utilisateurs avaient un identifiant différent dans Efalia Process (ex : login Windows court), ce changement peut entraîner des **pertes de droits d'accès** dans Process.

**Action requise :** anticiper ce changement et réattribuer les droits dans Efalia Process après migration SSO.
{% endhint %}

{% hint style="warning" %}
**Connecteurs Process et LDAP incompatibles**

Les **connecteurs Efalia Process** qui récupèrent des attributs depuis un LDAP ne sont **pas compatibles** avec la connexion via Efalia Login. Certaines fonctionnalités de récupération d'attributs LDAP dans Process peuvent être limitées.
{% endhint %}

***

### Bonnes Pratiques

{% hint style="success" %}
**✅ À faire :**

* Tester la configuration SSO avec quelques utilisateurs pilotes avant déploiement général
* Anticiper le changement d'identifiant si migration depuis une authentification locale
* Prévoir une URL de connexion locale (`/login/local`) pour les comptes administrateurs de secours
* Documenter l'ID de l'annuaire et le Client ID Azure pour les futures mises à jour
* Conserver une copie du secret Azure dans un gestionnaire de mots de passe sécurisé
  {% endhint %}

{% hint style="danger" %}
**❌ À éviter :**

* Utiliser l'option "Microsoft" dans Keycloak (préférer OpenID Connect v1.0)
* Oublier de copier le secret Azure lors de sa création (il n'est visible qu'une seule fois)
* Mettre en production sans avoir testé le workflow complet (connexion + attribution des droits)
* Ignorer les droits Efalia Process lors d'une migration vers SSO
  {% endhint %}

***

### Questions Fréquentes

<details>

<summary>Quelle est la différence entre LDAP et Efalia Login / SSO ?</summary>

Le **LDAP** synchronise les comptes depuis votre annuaire vers Efalia Doc. Les utilisateurs sont ainsi créés automatiquement, mais ils s'authentifient toujours avec un mot de passe propre à Efalia Doc.

**Efalia Login** (SSO) permet aux utilisateurs de se connecter avec leur compte d'entreprise (Azure AD, Microsoft 365). Il n'y a plus de mot de passe séparé Efalia Doc.

Les deux mécanismes sont complémentaires : vous pouvez utiliser le LDAP pour synchroniser les comptes ET Efalia Login pour le SSO.

</details>

<details>

<summary>Les utilisateurs LDAP peuvent-ils changer leur mot de passe depuis Efalia Doc ?</summary>

Non. Les utilisateurs synchronisés depuis un LDAP ont leur mot de passe géré exclusivement dans le LDAP (Active Directory, etc.). Ils ne peuvent pas modifier leur mot de passe depuis Efalia Doc.

</details>

<details>

<summary>Que se passe-t-il si un utilisateur est supprimé du LDAP ?</summary>

Lors de la prochaine synchronisation, l'utilisateur sera soit **supprimé** (s'il n'a réalisé aucune action dans Efalia Doc), soit **désactivé** (s'il a un historique d'actions, pour conserver la traçabilité).

</details>

<details>

<summary>Peut-on utiliser le SSO Azure AD sans Efalia Login ?</summary>

Non. Efalia Login (Keycloak) est le composant qui gère l'authentification SSO. Il est indispensable pour brancher Azure AD sur Efalia Doc. Contactez Efalia pour mettre en place Efalia Login dans votre environnement.

</details>

<details>

<summary>Comment accéder à Efalia Doc si Efalia Login est en panne ?</summary>

Utilisez l'URL de connexion locale : `{baseURL}/login/local`. Cette URL bypasse Efalia Login et permet de se connecter avec un compte local Efalia Doc. À réserver aux comptes administrateurs de secours.

</details>

<details>

<summary>La synchronisation LDAP automatique est-elle possible ?</summary>

Oui, via l'API d'Efalia Doc et des tâches CRON configurées dans Efalia Utilities. Cette mise en place est réalisée par l'équipe technique Efalia lors du déploiement.

</details>

<details>

<summary>Peut-on avoir simultanément LDAP et SSO Azure AD sur la même instance ?</summary>

Oui. Les deux mécanismes sont indépendants. Vous pouvez synchroniser les comptes via LDAP et configurer Efalia Login pour le SSO. Les utilisateurs auront leurs comptes créés par le LDAP et s'authentifieront via Azure AD.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.efalia.com/documentations/efalia-doc/administration/ldap-sso.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
