Redirect Benutzer authentifiziert Seite, die Formularauthentifizierung verwendet, unter Verwendung von HTTP-Location-Header, HttpWebRequest / Response und Response.Cookies.Add ()

StackOverflow https://stackoverflow.com/questions/1436252

Frage

Ich brauche auf einer Website mit Formularauthentifizierung autheticate und dann den Benutzer zusammen mit dem Session-Cookie zu dieser Website umleiten. Ich habe nicht herausgefunden, wie man dies erfolgreich zu tun. Hier ist mein Code so weit .. ich noch weitergeleitet, um die Login-Seite apps. Jede Hilfe ist sehr geschätzt!


protected void Button1_Click(object sender, EventArgs e)
{
 string data = "nickname=&login={0}&password={1}&action_login.x=70&action_login.y=14action_login=Login";
 string postdata = String.Format(data, "test", "test");
 string page = @"http://1.1.1.1/home.asp";
 string loginPage = @"http://1.1.1.1/auth.asp";
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(loginPage);
 request.Method = "POST";
 request.ContentType = "application/x-www-form-urlencoded";
 request.AllowAutoRedirect = false;
 ASCIIEncoding encoding = new ASCIIEncoding(); //encoder
 byte[] requestData = encoding.GetBytes(postdata); //encode post data
 request.ContentLength = requestData.Length;
 //write the post data to the request
 Stream requestStream = request.GetRequestStream();
 // Send the data.
 requestStream.Write(requestData, 0, requestData.Length);
 requestStream.Close();
 try
 {
  HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  string cookieHeader = response.GetResponseHeader("Set-Cookie");
  string cookieValue = cookieHeader.Replace("pp_session_id=", "");
  HttpCookie cookie = new HttpCookie("pp_session_id",cookieValue);
  cookie.Domain = "1.1.1.1";
  cookie.Path = "/";
  Response.Clear();
  Response.StatusCode = 302;
  //Response.AddHeader("Set-Cookie", cookieHeader);
  Response.AddHeader("Location",page);
  Response.RedirectLocation = page;
  Response.Cookies.Add(cookie);
  Response.Flush();

 }
 catch (WebException ex)
 {
  Response.Write(ex.Message);
 }
}
War es hilfreich?

Lösung

Verwenden Sie Firebug auf Mozilla Firefox, um zu sehen, was genau der Browser tut, wenn sie in der Webapp anzumelden. Dann simuliert die gleiche Sequenz durch Code.

Sie können aber wireshark verwenden, um die Anfragen durch den Browser gesendet schnuppern.

Eine Sache, die ich aus dem Code sehen kann, ist, dass Sie das Cookie explizit hinzufügen. Sie sollten nicht tun dies werden. Sie sollten einen Cookie auf Antrag festgelegt, so dass die Cookies mit allen Anfragen an dieser Stelle gesendete.

Hoffnung, das hilft.

Andere Tipps

ich glaube, Sie haben eine Anfrage an eine authentifizierte Seite auf dem Remote-Web-App zu tun.

Sie müssen das Cookie packen es Sie gibt, so dass Sie eine gültige Session haben. aspnet Session-ID wird im Cookie übergeben. Dann müssen Sie den Benutzernamen und das Passwort für diese App zusammen mit dem Cookie erhalten Sie, so dass Sie eine gültige authentifizierte Sitzung haben die passiert werden müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top