L'application devra pouvoir gérer les droits d'accès, les appartenances à des groupes de sécurité des utilisateurs. Elle devra synthétiser tous les droits d'accès et les vérifier si possible que ce soit sur un serveur de fichier, NextCloud, SharePoint,... Application "Users Manager" qui doit permettre de gérer les utilisateurs de plusieurs applications : AD du domaine indirectement Keycloak GestUp IHTS et autres Tu devras utiliser la base de données "usersmanager" dans phpmyadmin. Ecris l'application avec Laravel en PHP. Applique toujours les règles de agents.md qui est à la racine du projet Ne modifie aucun paramètre de wampserver. Les comptes Admin doivent pouvoir sauvegarder et restaurer la base de données je te donnerai des informations au fur et à mesure de tes questions et de l'évolution. l'application devrait être découpée en plusieurs modules : Annuaire des personnes (identité, statut, informations de contact). Catalogue des applications (clients OIDC dans Keycloak, URL, responsables). Catalogue des ressources (partages Windows, sites SharePoint, autres ressources). Gestion des groupes (import LDAP, création, description, propriétaires). Profils métiers (ensemble cohérent d'applications, de groupes et de droits). Provisioning (création et mise à jour dans l'AD, Keycloak et les applications). Connecteurs pour les applications qui conservent des droits en base. Audit (qui a quoi, depuis quand, et pourquoi). Recommandations d’architecture pour le portail IAM Architecture modulaire Je recommande une architecture monolithe modulaire avec des modules fonctionnels : - Annuaire - Catalogue des applications - Ressources - Groupes - Profils métiers - Gestion des accès - Provisionnement - Connecteurs - Audit Chaque module possède ses propres contrôleurs, modèles, vues, routes et fournisseur de services. Points d’amélioration 1. Déplacer la logique métier hors des contrôleurs Les contrôleurs doivent rester très légers. Schéma : Contrôleur ↓ Service applicatif ↓ Modèle / Dépôt ↓ Services techniques (AD, Keycloak, etc.) 2. Séparer la personne du compte Au lieu d’un simple modèle Utilisateur : - Personne - Compte Une personne peut posséder plusieurs comptes : - Active Directory - Keycloak - Applications externes 3. Profils métiers Le module « Profils métiers » est une excellente idée. Un profil métier regroupe : - les applications - les groupes de sécurité - les autorisations - les ressources L’utilisateur reçoit un profil métier, pas directement des dizaines de groupes. 4. Provisionnement Le module de provisionnement orchestre les opérations. Les connecteurs réalisent les actions techniques. Provisionnement ↓ Connecteur Active Directory Connecteur Keycloak Connecteur SharePoint Connecteur Serveur de fichiers 5. Connecteurs Prévoir une interface commune : - découvrir() - synchroniser() - attribuer() - retirer() - vérifier() Cela facilitera l’ajout de nouveaux connecteurs. 6. Groupes Le modèle Groupe de sécurité devrait comporter notamment : - nom - source (AD, Keycloak, Local, Application) - identifiant externe - propriétaire 7. Audit Prévoir un journal d’audit contenant : - utilisateur - action - cible - anciennes valeurs - nouvelles valeurs - motif - adresse IP - date Ajouter également un type d’évènement : - UTILISATEUR_CREE - ACCES_ATTRIBUE - PROFIL_ATTRIBUE - GROUPE_MODIFIE - SYNCHRONISATION_EN_ECHEC 8. Routes Conserver les routes à l’intérieur de chaque module : Modules/Annuaire/routes/web.php Modules/Catalogue/routes/web.php … Chaque module reste autonome. 9. Chargement automatique Une seule déclaration PSR-4 suffit : App\ => app/ Il n’est pas nécessaire d’ajouter App\Modules\. 10. Évènements Utiliser les évènements Laravel. Exemple : Création d’un utilisateur ↓ Évènement UtilisateurCréé ↓ - Provisionnement AD - Création dans Keycloak - Journal d’audit - Notification Architecture cible Identité ↓ Profils métiers ↓ Gestion des accès ↓ Provisionnement ↓ Connecteurs Conclusion L’architecture proposée est solide. Les trois améliorations prioritaires sont : 1. Déplacer la logique métier dans des services applicatifs. 2. Séparer les notions de Personne et de Compte. 3. Faire des connecteurs une couche technique indépendante du provisionnement. Cette architecture permettra de faire évoluer facilement le portail IAM tout en restant simple à maintenir.