Cette question de StackOverflow peut aider, et sauf erreur de ma part, c'est ainsi que fonctionne OAuth2 : un domaine à part qui se charge de l'authentification, et sur chaque site des redirections pour obtenir le token d'authentification.
Pour le fait d'être "automatiquement loggé", je ne sais pas si c'est très propre, mais c'est le premier truc qui me vient en tête.
Imaginons que tu étais sur monsite1.fr. En cliquant sur le bouton "Login", tu es redirigé vers monlogin.fr, le site qui gère tes authentifications.
Maintenant, tu te rends sur monsite2.fr :
- Le site vérifie si tu es loggé sur monsite2.fr (via son cookie de session)
- Une iframe discrète sur monlogin.fr est cachée sur ton site (header, footer, où tu veux, rien de "visible").
- Si tu n'es pas loggé, la page demande (via JS) à l'iframe le token d'authentification qui serait sa sortie sur la page que tu charges dans cette iframe.
- Si le token est présent, JS le récupère, et le fait traiter par le serveur (redirection, ajax, comme tu le sens) qui va décoder et identifier ce token, te loggant ainsi au passage. Au final, tu as soit un refresh de la page, soit besoin de refresh les parties du site qui nécessitent le login. Perso je préfère la première solution, la seconde étant si tu veux que ça paraisse le plus invisible possible (mais aussi potentiellement lourd)
- S'il n'y a pas de token, c'est que l'utilisateur n'est pas loggé du tout.
N'oublie pas que l'iframe doit se charger aussi, à chaque chargement (donc à chaque page de tes sites l'utilisant) à remonter sa durée de vie. Aussi elle doit apparaître même si l'utilisateur est déjà loggé sur le site qu'il visite.
Le soucis est qu'il te faut un espace spécialement dédié à l'authentification. Tu peux éventuellement utiliser un de tes sites (ex : monsite1.fr/global-authentification), ce qui ferait qu'en plus monsite1.fr ne devrait pas avoir besoin d'une iframe vers lui-même, puisque techniquement tu es déjà loggé sur le site.