|
| 1 | + |
| 2 | +# Création et Modification d'Identité dans le Système |
| 3 | + |
| 4 | + |
| 5 | +## Sommaire |
| 6 | + |
| 7 | +- [Création et Modification d'Identité dans le Système](#création-et-modification-didentité-dans-le-système) |
| 8 | + - [Sommaire](#sommaire) |
| 9 | + - [Création d'Identité](#création-didentité) |
| 10 | + - [Endpoint pour la Création d'Identité](#endpoint-pour-la-création-didentité) |
| 11 | + - [Corps de la Requête (Body)](#corps-de-la-requête-body) |
| 12 | + - [Informations de Base (`inetOrgPerson`)](#informations-de-base-inetorgperson) |
| 13 | + - [Champs obligatoires :](#champs-obligatoires-) |
| 14 | + - [Champs facultatifs :](#champs-facultatifs-) |
| 15 | + - [Champs Additionnels](#champs-additionnels) |
| 16 | + - [Exemple de Corps de Requête](#exemple-de-corps-de-requête) |
| 17 | + - [Exemple de requete avec cUrl](#exemple-de-requete-avec-curl) |
| 18 | + - [États (`IdentityState`)](#états-identitystate) |
| 19 | + - [Gestion Automatique du `lifecycle`](#gestion-automatique-du-lifecycle) |
| 20 | + - [Réponse Attendue](#réponse-attendue) |
| 21 | +- [Modification de l'identité](#modification-de-lidentité) |
| 22 | + |
| 23 | + |
| 24 | +## Création d'Identité |
| 25 | + |
| 26 | +Pour créer une identité dans le système, suivez les instructions ci-dessous. Ces instructions sont destinées à des utilisateurs ayant une certaine connaissance technique, notamment en matière de requêtes HTTP. |
| 27 | + |
| 28 | +### Endpoint pour la Création d'Identité |
| 29 | + |
| 30 | +**URL:** `/management/identities` : Adresse de l'endpoint pour la création d'identité. |
| 31 | + |
| 32 | +**Méthode:** `POST` : Verbe HTTP utilisé pour créer une nouvelle ressource. |
| 33 | + |
| 34 | +**Header Requis** : `Content-Type: application/json` : Indique que le corps de la requête est au format JSON. |
| 35 | + |
| 36 | +### Corps de la Requête (Body) |
| 37 | + |
| 38 | +Lors de la création d'une identité, le corps de la requête doit inclure les informations de base de l'identité (`inetOrgPerson`), ainsi que tout champ additionnel nécessaire selon l'`objectClass` spécifique. Notez que l'objet `inetOrgPerson` est validé en dur et non via un fichier YAML. |
| 39 | + |
| 40 | +#### Informations de Base (`inetOrgPerson`) |
| 41 | + |
| 42 | +Les informations de base de l'identité sont définies dans l'objet `inetOrgPerson`. Les champs requis sont `cn` (Nom Commun), `sn` (Nom de Famille), et `uid` (Identifiant Unique). Ces champs sont validés en dur. |
| 43 | + |
| 44 | +##### Champs obligatoires : |
| 45 | +- `cn` |
| 46 | +- `sn` |
| 47 | +- `uid` |
| 48 | + |
| 49 | +##### Champs facultatifs : |
| 50 | +- `displayName` |
| 51 | +- `facsimileTelephoneNumber` |
| 52 | +- `givenName` |
| 53 | +- `labeledURI` |
| 54 | +- `mail` |
| 55 | +- `mobile` |
| 56 | +- `postalAddress` |
| 57 | +- `preferredLanguage` |
| 58 | +- `telephoneNumber` |
| 59 | +- `title` |
| 60 | +- `userCertificate` |
| 61 | +- `userPassword` |
| 62 | + |
| 63 | +### Champs Additionnels |
| 64 | + |
| 65 | +Pour les champs additionnels, assurez-vous que les valeurs sont conformes aux attentes du système. Voici comment il se structure : |
| 66 | + |
| 67 | +```json |
| 68 | +{ |
| 69 | + "additionalFields": { |
| 70 | + "objectClasses": [], |
| 71 | + "attributes": {} |
| 72 | + } |
| 73 | +} |
| 74 | +``` |
| 75 | + |
| 76 | +- `objectClasses` : Un tableau contenant les noms des `objectClasses` concernées. Par exemple, si vous attendez des informations supann, vous devez inclure une valeur `supann` en chaine de charactères dans ce tableau. |
| 77 | + |
| 78 | +- `attributes` : Un objet contenant les attributs spécifiques à chaque `objectClass`. Par exemple, si vous attendez des informations supann, vous devez inclure un objet `supann` contenant les attributs spécifiques à cette `objectClass`. |
| 79 | + |
| 80 | +ATTENTION : Les champs additionnels sont validés via des fichiers de configuration YAML spécifiques à chaque `objectClass`. Assurez-vous que les valeurs envoyées sont conformes à ces fichiers de configuration pour garantir le succès de la création de l'identité. Ces fichiers de configuration sont définis dans la documentation [Validation d'identité](https://libertech-fr.github.io/sesame-orchestrator/additional-documentation/documentation-utilisateur/documentation-du-systeme-de-validation-des-schemas-compl%C3%A9mentaires-de-l'identit%C3%A9.html) et doivent être nommés selon le nom de l'`objectClass` qu'ils définissent, par exemple `supann.yml` pour l'`objectClass` `supann`. |
| 81 | + |
| 82 | +### Exemple de Corps de Requête |
| 83 | + |
| 84 | +Voici un exemple de corps de requête pour la création d'une identité avec les informations minimales requises et un état (`state`) défini à `-1` pour indiquer une création : |
| 85 | + |
| 86 | +```json |
| 87 | +{ |
| 88 | + "state": -1, |
| 89 | + "inetOrgPerson": { |
| 90 | + "cn": "Nom Commun", |
| 91 | + "sn": "Nom de Famille", |
| 92 | + "uid": "Identifiant Unique" |
| 93 | + }, |
| 94 | + "additionalFields": { |
| 95 | + "objectClasses": ["supann"], |
| 96 | + "attributes": { |
| 97 | + "supann": { |
| 98 | + "supannEmpId": "123456", |
| 99 | + "supannCivilite": "M.", |
| 100 | + "supannBirthName": "Dupont", |
| 101 | + "supannBirthDate": "1980-12-15" |
| 102 | + } |
| 103 | + } |
| 104 | + } |
| 105 | +} |
| 106 | +``` |
| 107 | + |
| 108 | +### Exemple de requete avec cUrl |
| 109 | + |
| 110 | +```bash |
| 111 | +curl -X POST "http://<adresse-du-serveur>/identities" \ |
| 112 | + -H "Content-Type: application/json" \ |
| 113 | + -d '{ |
| 114 | + "state": -1, |
| 115 | + "inetOrgPerson": { |
| 116 | + "cn": "Nom Commun", |
| 117 | + "sn": "Nom de Famille", |
| 118 | + "uid": "Identifiant Unique" |
| 119 | + }, |
| 120 | + "additionalFields": { |
| 121 | + "objectClasses": ["supann"], |
| 122 | + "attributes": { |
| 123 | + "supann": { |
| 124 | + "supannEmpId": "123456", |
| 125 | + "supannCivilite": "M.", |
| 126 | + "supannBirthName": "Dupont", |
| 127 | + "supannBirthDate": "1980-12-15" |
| 128 | + } |
| 129 | + } |
| 130 | + } |
| 131 | + }' |
| 132 | +``` |
| 133 | + |
| 134 | +### États (`IdentityState`) |
| 135 | + |
| 136 | +Le state doit être défini à `-1` pour indiquer une création. Par la suite, le système gère automatiquement l'état de l'identité en fonction des actions de validations ou de syncronisation effectuées sur celle-ci. |
| 137 | + |
| 138 | +### Gestion Automatique du `lifecycle` |
| 139 | + |
| 140 | +Le cycle de vie de l'identité (`lifecycle`) est géré automatiquement par le système. Vous n'avez pas besoin de le spécifier dans votre requête. |
| 141 | + |
| 142 | +## Réponse Attendue |
| 143 | + |
| 144 | +En cas de succès, le système renvoie un statut `201 Created` avec les détails de l'identité créée. Si des informations supplémentaires sont requises, le statut peut être `202 Accepted` avec un message indiquant que des champs additionnels sont manquants ou invalides. |
| 145 | + |
| 146 | +# Modification de l'identité |
| 147 | + |
| 148 | +A venir. |
0 commit comments