white security camera at daytime
white security camera at daytime

ServiceNow : Maîtriser l’API sn_uc.UserCriteriaLoader pour un contrôle d’accès dynamique

6 nov. 2025

Introduction

Dans un environnement ServiceNow, la gestion fine des droits d’accès est cruciale pour sécuriser les données et optimiser l’expérience utilisateur. L’API sn_uc.UserCriteriaLoader, bien que peu documentée officiellement, offre des fonctionnalités puissantes pour évaluer dynamiquement les critères utilisateur et contrôler l’accès aux ressources.

Chez Snowlab, nous utilisons cette API pour concevoir des solutions sur mesure, notamment dans le cadre de notre plateforme interne d’automatisation et de gestion des processus. Dans cet article, nous partageons notre expertise sur ses méthodes, ses cas d’usage et les bonnes pratiques à adopter.

1. Qu’est-ce que l’API sn_uc.UserCriteriaLoader ?

L’API sn_uc.UserCriteriaLoader permet d’évaluer les critères utilisateur (User Criteria) dans ServiceNow. Ces critères sont utilisés pour regrouper des utilisateurs selon des conditions spécifiques (par exemple : appartenance à une organisation, rôle, localisation, etc.) et ainsi contrôler leur accès à des éléments comme :

  • Les articles de la base de connaissances (KB)

  • Les éléments de catalogue (Catalog Items)

  • Les widgets du portail

  • Les données sensibles

Contrairement aux groupes d’utilisateurs classiques, les User Criteria permettent une évaluation dynamique et contextuelle, ce qui les rend particulièrement utiles pour des scénarios complexes.

2. Méthodes clés de l’API

a. getAllUserCriteria(userId)

Description : Retourne la liste de tous les critères utilisateur associés à un utilisateur donné. Cas d’usage : Identifier tous les critères auxquels un utilisateur correspond, par exemple pour auditer ses droits ou personnaliser son expérience.

Exemple de code :

var allCriterias = new sn_uc.UserCriteriaLoader.getAllUserCriteria(gs.getUserID());
gs.info("Critères utilisateur : " + JSON.stringify(allCriterias));

b. getMatchingCriteria(userId, listOfCriteriaIds)

Description : Retourne la liste des critères (parmi ceux fournis) auxquels l’utilisateur correspond. Cas d’usage : Vérifier si un utilisateur a accès à une ressource spécifique sécurisée par plusieurs critères.

Exemple de code :

var userCriterias = ['6b6df061ff2121009b20ffffffffff44', '0b5b0e6453631300afffddeeff7b1201'];
var matchingCriterias = sn_uc.UserCriteriaLoader.getMatchingCriteria(gs.getUserID(), userCriterias);
gs.info("Critères correspondants : " + matchingCriterias);

c. userMatches(userId, listOfCriteriaIds)

Description : Retourne un booléen indiquant si l’utilisateur correspond à au moins un des critères fournis. Cas d’usage : Simplifier une condition d’accès dans un script ou un workflow.

Exemple de code :

var userMatches = sn_uc.UserCriteriaLoader.userMatches(gs.getUserID(), userCriterias);
if (userMatches) {
    gs.info("L'utilisateur a accès à la ressource.");
} else {
    gs.info("Accès refusé.");
}

3. Bonnes pratiques et précautions

a. Une API peu documentée

L’API sn_uc.UserCriteriaLoader n’est pas officiellement documentée dans les dernières versions de ServiceNow. Cela signifie que :

  • Son comportement peut varier selon les versions.

  • Son utilisation doit être testée rigoureusement avant déploiement en production.

  • Il est recommandé de prévoir un plan de secours en cas de changement dans les futures mises à jour.

b. Performances et impact

  • Évitez d’appeler cette API dans des boucles ou des scripts exécutés fréquemment, car elle peut impacter les performances de l’instance.

  • Privilégiez le cache des résultats si possible.

c. Contexte d’exécution

Pour évaluer les critères d’un utilisateur spécifique (et non l’utilisateur courant), il peut être nécessaire de manipuler la session :

gs.getSession().putClientData('specificUser', sys_id_of_the_user);
var result = new sn_uc.UserCriteriaLoader.getAllUserCriteria(sys_id_of_the_user);
gs.getSession().putClientData('specificUser', null);

4. Exemple concret

Chez Snowlab, nous avons intégré cette API dans plusieurs projets pour :

  • Automatiser l’attribution de droits : En fonction des attributs utilisateur (département, localisation, rôle), nous dynamisons l’accès aux catalogues et aux connaissances.

  • Personnaliser les portails : Afficher ou masquer des widgets en fonction des critères utilisateur.

  • Sécuriser les données sensibles : Limiter l'affichage des données dans les portails dans les APIs.

Bonne nouvelle

Snowlab est agréé au crédit d'impôt innovation.

Une collaboration Snowlab,
ça vous dit ?

Basés à Bordeaux, nous intervenons partout en France pour des projets ServiceNow ambitieux et humains. Contactez-nous pour échanger sur votre projet et découvrir comment nous pouvons optimiser votre Service Portal ServiceNow !

Bonne nouvelle

Snowlab est agréé au crédit d'impôt innovation.

Une collaboration Snowlab,
ça vous dit ?

Basés à Bordeaux, nous intervenons partout en France pour des projets ServiceNow ambitieux et humains. Contactez-nous pour échanger sur votre projet et découvrir comment nous pouvons optimiser votre Service Portal ServiceNow !