Pour avoir bossé sur une problématique similaire, je peux te donner quelques conseils
Premièrement : Si tu as besoin des entités des autres "projets", il vaut mieux oublier l'approche "Microservices". En effet, si une entité doit bouger, tu vas devoir t'amuser à copier/coller les entités dans tous les projets où elles sont nécessaires. L'approche microservice se fait dans une optique où un service est 100% indépendant d'un autre.
Tu as toujours l'option de faire un sous-projet git avec toutes les entités/repo/etc qui seront communs ou de créer un package composer privé avec juste ces données (on voulait passer par un npm entreprise, mais on "avait pas le budget")
Deuxièmement : Évitez de vous répétez dans votre code, c'est un calvaire de gérer les bugfix, nouvelles features et autre dans plusieurs projets (Pour avoir dû le faire dans 15 microservices différents, c'était ignoble). Passez par une partie commune (voire partie précédente)
Troisièmement :
- Concernant la partie "une seule connexion", il a pas mal de services qui permettent de centraliser le tout (Je pense à Auth0 comme ça, mais il doit y en avoir d'autres).
- Tu peux aussi passer pas un système de Token comme on le fait via des API plus classiques.
- Tu dois pouvoir chiffrer tous tes cookies et sessions via une clé de chiffrement identiques parmis vos différents projets.
Quatrièmement : Faites en sorte d'avoir un dispatcher en entrée qui redirige vers les autres projets. C'est chiant à mettre à jour quand il y a une nouveauté, mais ça devrait vous éviter d'avoir plusieurs liens pour accéder aux différentes applications