He resuelto este problema hoy. Empecé desde this article en C# Corner, pero encontré el ejemplo, aunque técnicamente correcto, un poco incompleto. Todo lo que dijo era correcto, pero tenía que visitar algunos sitios externos para armar esto y trabajar exactamente como yo quería.
No ayudó que el usuario no estuviera entregando un formulario técnicamente; estaban haciendo clic en un enlace para ir a nuestro centro de soporte, pero para iniciar sesión en una publicación http tenía que hacerse en el sitio del centro de soporte.
Esta solución implica el uso de HttpContext.Current.Response.Write() para escribir los datos para el formulario, a continuación, utilizando un poco de Javascript en el método
<body onload="">
para enviar el formulario a la dirección URL correcta.
Cuando el usuario hace clic en el enlace Centro de soporte, el siguiente método se llama a escribir la respuesta y redirigir al usuario:
public static void PassthroughAuthentication()
{
System.Web.HttpContext.Current.Response.Write("<body
onload=document.forms[0].submit();window.location=\"Home.aspx\";>");
System.Web.HttpContext.Current.Response.Write("<form name=\"Form\"
target=_blank method=post
action=\"https://external-url.com/security.asp\">");
System.Web.HttpContext.Current.Response.Write(string.Format("<input
type=hidden name=\"cFName\" value=\"{0}\">", "Username"));
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body>");
}
La clave de este método está en que poco onload del Javascript, que, cuando se carga el cuerpo de la página, envía el formulario y luego redirige al usuario a mi página de inicio. La razón de ese poco de hoodoo es que estoy lanzando el sitio externo en una nueva ventana, pero no quiero que el usuario vuelva a enviar el formulario oculto si actualiza la página. Además, esa forma oculta empujó la página hacia abajo unos pocos píxeles, lo que me molestó.
Estaría muy interesado en cualquier idea más limpia que alguien tenga sobre esta.
Eric Sipple