SESSION entre 2 domaines (pas sur le même serveur)

Petit nouveau ! | 4 Messages

22 déc. 2016, 10:37

Bonjour

2 domaines : http://www.A.ext; http://www.B.ext (pas sur le même serveur)
J'ai besoin de passer des variables de SESSION de A vers B.

J'ai essayé de passer l'ID de SESSION en GET mais ça ne marche pas.


Mon code sur A :

@session_start();
$_SESSION['variable']="valeur"; // Une variable à passer au site B
header("Location: http://www.B.ext/?session_name=".sessio ... session_id());
exit;


Mon code sur B :

session_id($_GET['session_id']);
session_name($_GET['session_name']);
@session_start();
echo "Variable" . $_SESSION['variable'];


Résultat :
$_SESSION['variable'] ne s'affiche pas sur B

Merci du coup d'pouce.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 déc. 2016, 13:12

salut,

ce n'est pas possible.

enfin c'est possible dans le cas d'une architecture redondée d'avoir ce genre chose, cela permet d'éviter les interruptions de service si un répartiteur de charge passe une demande http d'un serveur à l'autre.

Dans ton cas tu as deux serveurs différents, voir deux applications différentes le partage de session n'est pas possible (risque de sécurité assez grand et réalisation technique complexe sans parler de la configuration pour savoir qui peut partager avec qui etc.).

Tu as peux de choix possibles, globalement il te faut réaliser un système sso (comme google peu le faire entre ses services, voir avec des services tiers).

ton site A gère un service de connexion qui fournit les données qui vont avec un jeton.
Lorsque tu met un lien vers le site B tu passes le jeton dans l'url (siteb.com.token=xxxxxxxxxxx) ou dans l'entête http si tu veux que cela soit globalement transparent (nécessite que tu gères le clic par une requête serveur sur A sur redirige sur b, c'est pt'et aussi réalisable en JS).

lorsque tu arrive sur le site B :
- Vérification d'un authentification locale (pour ne pas écraser)
- si pas d'auth locale est ce que le jeton existe ?
- si oui alors on demande au site A les informations liée au jeton.

Il existe différentes façon de créer un jeton, en ce moment j'opterais pour JWT qui permet d'avoir des données dans le jeton ainsi qu'un hash de vérification de l'intégrité.
Tu ne doit pas passer d'information sensible dans le jeton et surtout il ne faut authentifier juste parce que le jeton (par exemple avec un id) est présent (faille de sécurité, c'est relativement de récupérer une url utilisé, posté par mégarde sur un forum avec le jeton ou simplement un "sniffage" réseau).

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1967 Messages

22 déc. 2016, 14:38

Une question qui peut être pertinente aussi, quelle est la nature et la quantité d'information en session à transfèrer d'un site à l'autre ? ne serait ce pas possible de le faire en GET et de recréer une session sur le 2eme site ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 déc. 2016, 09:56

Une question qui peut être pertinente aussi, quelle est la nature et la quantité d'information en session à transfèrer d'un site à l'autre ? ne serait ce pas possible de le faire en GET et de recréer une session sur le 2eme site ?
c'est une bonne idée si cela ne concerne pas une authentification automatique.

Dans tout les il n'y a rien de bidirectionnel en automatique sinon il faut une base de données partagé et des webservices pour y accéder, c'est réalisable de façon simple, bien que cela demande de réfléchir correctement à l'architecture et sera plus coûteux que les deux sites en questions ;) )


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 4 Messages

24 déc. 2016, 09:19

Bon... je me doutais que ça serait compliqué !

Je vais me prendre la tête un petit moment avec cette histoire de jeton...
Et j'envisagerai une autre structure si c'est trop lourd à mettre en oeuvre.

Merci beaucoup pour vos réponses.