Modèle d'identité
Sur cette page
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) |
Dans la console#
Le menu Identités regroupe les utilisateurs, les groupes et les appareils (passkeys, TOTP…) du royaume sélectionné.
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. Avec OpenLDAP, les changements sont reçus par la synchronisation de contenu de la RFC 4533 : voir Annuaire OpenLDAP. Sans notification, le cache des identités expire au lieu d’être invalidé : voir Annuaires sans notification.
Dans la console, le menu Datastores liste ceux du royaume. La colonne Suffisant reprend l’option du même nom : quand plusieurs datastores sont configurés, la recherche d’une identité s’arrête au premier datastore « suffisant » qui la trouve. Avec un seul datastore, « Non » est normal.
API REST des 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 membresExemple : 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/schemaPé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}/privilegesExemples 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"Mis à jour le