Utiliser les webhooks avec UserLock

Les webhooks permettent à UserLock d’envoyer en temps réel des notifications de session vers d’autres applications, pour automatiser, superviser et intégrer vos systèmes tiers.

Publié le 15 octobre 2025

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

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 > ProjetApplication 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.