Nous utilisons .NET MVC, et nous essayons de dynamiquement (à travers le contrôleur) définissez l'URL de l'iFrame. Cela a bien fonctionné sur FireFox et Chrome, mais pas Ie. Sur Ie seul le premier cas permet à l'utilisateur de se connecter correctement. Les sites v10 et v9 ne le font pas. Tous les sites utilisent les paramètres querystring pour se connecter. Leur source ressemble à ceci (source infructueuse dans IE) - aucune différence visible.IE (6 & 7) iFrame Querystring paramètres définis dans .NET MVC Page ne fonctionne pas, semble tronqué, mais apparaît dans Tact sur la page Source
En outre, nous avons essayé ce paramètre de sécurité IE7 entier Activé pour naviguer vers l'image dans un autre domaine - ce n'était pas le problème; ça ne marche toujours pas. Ne fonctionne pas non plus sur IE6. Les mêmes résultats que dans les captures d'écran ci-dessous.
Également le codage Html n'a pas fonctionné (non montré, mais essayé).
Toutes les idées seraient tellement génial!
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1"><title>
</title>
<style type="text/css">
td {
font-family: Arial;
font-size: small;
}
</style>
</head>
<body>
<form action="/Account/Navigate" method="post">
<table style="align: right; width: 100%;">
<tr>
<td align="right">
<input type="submit" name="butSubmit" value="WN" />
<input type="submit" name="butSubmit" value="MyDg" />
<input type="submit" name="butSubmit" value="V9" />
</td>
</tr>
</table>
<iframe id="displayFrame" src="http://my.totallyinsecuretopostthis.com/Login.aspx?&uname=sdavis&pword=04ab" style="width: 100%; height: 95%;"></iframe>
</form>
</body>
</html>
source de succès dans IE7:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1"><title>
</title>
<style type="text/css">
td {
font-family: Arial;
font-size: small;
}
</style>
</head>
<body>
<form action="/Account/Navigate" method="post">
<table style="align: right; width: 100%;">
<tr>
<td align="right">
<input type="submit" name="butSubmit" value="WN" />
<input type="submit" name="butSubmit" value="MyDg" />
<input type="submit" name="butSubmit" value="V9" />
</td>
</tr>
</table>
<iframe id="displayFrame" src="http://www.totallyinsecuretopostthis.com/users/428/login/700bc1c8d837f30fdbc03cfc03b58c02" style="width: 100%; height: 95%;"></iframe>
</form>
</body>
</html>
extrait de code (première vue, puis contrôleur):
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<SingleSignOnUser>" %>
<%@ Import Namespace="Wingnut.Data.Model"%>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title></title>
<style type="text/css">
td {
font-family: Arial;
font-size: small;
}
</style>
</head>
<body>
<% using (Html.BeginForm("Navigate", "Account", FormMethod.Post)) { %>
<% TempData["username"] = Model.WingnutUserEmail; %>
<% TempData["password"] = Model.PasswordHash; %>
<table style="align: right; width: 100%;">
<tr>
<td align="right">
<!-- always display this, but when click, make sure you are authenticated; else, prompt for correct
wingnut password -->
<input type="submit" name="butSubmit" value="WN" />
<% if (Model.IsV10User()) { %>
<input type="submit" name="butSubmit" value="MyDg" />
<% } %>
<% if (Model.IsV9User()) { %>
<input type="submit" name="butSubmit" value="V9" />
<% } %>
</td>
</tr>
</table>
<% string url = ViewData["iFrameURL"].ToString(); %>
<% if (ViewData["iFrameURL"].ToString() != "popup") { %>
<iframe id="displayFrame" src="<%=ViewData["iFrameURL"]%>" style="width: 100%; height: 95%;"></iframe>
<% } %>
(maintenant le code Controller :)
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Navigate(string butSubmit) {
_service = new SSOUserService();
SingleSignOnUser wnUser = _service.GetValidUser(TempData["username"].ToString(), TempData["password"].ToString());
ViewData["iFrameURL"] = "http://www.usatoday.com";
try {
//if you are supposed to bypass the intersect page...
if (wnUser != null) {
switch (butSubmit) {
case "WN":
if (wnUser.IsWingnutUser())
ViewData["iFrameURL"] = string.Format("http://www.totallyinsecuretopostthis.com/users/{0}/login/{1}", wnUser.WingnutId, wnUser.WingnutToken);
else {
// do popup to capture this person's correct, but uncaptured, Wingnut password
// try to authenticate, if can, save, and proceed
// else, give error message/popup finally
ViewData["iFrameURL"] = "popup";
ViewData["popupText"] = "Oops. During the Totallyinsecuretopostthis's recent Single Sign On effort, we require that you enter your Totallyinsecuretopostthis" +
"password for us here one time only for authentication to SomePlace:";
}
break;
case "MyDg":
if (wnUser.IsV10User()) {
ViewData["iFrameURL"] =
string.Format(@"http://my.totallyinsecuretopostthisv10.com/Login.aspx?&uname={0}&pword={1}",
wnUser.V10UserCredentials.LoginName,
wnUser.V10UserCredentials.Password);
}
break;
case "V9":
if (wnUser.IsV9User()) {
ViewData["iFrameURL"] =
string.Format(
@"https://login.totallyinsecuretopostthisv9.com/clients/OtherPages/ExternalSignIn.aspx?UserName={0}&Password={1}",
wnUser.V9UserCredentials.LoginName, wnUser.V9UserCredentials.Password);
}
break;
}
}
}
catch (Exception ex) {
ModelState.AddModelError("Errors", ex.Message);
}
return View("Navigation", wnUser);
}
Salut, Mehrdad. J'ai essayé de l'encoder Les deux dans le code derrière/controller, ainsi que dans la vue que votre exemple démontre ci-dessous - pas de chance. Ça ne marche toujours pas. Bonne idée, cependant. Nous avons une théorie qui fonctionne qu'il faut coder en quelque sorte. –