1

Hello !

Disons que j'ai 3 sites (site 1, 2, 3). Je veux une seule bdd utilisateurs, donc je veux que tout les comptes soient stockes sur site 1. Et je veux aussi que lorsque je me connecte sur un des sites, si je vais sur un autre, je sois deja logue(Comme si je vais sur gmail, si apres je vais sur youtube je suis logue). Mais comment faire ? Car je ne peux pas cree un cookie pour un autre domaine, et je ne peux pas aller chercher le cookie d'un autre domaine.

Merci ^^

2

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.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

3

Ok, il faudrait une iframe alors, c'est ce a quoi je pensais mais je trouvais ca moyen. Je vais continuer a lire qq articles, merci smile

4

Je ne vois pas d'autre moyen à première vue, les cookies étant restreints à leur propre domaine. Il y a bien les header Access Content Allow Origin qui permet à un site d'obtenir des infos d'un autre, un peu comme une whitelist, mais ils ne sont pas recommandés pour faire transiter des informations de sécurité, seulement des données non-sensibles.
Et puis, les iframes ne sont pas si "moyen" que cela smile
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

5

C'est un peu crado le coup de l'iframe, habituellement on trouve deux solutions :

- Soit quelque chose de similaire à ce que décrit Meowcate mais en utilisant des redirections plutôt que des iframes (et un secret partagé pour que site2 puisse recevoir l'info "l'utilisateur est loggé" de site1 sans que ce soit falsifiable)
- Soit un appel serveur/serveur de site1 à site2 pour lui transférer cette même info

C'est d'ailleurs à ma connaissance les deux modes que propose oauth2.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Ah oui, soyons d'accord : mon coup de l'iframe, c'est uniquement si tu veux que l'utilisateur soit "automatiquement" loggé sur tes autres sites en s'y rendant.
Si, une fois loggé sur un site, tu veux bien accepter qu'il ait besoin de cliquer sur un bouton "se logger" et que cela le logge automatiquement (mais requiert une action utilisateur, sinon il y aurait de la redirection/vérification à chaque page), l'approche de Zeph est préférable.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

7

Meowcate (./6) :
Ah oui, soyons d'accord : mon coup de l'iframe, c'est uniquement si tu veux que l'utilisateur soit "automatiquement" loggé sur tes autres sites en s'y rendant.
Si, une fois loggé sur un site, tu veux bien accepter qu'il ait besoin de cliquer sur un bouton "se logger" et que cela le logge automatiquement (mais requiert une action utilisateur, sinon il y aurait de la redirection/vérification à chaque page), l'approche de Zeph est préférable.

Non, tu peux avoir une redirection. Plein de systèmes de SSO fonctionnent ainsi (genre Schibboleth, CAS, …)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

8

Du coup tant que je suis la, si j'ai une base commune pour les users ou ils se logent, j'ai quand meme besoin des infos sur chaque site, plus d'autres infos specifiques aussi a chaque site pour chaque utilisateur. Du coup ca me fait copier des donnes a chaque fois (je sais qu'on peut faire des jointure entre differentes db, pareil pour FK, mais n'ayant jamais fait, je ne sais pas si c'est bien ou pas. Et si les db sont sur des serveurs differents, c'est plus possible) entre les bases pour les infos utilisateurs, je ne suis pas sur que ce soit le mieux non plus ^^

Vous feriez comment vous ?

Sinon je refais comme c'est maintenant pour pas me prendre la tete, 1 compte par site ^^

9

Les utilisateurs devraient être sur une seule de tes trois bases, j'ai des doutes sur la duplication, surtout concernant des comptes utilisateur. Quand l'utilisateur se connecte, quelque soit le site, tu enregistres toutes les données de cette table commune en session (du moins celles qui te serviront) et fait ainsi tes requêtes ultérieures en fonction des infos de session. À ce moment, il faut simplement gérer la modification des données utilisateur depuis un site autre que celui qui héberge les comptes.
Cela fonctionne bien si tu n'as pas besoin de liens entre les utilisateurs. Si tu as besoin de faire des recherches sur toute la table d'utilisateurs sur tous les sites en revanche, ça ne va pas aider en effet (si par ex tes users sur sur db1, et que sur db2 tu veux faire une recherche sur tous les objets XYZ qui ont été acheté par des users de sexe masculin). Et effectivement les liens entre DB séparées serait préférable, la plupart des moteurs de DB offrent cette possibilité.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique