Aller au contenu principal

Ressources

Gestion avancée des ressources dans la base Directory.

Vue d'ensemble

Les ressources dans APS désignent l'ensemble des entités stockées dans la base Directory : utilisateurs, groupes, services, rôles, acteurs. La gestion des ressources permet de configurer finement l'annuaire de l'application.

Types de ressources

Types standards

Les types de ressources standards sont :

user : Utilisateurs/Personnes

  • Représente les utilisateurs de l'application
  • Peuvent se connecter
  • Possèdent un mot de passe
  • Attributs : fonction, email, téléphone, etc.

group : Groupes

  • Regroupements logiques d'utilisateurs
  • Utilisés pour les droits d'accès
  • Gérés via relations

service : Services/Entités organisationnelles

  • Structure hiérarchique de l'entreprise
  • Peuvent avoir un responsable
  • Utilisés pour l'affectation

role : Rôles

  • Définissent des responsabilités
  • Utilisés dans les workflows
  • Attribués aux utilisateurs

actor : Acteurs de workflow

  • Intervenants spécifiques aux processus
  • Peuvent être des rôles, groupes ou utilisateurs

Types personnalisés

Il est possible de créer des types de ressources personnalisés via la table DirectoryResourceTypes.

Structure des ressources

Propriétés principales

Chaque ressource possède :

public class DirectoryResource
{
public string Id { get; set; } // GUID unique
public string Type { get; set; } // Type de ressource
public string Reference { get; set; } // DN (Distinguished Name)
public string DisplayName { get; set; } // CN (Common Name)
public int Origin { get; set; } // Origine (0=manuel, 1=LDAP, etc.)
}

Id : Identifiant unique (GUID) Type : Type de la ressource (user, group, service, role, actor) Reference (dn_name) : Nom complet unique, utilisé comme clé fonctionnelle DisplayName (cn_name) : Nom d'affichage, peut être modifié Origin : Source de la ressource

  • 0 = Création manuelle
  • 1 = Import LDAP/AD
  • 2 = Import CSV
  • 3 = Import Azure AD

Attributs personnalisés

Les attributs additionnels sont stockés dans DirectoryResourceAttributes :

public class DirectoryResourceAttribute
{
public string ResourceId { get; set; } // Lien vers la ressource
public string Name { get; set; } // Nom de l'attribut
public string Value { get; set; } // Valeur de l'attribut
}

Attributs courants :

  • mail : Adresse email
  • function : Fonction
  • telephone : Numéro de téléphone
  • mobile : Numéro mobile
  • service : Service d'appartenance
  • manager : Responsable hiérarchique

Accès aux ressources

Dans Process Studio

  1. Menu OrganisationRessources
  2. Affichage de toutes les ressources
  3. Filtrage par type
  4. Recherche par nom

Vue Liste complète

La vue "Toutes les ressources" permet de :

  • Visualiser toutes les ressources
  • Filtrer par type
  • Modifier en masse
  • Exporter

Fiche ressource

Double-clic sur une ressource pour ouvrir sa fiche :

  • Onglet Identité : Informations de base
  • Onglet Attributs : Attributs personnalisés
  • Onglet Relations : Relations avec autres ressources
  • Onglet Sécurité : Paramètres de connexion (pour users)

Relations entre ressources

Types de relations

Les relations lient les ressources entre elles :

member_of : Appartenance à un groupe/service

Utilisateur --[member_of]--> Service
Utilisateur --[member_of]--> Groupe

manager_of : Responsabilité

Responsable --[manager_of]--> Service

has_role : Attribution de rôle

Utilisateur --[has_role]--> Rôle

Définition des relations

Les types de relations sont définis dans DirectoryRelationDefinitions :

public class DirectoryRelationDefinition
{
public string Name { get; set; } // Nom de la relation
public string FromType { get; set; } // Type source
public string ToType { get; set; } // Type cible
}

Gestion des relations

Les relations sont stockées dans DirectoryRelations :

public class DirectoryRelation
{
public string RelationName { get; set; } // Type de relation
public string FromValue { get; set; } // DN de la ressource source
public string ToValue { get; set; } // DN de la ressource cible
}

Opérations sur les ressources

Création

Manuelle :

  1. Bouton Nouvelle ressource
  2. Sélectionner le type
  3. Renseigner les attributs
  4. Valider

Programmatique :

DirectoryDataSource.InsertResources(
id: Guid.NewGuid().ToString(),
type: "user",
cnName: "John Doe",
dnName: "jdoe",
origin: 0
);

Modification

Mise à jour du nom affiché :

DirectoryDataSource.UpdateResources(
id: resourceId,
type: "user",
cnName: "John DOE", // Nouveau nom
dnName: "jdoe" // DN inchangé
);

Mise à jour d'attributs :

DirectoryDataSource.UpdateResourcesAttributes(
resourceId: resourceId,
name: "mail",
value: "john.doe@company.com"
);

Suppression

DirectoryDataSource.DeleteResources(resourceId);

⚠️ Attention : La suppression d'une ressource supprime également :

  • Tous ses attributs
  • Toutes ses relations
  • Son accès à l'application

Recherche de ressources

Par clé

// Par DN (Reference)
var resource = DirectoryDataSource.GetResourceByKey(
keyName: "dn_name",
keyValue: "jdoe"
);

// Par ID
var resource = DirectoryDataSource.GetResourceByKey(
keyName: "id",
keyValue: guid
);

Par type

SELECT * FROM DirectoryResources 
WHERE type = 'user'

Par attribut

SELECT dr.* 
FROM DirectoryResources dr
INNER JOIN DirectoryResourceAttributes dra ON dr.id = dra.id_resource
WHERE dra.name = 'mail'
AND dra.value = 'john.doe@company.com'

Origine des ressources

Traçabilité

Le champ origin indique la provenance de la ressource :

  • 0 = Manuel : Créée manuellement dans Process Studio
  • 1 = LDAP : Importée depuis Active Directory via LDAP
  • 2 = CSV : Importée depuis fichier CSV
  • 3 = Azure AD : Importée depuis Azure Active Directory

Impact sur la synchronisation

Lors de la synchronisation :

  • Les ressources d'origine 1, 2, 3 peuvent être mises à jour automatiquement
  • Les ressources d'origine 0 sont préservées (sauf suppression manuelle)

Verrouillage des ressources

DirectoryResourceLocks

Les ressources peuvent être verrouillées temporairement :

public class DirectoryResourceLock
{
public string ResourceId { get; set; } // Ressource verrouillée
public string LockedBy { get; set; } // Qui a verrouillé
public DateTime LockedAt { get; set; } // Quand
}

Utilisé pour :

  • Édition concurrente
  • Synchronisation en cours
  • Opérations de masse

Attributs spéciaux

Pour les utilisateurs

Attributs d'authentification :

  • password : Hash du mot de passe
  • password_expiration : Date d'expiration
  • account_enabled : Compte actif/inactif

Attributs de contact :

  • mail : Email principal
  • telephone : Téléphone fixe
  • mobile : Téléphone mobile

Attributs organisationnels :

  • function : Poste occupé
  • service : Service d'appartenance
  • manager : Responsable hiérarchique

Pour les services

  • manager : Responsable du service
  • parent_service : Service parent dans la hiérarchie
  • is_company : Entité de type société (1/0)

Utilisation dans le code

DirectoryContext EF Core

public class DirectoryContext : DbContext
{
public DbSet<DirectoryResource> DirectoryResources { get; set; }
public DbSet<DirectoryResourceAttribute> DirectoryResourceAttributes { get; set; }
public DbSet<DirectoryRelation> DirectoryRelations { get; set; }
public DbSet<DirectoryResourceType> DirectoryResourceTypes { get; set; }
}

ResourceManager

public interface IResourceManager
{
Task<DirectoryResource> FindByIdAsync(string id);
Task<DirectoryResource> FindByReferenceAsync(string reference);
Task<DirectoryResource> CreateAsync(DirectoryResource resource);
Task UpdateAsync(DirectoryResource resource);
Task DeleteAsync(string id);
}

Bonnes pratiques

Nommage

  • DN (Reference) : Utiliser le login réseau ou identifiant unique
  • CN (DisplayName) : Utiliser le nom complet lisible
  • Éviter les caractères spéciaux dans le DN

Types de ressources

  • Utiliser les types standards autant que possible
  • Créer des types personnalisés seulement si nécessaire
  • Documenter les types personnalisés

Attributs

  • Limiter le nombre d'attributs personnalisés
  • Utiliser des noms d'attributs explicites
  • Ne pas stocker de données sensibles en clair

Performance

  • Indexer les attributs fréquemment recherchés
  • Éviter les requêtes sur tous les attributs
  • Utiliser le cache pour les ressources courantes

Références