---
locale: "fr"
updated_at: "2025-10-29T15:12:11.700Z"
canonical: "https://www.isdecisions.com/fr/userlock/docs/integrations/userlock-webhook"
---

# Utiliser les webhooks avec UserLock

Intégrer les événements UserLock à des outils externes via WebHooks.

## Introduction

UserLock peut envoyer des **notifications webhook** à chaque événement de session : ouverture ou fermeture de session, verrouillage, déverrouillage, refus de connexion, etc.
Chaque événement est transmis sous la forme d’un **message JSON** vers l’application web de votre choix, contenant des informations détaillées sur l’utilisateur, l’ordinateur, l’adresse IP, le type de session et l’heure.

Cela permet de :

- Alimenter un **SIEM** ou une **solution de supervision** avec des données de connexion détaillées.
- Intégrer UserLock à un **système RH ou de pointage**.
- Automatiser certaines actions (par exemple : désactiver un compte après une connexion suspecte).
- Synchroniser les événements UserLock avec des **systèmes de contrôle d’accès physiques**.
- Déclencher des **workflows personnalisés** via l’**API UserLock**.

## Fonctionnement

Lorsqu’un événement de session se produit, le serveur UserLock envoie une notification JSON à l’URL du webhook configurée.

Si un **serveur de secours** est déployé, il continue d’envoyer les notifications en cas d’indisponibilité du **serveur principal**.
Ainsi, les applications connectées via webhook ne subissent **aucune interruption de service**.

Les paramètres de webhook sont **synchronisés automatiquement** entre le serveur principal et le serveur de secours.
Ils ne peuvent donc être **configurés qu’au niveau du serveur principal**.

## Configuration

1. Ouvrez la **console UserLock**.
2. Allez dans les **Paramètres du serveur ▸** **Général**.
3. Dans la section **Webhook**, saisissez l’URL de votre application web
(par exemple : `https://votreapp.azurewebsites.net/Home/Notify`).
4. Cliquez sur le bouton de sauvegarde.

UserLock enverra désormais des notifications JSON pour chaque événement de session (connexion, déconnexion, verrouillage, déverrouillage, connexion refusée, etc.).

## Application d’exemple

Une application .NET de démonstration est disponible :
👉 [https://userlockwebhook.azurewebsites.net](https://userlockwebhook.azurewebsites.net)

Cette démonstration combine les notifications webhook UserLock avec un **service web tiers de géolocalisation**, qui détermine, pour chaque événement de connexion, le **pays d’origine** de l’utilisateur.

> **⚠️ Important**
>
> Les données affichées sont **publiques**. Il est donc **déconseillé** de tester cette application avec un environnement de production.
> Seules des informations **non sensibles** sont exposées : *type d’événement, heure, nom d’utilisateur, nom d’ordinateur, pays* et une partie de votre *ID UserLock*, pour identifier les notifications provenant de votre instance.

## Créer sa propre application 

### Prérequis

- Visual Studio 2017 ou version ultérieure
- Composants installés :
  - **ASP.NET et développement web**
  - **Développement Azure**
- Un **compte Azure** (facultatif pour le déploiement)

### Étape 1 – Créer le projet

1. **Fichier > Nouveau > Projet** → **Application Web ASP.NET (.NET Framework)**
2. Choisissez le modèle **MVC** et sélectionnez **Aucune authentification**

### Étape 2 – Ajouter les dépendances

Dans le **gestionnaire de packages NuGet** :

- Mettez à jour tous les packages existants
- Installez `Newtonsoft.Json`

### Étape 3 – Ajouter les classes de modèle

```cs
public class UserLockServer {
  public string Id { get; set; }
  public string FQDN { get; set; }
  public string DisplayName { get; set; }
}

public class UserLockNotification {
    public UserLockServer Userlock { get; set; }
    public int EventType { get; set; }
    public DateTime EventTime { get; set; }
    public string UserAccount { get; set; }
    public string UserDomain { get; set; }
    public string UserFullName { get; set; }
    public string ComputerName { get; set; }
    public int ComputerSession { get; set; }
    public string ClientName { get; set; }
    public string ClientAddress { get; set; }
    public string SessionId { get; set; }
    public int SubSessionId { get; set; }
    public int LogonInfo { get; set; }
    public int SessionType { get; set; }
    public string ServerAddress { get; set; }
    public int TimeZoneShift { get; set; }
    public string Param1 { get; set; }
    public string Param2 { get; set; }
    public string Param3 { get; set; }
    public string Param4 { get; set; }
    public string Param5 { get; set; }
    public string Param6 { get; set; }
}
```

### Étape 4 – Implémenter le contrôleur

Le contrôleur reçoit les notifications, les désérialise et les affiche en temps réel.
Vous pouvez vous appuyer sur l’exemple fourni dans la documentation Microsoft Azure.
L’exemple comporte une page `Index` avec actualisation automatique et une méthode `Notify` pour traiter les requêtes POST.

### Étape 5 – Ajouter une vérification de sécurité

Dans le fichier `web.config`, définissez la liste blanche des serveurs UserLock autorisés :

```xml
<appSettings>
  <add key="UserlockIds" value="{GUID_principal};{GUID_secours};" />
</appSettings>
```

Puis, dans votre contrôleur :

```cs
if (!_userLockIds.Contains(ul.Userlock.Id))
    return new HttpStatusCodeResult(HttpStatusCode.OK);
```

Ainsi, seules les notifications envoyées par des serveurs UserLock autorisés seront traitées.

### Étape 6 – Compiler et publier

1. Compilez le projet.
2. **Publier > Microsoft Azure App Service**.
3. Déployez l’application et vérifiez que les notifications s’affichent correctement.

## Sécurité

### Vérifier les sources de confiance

Chaque message JSON contient un champ **UserLock ID** unique.
Votre application webhook doit vérifier cette valeur pour confirmer l’identité du serveur émetteur.

### Récupérer ou réinitialiser le UserLock ID

Exécutez les commandes suivantes sur le serveur UserLock :

Obtenir l’ID :

```powershell
Get-UserLockServerConfiguration -Property 'ServerGuid'
```

Réinitialiser l’ID (uniquement en cas de compromission) :

```powershell
(Get-UserLockServerConfiguration).ResetGUID()
```

> **⚠️ Important**
>
> Réinitialiser l’ID est une opération exceptionnelle ; après cette action, toutes les applications webhook doivent être mises à jour pour accepter la nouvelle valeur.

## Exemples d’utilisation

Les webhooks permettent d’étendre les capacités d’automatisation et de supervision de UserLock :

- Envoyer les événements vers un **SIEM** (Splunk, Sentinel, QRadar).
- Déclencher des workflows via **PowerShell** ou l’**API UserLock**.
- Mettre à jour les **systèmes RH** ou de **gestion des temps**.
- Corréler les accès **logiques et physiques**.
- Détecter et réagir automatiquement à des **connexions anormales**.

## Limitations

Seuls les enregistrements de la table « UserLogonEvents » sont transmis au webhook. Les enregistrements des tables « UserStatus », « AdminActions » et « AdminActionResults » ne sont pas transmis au webhook.
