Laden...

Login Form mit WebRequest ausfüllen und abschicken?

Erstellt von #coder# vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.509 Views
#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren
Login Form mit WebRequest ausfüllen und abschicken?

Hallo Leute, ich habe folgendes Problem, ich möchte mich von einer Webanwendung in eine andere einloggen, dieses soll automatisch ausgeführt werden, also Login Formular ausfüllen und abschicken.

Nun habe ich das Beispiel von unten mit dem WebRequest übernommen und getestet:
http://www.canaware.com/default.aspx?g=posts&t=569

Nun kann ich mit dem Request das Formular in meiner Webanwendung anzeigen, aber irgendwie werden die Credentials nicht richtig gesetzt bzw. versendet. Hab mich nun mit Fiddler durchgekämpft. Wenn ich mich nun an die Ziel Anwendung manuell einlogge bekomme ich die Zugriff darauf, wenn ich nun das Formular aus meiner Webanwendung abschicken, werde ich immer auf die Login.aspx umgeleitet, da ich nicht authentifiziert bin.

Jemand eine Idee woran es liegen kann?
Hat evtl. jemand eine Beispiel Lösung dafür?

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

das kann jetzt noch an verschiedenen Sachen hängen, z.B. Art des Requests (GET/POST),
Cookies, sonstige mit dem Login-Formular verschickte Daten, die möglicherweise auf Gültigkeit geprüft werden, oder HTTP-Headerfields wie "Referer".

Letztendlich kann Dir wahrscheinlich niemand eine konkrete Antwort geben, ohne die Seite mit dem Loginformular zu kennen.

Was Du tun musst:
Den Request an die Login-Form genau so nachbilden, wie er auch vom Browser beim Anmelden abgeschickt wird. Wie der Request genau aussieht, müsste Dir ja Fiddler verraten.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

2.891 Beiträge seit 2004
vor 13 Jahren
#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren

@Marstein, kann ich den richtigen Request als Datei hinterlegen und später als Request abschicken, ist das möglich??

2.891 Beiträge seit 2004
vor 13 Jahren

kann ich den richtigen Request als Datei hinterlegen und später als Request abschicken, ist das möglich??

Wie genau sieht ein "richtiger Request" aus?
Requests kannst du schicken, wann du willst. Allerdings musst du evtl. auf Cookies und abgelaufene Sessions acht geben.

Gruß,
dN!3L

#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren

Ich hab den richtigen Request aus Fiddler kopiert, also mit dem ganzen <html>.. code

Das mit Cookies könnte auch stimmen, evtl werden diese nicht lokal gesetzt. Nicht so einfach dies herauszufinden.

456 Beiträge seit 2007
vor 13 Jahren

Je umfangreicher die Loginseite ist (JavaScript, AJAX, HTTPS, Cookie ect.), desto schwieriger ist es eine erfolgreiche Anmeldung via HttpWebRequest hinzubekommen.

Ohne die konkrete Seite können wir dir hier nicht weiterhelfen.

Möglich ist es aber definitiv immer, alles applikativ hinzubekommen, was auch mit dem Browser geht)

Notfalls mittels der IEXPLORE-Schnittstelle.

#coder# Themenstarter:in
395 Beiträge seit 2008
vor 13 Jahren

Ich möchte mich in NopCommerce von Codeplex anmelden, habe diese bei mir lokal laufen: Im Backend möchte ich mich nun anmelden, hier gibt es die Seite unter _~/Administration/Login.aspx _. Der komplette Request sieht wie folgt aus:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="%2fnop%2fAdministration%2fDefault.aspx">here</a>.</h2>
</body></html>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	Your store name. Login
</title><link href="../App_Themes/administration/styles.css" type="text/css" rel="stylesheet" /></head>
<body style="background-color: #efefef;">
    <form name="form1" method="post" action="Login.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="siehe unten" />
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>


<script src="/nop/WebResource.axd?d=_I2FrqfOM40snnjcITIUig2&amp;t=633942494308226263" type="text/javascript"></script>


<script src="http://localhost/nop/Scripts/admin.js" type="text/javascript"></script>
<script src="/nop/WebResource.axd?d=e4Wxd9XE6ayT1qguoH9O7ecv93YS8h8_ECLfTJm6Yf01&amp;t=633942494308226263" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>
</script>

<div>

	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLgsq/XBwLssfBpAu/Mx9kGAqzxsN8NAqLY+psMfpJS3AmMrMuBiIfm6oEv06RCMbM=" />
</div>
    <div class="login-block">
        <table id="LoginForm" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;">
	<tr>
		<td>
                <table class="login-table-container">
                    <tbody>
                        <tr class="row">
                            <td class="item-name">
                                E-Mail Address:
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="item-value">
                                <input name="LoginForm$UserName" type="text" value="admin@yourstore.com" id="LoginForm_UserName" class="adminInput" style="width: 200px;" />
                                <span id="LoginForm_UserNameOrEmailRequired" title="E-Mail is required" style="color:Red;visibility:hidden;">
                                            *
                                </span>
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="item-name">
                                Password:
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="item-value">
                                <input name="LoginForm$Password" type="password" maxlength="50" id="LoginForm_Password" class="adminInput" style="width: 200px;" />
                                <span id="LoginForm_PasswordRequired" title="Password is required" style="color:Red;visibility:hidden;">
                                            *
                                </span>
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="item-value">
                                <input id="LoginForm_RememberMe" type="checkbox" name="LoginForm$RememberMe" checked="checked" /><label for="LoginForm_RememberMe">Remember me</label>
                            </td>
                        </tr>
                        <tr class="row">
                            <td class="message-error">
                                
                            </td>
                        </tr>
                        <tr class="row">
                            <td>
                                <div class="buttons">
                                    <input type="submit" name="LoginForm$LoginButton" value="Log in" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;LoginForm$LoginButton&quot;, &quot;&quot;, true, &quot;LoginForm&quot;, &quot;&quot;, false, false))" id="LoginForm_LoginButton" class="adminButtonBlue" />
                                </div>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </td>
	</tr>
</table>
    </div>
    
<script type="text/javascript">
//<![CDATA[
var Page_Validators =  new Array(document.getElementById("LoginForm_UserNameOrEmailRequired"), document.getElementById("LoginForm_PasswordRequired"));
//]]>
</script>

<script type="text/javascript">
//<![CDATA[
var LoginForm_UserNameOrEmailRequired = document.all ? document.all["LoginForm_UserNameOrEmailRequired"] : document.getElementById("LoginForm_UserNameOrEmailRequired");
LoginForm_UserNameOrEmailRequired.controltovalidate = "LoginForm_UserName";
LoginForm_UserNameOrEmailRequired.errormessage = "E-Mail is required";
LoginForm_UserNameOrEmailRequired.validationGroup = "LoginForm";
LoginForm_UserNameOrEmailRequired.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
LoginForm_UserNameOrEmailRequired.initialvalue = "";
var LoginForm_PasswordRequired = document.all ? document.all["LoginForm_PasswordRequired"] : document.getElementById("LoginForm_PasswordRequired");
LoginForm_PasswordRequired.controltovalidate = "LoginForm_Password";
LoginForm_PasswordRequired.errormessage = "Password is required";
LoginForm_PasswordRequired.validationGroup = "LoginForm";
LoginForm_PasswordRequired.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
LoginForm_PasswordRequired.initialvalue = "";
//]]>
</script>


<script type="text/javascript">
//<![CDATA[

var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
    ValidatorOnLoad();
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    else {
        return true;
    }
}
        //]]>
</script>
</form>
</body>
</html>

Hier sind 2 Textboxen die ich mit den Standard Credentials übergebe, dieser Request wurde mit Fiddler abgefangen, anschließend wurde ich auf Default.aspx weitergeleitet.

Wenn ich nun mein Code die Daten übergebe, werde ich immer auf die Login.aspx weitergeleitet, wahrscheinlich da die Authentifizierung nicht geklappt hat. Es könnte an den Cookies liegen, welche nicht übertragen werden, da NopCommerce den Membership Provider verwendet.

PS: Value aus dem XML-Code

/wEPDwUJMjUzMjk5NDc2D2QWAgIDD2QWAgIBDzwrAAoBAA8WAh4IVXNlck5hbWUFE2FkbWluQHlvdXJzdG9yZS5jb21kFgJmD2QWCAIBDxYCHgRUZXh0BQ5FLU1haWwgQWRkcmVzc2QCAw8PFgIfAQUTYWRtaW5AeW91cnN0b3JlLmNvbWRkAgUPDxYGHgxFcnJvck1lc3NhZ2UFEkUtTWFpbCBpcyByZXF1aXJlZB4HVG9vbFRpcAUSRS1NYWlsIGlzIHJlcXVpcmVkHwEFUQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkAg0PEA8WAh4HQ2hlY2tlZGdkZGRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRRMb2dpbkZvcm0kUmVtZW1iZXJNZXo7xsvd8cwmaARVR4pm4T3Dg/+z
H
89 Beiträge seit 2008
vor 13 Jahren

probier doch mal http://watin.sourceforge.net/ aus.
Damit sollte es recht einfach klappen.

Gruß h0scHberT

D
2 Beiträge seit 2010
vor 13 Jahren

Hallo!

Ich habe jetzt das gleiche Problem wie du. Hast du jetzt es gelöst bekommen und wenn ja, wie?

Vielen Dank im Voraus!

Mfg Djon