2010-07-26 12 views
3

Je fais quelque chose en PHP où je dois lire des valeurs de session pour une autre instance de session. exempleComment lire les valeurs de session forment une autre instance de session en PHP?

Navigateur1: $ _SESSION ['value'] = "user1";

Navigateur2: $ _SESSION ['value'] = "user2"; Browser1 aura besoin d'obtenir la valeur "user2" à partir de certaines requêtes. La demande comprendra également cookie (clé, valeur).

Comment puis-je faire cela?

Merci, Wa'el

+1

Voilà comment fonctionnent les sessions. – alex

+2

Qu'essayez-vous de faire? Il y a probablement un meilleur moyen d'atteindre votre objectif. – NullUserException

+0

bienvenue à stackoverflow –

Répondre

4

1 serveur PHP qui gère l'authentification unique (signe unique sur) l'autre est un applicarion Web fonctionne sur rubis sur des rails (ROR)

[...]

mais nous avons besoin de mettre en œuvre de nouvelles fonctionnalités où le serveur ROR doit soumettre une demande d'authentification à l'authentification unique au nom du navigateur

Votre modèle SSO n'a pas besoin de fonctionner de cette façon. En fait, ça ne devrait pas.

SSO fonctionne habituellement comme ceci. J'utilise des noms non standard parce que je suis fatigué et je ne me souviens pas de ce que leurs noms officiels sont les suivants:

  • utilisateur final. Le mec avec le navigateur qui doit être connecté
  • Page Server: Le site auquel l'utilisateur final tente de se connecter.
  • Serveur d'authentification: site qui possède réellement la version principale des données de l'utilisateur final.
  1. utilisateur final demande une page du Page Server.
  2. Page Server vérifie l'état de connexion existant de l'utilisateur final. Si l'utilisateur final n'est pas connecté, le Page Server redirige l'utilisateur final vers le serveur d'authentification avec un jeton unique .
  3. Le serveur d'authentification reçoit la demande de l'utilisateur final avec le jeton unique .Il fait tout ce qu'il doit faire pour enregistrer l'utilisateur.
  4. Une fois l'utilisateur connecté, le serveur d'authentification renvoie l'utilisateur final au serveur de pages avec un autre, différent, jeton unique.
  5. La requête envoyée par l'utilisateur final au serveur de pages entraîne le serveur de page à faire une demande au serveur d'authentification. La demande comprend à la fois le jeton unique original et le jeton différent, différent, unique.
  6. Le serveur d'authentification répond au serveur de pages avec des informations sur l'utilisateur ou un message d'erreur si les jetons ne sont pas valides. Une fois les données utilisateur récupérées, les jetons sont invalidés par le serveur d'authentification. Soit dit en passant, vous devez utiliser SSL pour l'ensemble de ce processus.)
  7. Le Page Server enregistre l'utilisateur et stocke toutes les informations dont il a besoin à propos de l'utilisateur final.

A aucun moment le Page Server « usurper » l'utilisateur final, et à aucun moment faire le Page Server ou le serveur d'authentification doivent toucher uns des autres Fin des données de session utilisateur.

A aucun moment, le Page Server n'obtient une copie des informations d'identification de l'utilisateur. L'authentification réelle de l'utilisateur final se produit uniquement sur le serveur d'authentification. Le Page Server demande des données sur l'utilisateur après que le serveur d'authentification a rebondi l'utilisateur avec le jeton de demande approprié.

Vous pouvez rendre ce processus plus complexe, si vous le souhaitez. Par exemple, l'URL renvoyée à l'utilisateur par le serveur d'authentification peut devoir être personnalisée. Vous pouvez inclure l'URL de retour avec la demande de l'utilisateur final au serveur d'authentification, mais si vous le faites, vous devez le signer (en utilisant, par exemple, HMAC) pour vous assurer qu'un crétin malveillant ne le manipule pas en cours de route.

Clair comme de la boue?

+0

Merci beaucoup pour la clarification, notre SSO fonctionne comme vous l'avez dit en son cœur. Voici mon problème dans plus de détails ... nous avons maintenant 3 serveurs: D SSO ROR Un autre service de la page permet de l'appeler APS pour faire court. Maintenant que l'utilisateur est connecté sur ROR, il y a un jeton unique pour ROR et SSO sur le navigateur. Le serveur ASP n'a aucune idée de ce qui se passe. À un certain point, le serveur ROR demandera à ASP de faire certaines actions (actions privilégiées) ASP doit s'assurer que cet utilisateur est connecté sur SSO avant d'effectuer cette tâche. Comment puis-je faire cela? – wael34218

+0

@ wael34218 Vous avez donc les applications A, B et C. L'utilisateur est connecté sur A et B, mais pas C. Vous voulez que A ou B dise à C que l'utilisateur fait quelque chose, n'est-ce pas?L'utilisateur a un identifiant unique pour les trois applications, n'est-ce pas? Si oui, ne devrait-il pas être facile de créer une API spécifique pour les actions que vous devez effectuer et qui peuvent accepter un * jeton signé * et l'identifiant unique de l'utilisateur? Il serait en effet dire, "Hey, App C? Oui, je suis App A. L'utilisateur 42 a besoin de foo les bars." L'application C vérifie alors le jeton et s'assure qu'il est légitime, puis effectue le suivi des barres en tant qu'utilisateur. Peut devenir collant si l'utilisateur n'existe pas dans C. – Charles

+0

(600 caractères ne suffit pas.) Le point étant que l'une des trois applications sait que l'utilisateur est l'utilisateur. L'autorité a dit, après tout. Créez un moyen pour * chaque application d'être en mesure de faire confiance aux demandes des autres * et de l'établir en tant qu'API. – Charles

1

Vous aurez besoin d'utiliser de créer une sorte de système de stockage de données est accessible à tous les utilisateurs de votre application. Cookies & Les sessions sont limitées à l'utilisateur/navigateur actuel.

Une base de données ou un fichier est un exemple de ce que vous devez utiliser.