2009-10-03 7 views
1

Actuellement, construire un site dans ASP.NET MVC et y intégrer un autre site, dans un IFrame. C'est le souhait du client d'avoir une connexion pour les deux systèmes, ainsi l'utilisateur se connecte au site parent, puis est automatiquement authentifié sur le site IFramed. Bien sûr, si cela était possible, on pourrait supposer que les deux ensembles d'identifiants de connexion étaient les mêmes. Donc, là de toute façon cela peut être fait facilement?Authentifié sur deux sites distincts avec un login (et en utilisant un IFrame). Possible?

Cela vaut la peine de noter que nous n'avons aucun contrôle réel sur le site IFramed. C'est essentiellement un site que notre client fournit à ses clients pour le traitement des paiements.

Merci d'avance!

Répondre

2

(je suppose ou WS * OpenID -Fédération est hors de question?)

Si les informations d'identification sont les mêmes, vous ne pourriez pas simplement présenter les lettres de créance au iframe avant de soumettre votre propre formulaire de connexion?

Si vous souhaitez d'abord vérifier les informations d'identification, puis les envoyer à votre serveur, vérifiez qu'elles sont renvoyées au client sous la forme d'un extrait javascript qui effectue ensuite l'authentification iframe. (Mais sachez que vous enverrez les informations d'identification au client comme javascript.)

Un exemple qui pourrait fonctionner pour vous:

Supposons que votre URL de connexion est http://yourdomain/login et vous devez également vous connecter à Yourdomain/login veut deux variables post "username" et "pwd" alors que thirdparty/login veut "uname" et "password". Essayez d'inclure jQuery dans votre projet (il y a des façons de le faire en javascript seul, mais vous devrez vérifier ce que fait jQuery en arrière-plan - mais je vous suggère fortement de ne pas réinventer la roue si vous ne le faites pas devoir).

// this is the jQuery startup function, called once the page is loaded 
$(function() 
{ 
    // register an event for the form submit 
    $("form[@action*='login']").submit(function(event){ 
     // get username and pwd from the form 
     var _user = $("#username").val(); 
     var _password = $("#pwd").val(); 

     // and submit to the second login page 
     $.post("http://thirdparty/login", { user: _user, password: _password }); 

     // once the method returns and you don't do return false then the login form  will be submitted as usual. 
    }); 

}); 

Il se peut qu'il y ait un problème ici: vous envoyez une URL différente du serveur qui a servi la page. Cela peut ne pas être autorisé, mais vous pouvez le contourner en envoyant l'action de publication de la page de connexion d'origine à la page tierce et vous connecter à votre propre système en utilisant le code ci-dessus.

Référence: JQuery Poster: http://docs.jquery.com/Ajax/jQuery.post JQuery Intercept Form Submit: http://blog.james-carr.org/2008/01/17/jquery-binding-submit-on-a-forms-action-attribute/

+0

Yep - pas ici Openid. le site que nous hébergeons dans un iframe est plutôt vieux pour dire le moins. merci pour vos conseils. seriez-vous en mesure de fournir plus de détails sur la façon dont j'irais passer des informations d'identification à l'iframe? cela devrait-il être fait via javascript (un peu d'un noob ici) – Sergio

+0

a ajouté un exemple pour la référence –

+0

Brillant - merci beaucoup! – Sergio

Questions connexes