Développer avec RBS Change : Authentification d'utilisateurs sur plusieurs sites
-
28/12/2011 11:31 Bonjour,
J'ai créé plusieurs sites dans mon projet Change, accessibles par des sous-domaines différents. Je souhaite que mes internautes qui s'authentifient sur un site, le soient sur les autres aussi. j'ai trouvé 2 méthodes :
- Faire de mes internautes inscrits des users/websitefrontenduser pour le site principal, et lier mes autres sites à mon site principal avec la propriété linkedwebsites du websitefrontendgroup de mon site principal
- Faire de mes internautes inscrits des users/frontenduser qui vont se loger tout droit dans le frontendgroup des utilisateurs enregistrés sur tous les sites
Malheureusement aucune de ces 2 méthodes ne fonctionne : quand je m'authentifie sur un site, je ne le suis pas sur les autres. Il semble que le domaine d'application des cookies reste le site courant et non pas le domaine qui les contient tous. Est-il possible de configurer ça ?
Merci d'avance -
48978.2 en réponse à 48978.1 écrit par David Guillot
28/12/2011 17:37 En ces périodes de trêve des confiseurs, il n'y pas grande monde sur la ligne.
Plaisanterie à part, il me semble en effet qu'une couche sso soit à rajouter, demander le dév. d'un module dans ce sens serait intéressant.
Désole ce n'est pas une réponse mais un simple point de vue -
03/01/2012 10:38 Bonjour,
Nous n'avons rien prévu en ce sens pour une authentification simultanée sur un ensemble de sites.
Dans le cas d'un ensemble de sites étant tous des sous-domaines d'un même domaine principal il y aurait théoriquement moyen de placer le cookie sur le domaine principal mais il me semble me souvenir qu'on n'a finalement rien fait en ce sens car cela ne fonctionnait pas avec tous les navigateurs.
Dans tous les cas pour que les utilisateurs soient les mêmes d'un site à l'autre, il vous faudra effectivement configurer les choses pour que les différents sites utilisent le même groupe d'utilisateurs (votre première idée en utilisant la propriété linkedwebsites). Sans cela il faudra se ré-inscrire sur chaque site. -
D'où ma nouvelle question : est-il possible d'injecter la classe ChangeSessionStorage dans notre module spé pour changer la portée du cookie de session ?
-
03/01/2012 11:58 Dans l'absolu, oui je pense que vous pouvez remplacer la classe par AOP (j'avais déjà décrit la manière de faire quelque part dans un autre sujet, une petite recherche devrait le retrouver).[EDIT : Voir plus bas]
Je ne suis par contre pas certain que vous arriverez à faire tout ce que vous voulez au niveau de cette classe... À tester.Édité par Gaël Port 13/01/2012 11:38
-
Bonjour,
Nous avons essayé d'injecter la classe ChangeSessionStorage. Celle ci devient bien dans le fichier "to_include" ChangeSessionStorage_replaced0. Cependant dans notre fichier "to_include" de notre classe, l'extend de ChangeSessionStorage n'est pas modifié en ChangeSessionStorage_replaced0. Est-ce du au fait que ChangeSessionStorage soit dans le framework? -
13/01/2012 11:37 Non ce n'est pas dû au fait qu'il est dans le framework, c'est plutôt dû au fait que la classe est utilisée très tôt dans la requête, sans passer par la mécanique d'autoload. Du coup effectivement ça ne marchera pas par AOP (contrairement à ce que je disais plus haut).
Par contre il y a un moyen quand même. Certaines de ces classes disposent d'une variable de configuration pour les remplacer. On en trouve la liste dans le fichier framework/config/project.xml (qui contient des valeurs par défaut pour ce qui peut être configuré dans les fichiers project.xml et project.PROFILE.xml du projet. La section concernée est config/mvc/classes. -
Bonjour,
Après avoir injecté avec succès la classe ChangeSessionStorage la session ne se met pas en place. Est-il nécessaire de copier/coller le contenu de la fonction ChangeSessionStorage dans la classe qui l'injecte? -
Je ne suis pas certain de bien comprendre ce que vous dites (mélange entre classe et fonction) mais a priori il faut surtout remplacer ChangeSessionStorage par une classe qui l'étend...
-
Oups désolé, je voulais parler de la méthode initialize() de la classe ChangeStorageSession... En fait on a finalement réussi, il se trouve qu'on avait plusieurs erreurs dans notre code spécifique, qu'on ne comprenait pas parce qu'on croyait que ce code n'était pas exécuté... Bref ça fonctionne bien, merci !
Merci de prendre connaissance et de respecter les règles des forums.

