|
| 1 | +# Cahier des charges pour le Projet Sésame |
| 2 | + |
| 3 | +## Objectif du Projet |
| 4 | +Le projet Sésame vise à développer une application open source de synchronisation d'identités, permettant de gérer la synchronisation entre différentes sources de données (bases de données, annuaires LDAP/Active Directory, applications tierces). Le système se compose de deux modules principaux, l'orchestrateur et le daemon. Et de scripts et projets tel que les backends de synchronisation et les interfaces utilisateur frontend pour la configuration et la manipulation des données. |
| 5 | + |
| 6 | +## Fonctionnalités Principales |
| 7 | +1. **Orchestrateur :** |
| 8 | + - Gestion de la synchronisation des identités stockés dans MongoDB. |
| 9 | + - Maintenance d'une base d'identités pour faciliter la synchronisation. |
| 10 | + - Configuration flexible des schémas additionnels. |
| 11 | + - Exposition d'entrypoints via une API REST avec des tokens JWT. |
| 12 | + - Gestion du cycle de vie des identités. |
| 13 | + |
| 14 | +2. **Daemon :** |
| 15 | + - Déclenchement des scripts backend pour la synchronisation. |
| 16 | + - Utilisation de BullMQ et Redis pour la communication avec l'orchestrateur. |
| 17 | + |
| 18 | +3. **Schémas d'Identité :** |
| 19 | + - Utilisation du schéma LDAP `NnetOrgPerson` comme base de stockage dans MongoDB. |
| 20 | + - Configuration possible de schémas additionnels pour une variabilité des champs dans chaque enregistrement. |
| 21 | + - Définition du typage, des règles, et de la présence des champs dans les identités. |
| 22 | + - Pré-intégration de schémas optionnels, notamment `Supann` et/ou `Renater`. |
| 23 | + |
| 24 | +4. **Technologies Utilisées :** |
| 25 | + - Langages : NodeJS avec les frameworks NestJS et NuxtJS. |
| 26 | + - Communication daemon-Orchestrateur : BullMQ et Redis. |
| 27 | + - Authentification Orchestrateur : Comptes stockés dans MongoDB, possibilité de stocker les mots de passe dans un serveur tiers (OpenLDAP, ...). |
| 28 | + - Backends : Scripts système utilisant les sorties standards, indépendant du langage de l'application principale (Python, PowerShell, Perl, Bash, etc). |
| 29 | + |
| 30 | +5. **Interfaces Utilisateur Frontend :** |
| 31 | + - Configuration de l'orchestrateur. |
| 32 | + - Manipulation et completion des données à synchroniser. |
| 33 | + - Gestion des schémas d'identité. |
| 34 | + - Affichage des logs. |
| 35 | + |
| 36 | +## Exigences Techniques |
| 37 | +1. **Sécurité :** |
| 38 | + - Toutes les communications doivent être sécurisées par des protocoles cryptographiques standards. |
| 39 | + - Gestion sécurisée des tokens JWT pour l'API REST de l'orchestrateur. |
| 40 | + - Mise en place de mécanismes de chiffrement appropriés pour les données sensibles. |
| 41 | + |
| 42 | +2. **Extensibilité :** |
| 43 | + - Le système doit être conçu de manière modulaire pour permettre l'ajout aisé de nouveaux schémas d'identité et sources de données. |
| 44 | + |
| 45 | +3. **Documentation :** |
| 46 | + - Une documentation exhaustive doit être fournie pour permettre aux développeurs, administrateurs système et utilisateurs de comprendre et utiliser efficacement l'application. |
| 47 | + |
| 48 | +4. **Tests Automatisés :** |
| 49 | + - Les développements doivent être accompagnés de suites de tests automatisés pour garantir la stabilité et la fiabilité du système. |
| 50 | + |
| 51 | +5. **Performance :** |
| 52 | + - Le système doit être optimisé pour gérer un grand nombre d'identités et de sources de données tout en maintenant des performances élevées. |
| 53 | + |
| 54 | +## Livrables |
| 55 | +1. **Code Source :** |
| 56 | + - L'ensemble du code source doit être bien commenté et respecter les normes de codage définies. |
| 57 | + - Le code doit être versionné et accessible à travers la plateforme de gestion de versions GitHub. |
| 58 | + |
| 59 | +2. **Documentation Technique :** |
| 60 | + - Manuels d'installation et de configuration. |
| 61 | + - Guides d'utilisation pour les développeurs, administrateurs système et utilisateurs finaux. |
| 62 | + |
| 63 | +3. **Tests Automatisés :** |
| 64 | + - Les résultats des tests automatisés doivent être fournis en accompagnement du code source. |
| 65 | + |
| 66 | +## Planning |
| 67 | +Le projet sera découpé en sprints avec des jalons précis pour chaque fonctionnalité. Les délais de livraison doivent être respectés, et tout écart significatif doit être justifié et discuté avec l'équipe de gestion de projet. |
0 commit comments