2009-11-10 5 views
0

J'ai 2 applications, chacune dans différents domaines. Lorsqu'un utilisateur arrive à la première application, clique sur un lien, l'utilisateur est envoyé à la deuxième application.Des données persistantes inter-domaines?

Mon problème est le suivant: J'ai besoin de persister un sessionId de la première application à la deuxième application. Assez simple mais voici la capture. Je ne peux pas utiliser de chaîne de requête et je ne peux pas utiliser de cookies (puisque dans différents domaines). Je pensais, est-il un moyen d'insérer des valeurs personnalisées dans les en-têtes HTTP ou définir des valeurs de formulaire sur une page intermédiaire qui serait ensuite POST à ​​la deuxième application? Ainsi, le processus serait le suivant:

L'utilisateur clique sur un lien sur la première page, ce qui amène l'utilisateur à une page «intermédiaire», cette page «intermédiaire» définit une valeur sessionId dans le formulaire ou l'en-tête http, puis le La page "intermédiaire" envoie l'utilisateur à la deuxième application via un POST où l'application aura le sessionId.

Je ne peux pas utiliser un Server.Transfer car l'application n'est pas sur le même serveur. Aidez-moi?

+0

Pouvez-vous nous en dire un peu plus sur les raisons pour lesquelles vous devez persister dans sessionId? Est-ce seulement pour l'authentification/le contrôle d'accès? Ou les deux applications ont-elles besoin d'accéder aux données associées à l'utilisateur? Ou une autre raison? –

+0

C'est pour le contrôle d'accès. La deuxième application doit vérifier cette sessionId pour voir si l'utilisateur est autorisé à accéder. – iratz

+0

Dans ce cas, je recommande vivement/contre la mise en place d'un système qui contourne les contrôles de sécurité interdomaines intégrés aux navigateurs. Si vous créez votre application de sorte que l'ID de session puisse être envoyé à un autre domaine, il finira par être envoyé à un domaine malveillant. –

Répondre

0

Une façon de le faire est d'utiliser des services Web. Avant que l'utilisateur ne change de site, vous pouvez lui donner un jeton d'authentification unique qui a été convenu avant son départ.

Une autre chose que vous pourriez faire (ce n'est pas une bonne solution, mais cela fonctionne) est d'utiliser des cadres, et d'envoyer les informations de trame enfant via javascript (informations de connexion). Je n'aime vraiment pas cette méthode, car elle présente autant de problèmes qu'il vaut mieux éviter.

Ce que je veux dire:

  • services Web: Communiquer avec l'autre site pour dire « cet utilisateur est actuellement connecté ici, » vous pouvez le faire à la connexion (dépend combien vous faites confiance à l'autre domaine) ou vous pouvez le faire lorsque l'utilisateur demande à quitter
  • Donner à l'utilisateur un jeton d'authentification: Vous pouvez le publier en tant qu'élément de formulaire. Ou si vous aviez un accord avec les deux domaines, vous pourriez l'envoyer à une URL qui pourrait être interprétée plus tard comme une portion de confirmation de service de rediection + authentification. I.E .: domain.com/page/token+pageid-mixture
0

Vous pouvez essayer de faire une demande SOAP ou XML sécurisée avec un jeton sécurisé référençant un identifiant de session que vous avez stocké pour l'utilisateur dans une base de données partagée. Vous pouvez ensuite charger la session de l'utilisateur en fonction de l'identifiant de session stocké dans la base de données si une correspondance est trouvée.

+0

J'espère que je l'ai eu correctement, mais en fait stocker les informations de l'utilisateur dans la base de données et l'extraire en fonction d'un sessionId qui est envoyé via SOAP/XML.La seule chose qui me manque, comment le sessionId de la première application est-il conservé dans la deuxième application de sorte que l'appel SOAP peut utiliser le sessionId référencé? Je pourrais manquer quelque chose. – iratz

+0

Vous pouvez stocker toutes les données de session en utilisant l'encodage base64 avec l'ID de session dans la base de données. Vous rechercheriez ces données en fonction de votre jeton unique. Vous devez ensuite créer une session sur site2 en utilisant le même identifiant de session et remplir avec les données stockées. Si vous utilisiez la base de données pour stocker des sessions, vous pourriez peut-être passer cette étape et réutiliser simplement l'identifiant de session. –

0

Utilisez OpenID. Il est conçu à cette fin (authentification commune aux sites Web sur plusieurs domaines). Le protocole est en cours de développement depuis des années et a probablement rencontré et résolu de nombreux problèmes que vous seriez susceptible de rencontrer si vous développez votre propre solution.

Questions connexes