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é
| Type | Description |
|---|---|
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 :
| Type | Backend |
|---|---|
DJLDAPv3Repo | TosDJ (ForgeRock Directory Java) — implémentation principale |
ADHelper | Active Directory |
ADAMHelper | AD Application Mode (AD LDS) |
DirectoryHelper | Annuaire 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"