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.
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.
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.
Ouvrez la console UserLock.
Cliquez sur la roue ⚙️ (en haut à droite). Allez dans Général.
Dans la section Webhook, saisissez l’URL de votre application web
(par exemple :https://votreapp.azurewebsites.net/Home/Notify).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.).
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.
Si vous souhaitez le tester dans votre installation de test UserLock, configurez l'URL https://userlockwebhook.azurewebsites.net/Home/Notify.
⚠️ 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.
Visual Studio 2026
Composants installés :
ASP.NET et développement web.
Développement Azure (si la cible est une application Azure).
Un compte Azure (si la cible est une application Azure ; facultatif, utile pour le déploiement)
Dans Visual Studio, sélectionnez Fichier > Nouveau > Projet.
Choisissez le langage C#. Sélectionnez ASP.NET Core Web App (Model-View-Controller), puis cliquez sur Suivant.
Choisissez un nom de projet et un emplacement, puis cliquez sur Suivant.
Sélectionnez le framework .NET 10.0, choisissez Aucun pour le type d'authentification, puis cliquez sur Créer.
Dans le gestionnaire de packages NuGet :
Mettez à jour tous les packages existants.
Installez
Newtonsoft.Json(utilisé pour désérialiser les notifications JSON).
Ajoutez les deux classes suivantes dans le dossier Models :
public class UserLockServerModel {
public string Id { get; set; }
public string FQDN { get; set; }
public string DisplayName { get; set; }
}
public class UserLockUserLogonEventNotificationModel {
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; }
}Le contrôleur reçoit les notifications, les désérialise et les affiche en temps réel.
Vous trouverez des informations dans la documentation de Microsoft Azure.
Vous trouverez ci-dessous un exemple de méthode Notify pour gérer les requêtes POST entrantes.
[HttpPost]
public IActionResult Notify([FromBody] UserLockUserLogonEventNotificationModel data)
{
try {...}
catch (Exception) {...}
return Ok();
}Dans le fichier web.config, définissez la liste blanche des serveurs UserLock autorisés :
<appSettings>
<add key="UserlockIds" value="{GUID_principal};{GUID_secours};" />
</appSettings>Puis, dans votre contrôleur :
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.
Compilez le projet.
Publier > Microsoft Azure App Service.
Déployez l’application et vérifiez que les notifications s’affichent correctement.
Chaque message JSON contient un champ UserLock ID unique.
Votre application webhook doit vérifier cette valeur pour confirmer l’identité du serveur émetteur.
Exécutez les commandes suivantes sur le serveur UserLock :
Obtenir l’ID :
Get-UserLockServerConfiguration -Property 'ServerGuid'Réinitialiser l’ID (uniquement en cas de compromission) :
(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.
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.
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.