J'ai plusieurs applications Web exécutées sur plusieurs domaines. Je souhaite implémenter l'authentification unique, afin qu'un utilisateur se connecte une fois pour accéder à toutes les applications.
Comment dois-je mettre cela en œuvre? Toutes les applications utilisent le backend NodeJS.
Les indications générales dans la bonne direction sont les bienvenues.
Comme vos applications s'exécutent sur différents domaines, vous ne pouvez en aucun cas partager des cookies entre ces APPS exécutés sur la machine cliente pour valider l'utilisateur. Donc, d'une manière ou d'une autre, les informations doivent être partagées côté serveur.
La solution la plus simple qui me vient à l’esprit est-
Avoir une session partagée pour tous les serveurs.
Créez un domaine d'authentification spécifique à Hava et redirigez-y les utilisateurs chaque fois que l'authentification est nécessaire. Authentifiez-vous là-bas et définissez un cookie de session ou un jeton comme vous le souhaitez.
Chaque fois qu'une de vos applications a besoin d'une authentification, redirigez-la vers le domaine d'authentification. Le cookie d'authentification sera servi au domaine d'authentification ainsi qu'au domaine référent. En voyant que vous êtes déjà validé, le serveur d'authentification peut vous rediriger vers l'application d'origine avec le bon identifiant de session, qui sera défini comme cookie pour ce domaine.
S'il n'est pas authentifié, l'utilisateur sera invité à s'authentifier sur le serveur d'authentification, puis la redirection se produira.
Avec peu de changements, vous pouvez y parvenir en utilisant des jetons et sans avoir besoin de sessions partagées.
Validez les états correctement avant de l'implémenter. Plus d'états dans votre mécanisme signifie plus de chances de bugs et d'attaques possibles.
Pensez à déplacer vos applications sur le même sous-domaine. Si le mécanisme d'authentification est le même, tout le monde sait que toutes les applications appartiennent à la même entreprise. Il sera également plus facile pour les gens de se souvenir de divers sous-domaines sur le même domaine plutôt que de se souvenir de tous les différents domaines.
Le projet le plus utilisé est http://passportjs.org/ qui est à peu près le seul que j'utilise, possède d'excellents connecteurs pour des solutions sur site comme ADFS et des solutions tierces comme google, facebook.