Modèle d'identité


TOSIAM repose sur un modèle d’identité hérité du User Management Service (UMS) d’iPlanet/OpenAM, enrichi par une couche REST moderne. Les identités sont stockées dans un datastore LDAP configurable par realm.

Types d’identité

TypeDescription
Utilisateur (User)Compte d’une personne physique ou d’un service
Groupe statique (StaticGroup)Liste figée de membres
Groupe dynamique (DynamicGroup)Membres calculés par filtre LDAP
Groupe dynamique assignable (AssignableDynamicGroup)Filtre LDAP + membres manuels
Rôle géré (ManagedRole)Rôle assigné explicitement à des utilisateurs
Rôle filtré (FilteredRole)Rôle calculé par filtre (tous les utilisateurs répondant à un critère)

Datastores

Chaque realm peut configurer un ou plusieurs datastores. Les types supportés par tosiam-datastore :

TypeBackend
DJLDAPv3RepoTosDJ (ForgeRock Directory Java) — implémentation principale
ADHelperActive Directory
ADAMHelperAD Application Mode (AD LDS)
DirectoryHelperAnnuaire LDAP générique

La recherche persistante LDAP (DJLDAPv3PersistentSearch) permet à TOSIAM de recevoir les changements du datastore en temps réel, sans polling.

API REST — Identités

GET    /realms/{realm}/users              → lister les utilisateurs
POST   /realms/{realm}/users              → créer un utilisateur
GET    /realms/{realm}/users/{userId}     → lire un utilisateur
PUT    /realms/{realm}/users/{userId}     → mettre à jour
DELETE /realms/{realm}/users/{userId}     → supprimer

GET    /realms/{realm}/groups             → lister les groupes
POST   /realms/{realm}/groups             → créer un groupe
PUT    /realms/{realm}/groups/{groupId}/users → gérer les membres

Exemple : créer un utilisateur

POST /realms/root/realms/employees/users
{
  "username": "alice",
  "userpassword": "Secret1234!",
  "mail": ["alice@example.com"],
  "givenname": ["Alice"],
  "sn": ["Martin"]
}

Schéma des attributs

Le schéma de chaque attribut est consultable :

GET /identities/schema

Périphériques et MFA

Les périphériques enregistrés (WebAuthn, OATH, Push) sont rattachés à l’identité de l’utilisateur :

GET    /realms/{realm}/users/{user}/devices/webauthn   → FIDO2
GET    /realms/{realm}/users/{user}/devices/2fa/oath   → TOTP/HOTP
GET    /realms/{realm}/users/{user}/devices/push       → Push
DELETE /realms/{realm}/users/{user}/devices/{type}/{deviceId}

Privilèges

Les privilèges contrôlent les droits d’administration dans TOSIAM (différents des politiques d’autorisation applicatives) :

GET /identities/privileges/schema
GET /realms/{realm}/identities/group/{groupName}/privileges
PUT /realms/{realm}/identities/group/{groupName}/privileges

Exemples de privilèges : RealmAdmin, PolicyAdmin, AgentAdmin, LogAdmin.

Gestion via ssoadm

# Créer un utilisateur
ssoadm create-identity --realm / --idname alice --idtype User \
  --attributevalues "userpassword=Secret1234!" "mail=alice@example.com"

# Lister les utilisateurs
ssoadm list-identities --realm / --idtype User --filter "*"

# Ajouter un utilisateur à un groupe
ssoadm add-member --realm / --idname admins --idtype Group \
  --memberidname alice --memberidtype User

# Assigner un privilège
ssoadm add-privileges --realm / --idname admins --idtype Group \
  --attributevalues "PolicyAdmin"
Modifier cette page sur GitHub