Ich hoffe jemand kann mir bei folgendem Problem helfen:
Ich muss ein Programm schreiben, das sich mit vorgegebenen Logindaten auf einer Webseite einloggt um von dort Daten auszulesen. Das Problem ist das der Login über eine SSL Verbindung und einen CAS Server läuft.
Ich hab schon den Loginvorgang per Live HTTP Headers plugin protokolliert und versucht die entsprechenden Verbindungen nachzubilden(da ein normales übergeben der Logindaten per POST Methode auch nicht funktioniert hat), aber ich werde immer wieder zur Loginseite zurück geschickt.
Wäre schön wenn jemand evtl. ein paar allgemeine Sachen weiß die man bei CAS/SSL beachten müsste.
Ansonsten werd ich morgen noch den schon vorhandenen CODE einfügen.
Hier mal ein ausschnitt des Codes den ich bis jetzt hab
Danach versuch ich die automatische Weiterleitung die im Browser passiert nach zu bilden
und trotz alledem lande ich anschließend auf ner Fehlerseite die mir sagt das ich ne CAS Authentisierung brauch.
Ich hab mal die ausgelesenen Header vom Loginvorgang angehängt(Username und PW hab ich unkenntlich gemacht)
Ich muss ein Programm schreiben, das sich mit vorgegebenen Logindaten auf einer Webseite einloggt um von dort Daten auszulesen. Das Problem ist das der Login über eine SSL Verbindung und einen CAS Server läuft.
Ich hab schon den Loginvorgang per Live HTTP Headers plugin protokolliert und versucht die entsprechenden Verbindungen nachzubilden(da ein normales übergeben der Logindaten per POST Methode auch nicht funktioniert hat), aber ich werde immer wieder zur Loginseite zurück geschickt.
Wäre schön wenn jemand evtl. ein paar allgemeine Sachen weiß die man bei CAS/SSL beachten müsste.
Ansonsten werd ich morgen noch den schon vorhandenen CODE einfügen.
Hier mal ein ausschnitt des Codes den ich bis jetzt hab
Java:
URL url = new URL("https://cas01.wmgruppe.de/cas/login?service=http%3A%2F%2Fwww.wmdaten.de%2Fcustomer%2Fevt_pro2_cas.php%3Fpage_number%3D0");
HttpsURLConnection loginverbindung = (HttpsURLConnection) url.openConnection();
loginverbindung.setDoInput(true);
BufferedReader einlesen = new BufferedReader(new InputStreamReader(loginverbindung.getInputStream()));
while((line=einlesen.readLine()) != null){ // Hier lese ich nen Random generierten Code ein für den kommenden POST Header
Matcher vergleich = musterlt.matcher(line);
if (vergleich.find()){
lt = line.substring(vergleich.start(), vergleich.end());
break;
}
}
String headerName;
for (int z=1; (headerName = loginverbindung.getHeaderFieldKey(z))!=null; z++) { //Hier lese ich die zu setzenden Cookies aus
if (headerName.equals("Set-Cookie")) {
cookie += loginverbindung.getHeaderField(z);
}
}
einlesen.close();
StringTokenizer st = new StringTokenizer(cookie,"=; ");
String[] Tokens = new String[st.countTokens()];
int c=0;
while (st.hasMoreTokens())
{
Tokens[c] = st.nextToken();
c++;
};
String loginwert="username=" + logindaten.getProperty("login") + "&password=" + logindaten.getProperty("pw") + "<="+ lt +"&_eventId=submit&submit=Login"; //Das soll beim POST aufruf übergeben werden
Integer length = new Integer(loginwert.length());
verbindung = (HttpsURLConnection) new URL("https://cas01.wmgruppe.de/cas/login;jsessionid="+Tokens[1]+"?service=http%3A%2F%2Fwww.wmdaten.de%2Fcustomer%2Fevt_pro2_cas.php%3Fpage_number%3D0").openConnection();
verbindung.setRequestProperty("Content-Length", length.toString());
verbindung.setRequestMethod("POST");
verbindung.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
verbindung.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
verbindung.setRequestProperty("Cookie",Tokens[0]+"="+Tokens[1]);
verbindung.setRequestProperty("Referer",loginverbindung.getURL().toString());
verbindung.setDoOutput(true);
PrintWriter out = new PrintWriter(verbindung.getOutputStream());
out.println(loginwert);
out.close();
Danach versuch ich die automatische Weiterleitung die im Browser passiert nach zu bilden
Java:
verbindung = (HttpURLConnection) new URL(verbindung.getHeaderField("Location")).openConnection();
verbindung.setRequestMethod("GET");
verbindung.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
verbindung.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
st = new StringTokenizer(verbindung.getHeaderField("Set-Cookie"),"; ");
Tokens = new String[st.countTokens()];
c=0;
while (st.hasMoreTokens())
{
Tokens[c] = st.nextToken();
c++;
};
cookie=Tokens[0];
verbindung = (HttpURLConnection) new URL("http://www.wmdaten.de/customer/evt_pro2_cas.php?&page_number=" + i).openConnection();
verbindung.setRequestMethod("GET");
verbindung.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7");
verbindung.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
verbindung.setRequestProperty("Cookie", cookie);
und trotz alledem lande ich anschließend auf ner Fehlerseite die mir sagt das ich ne CAS Authentisierung brauch.
Ich hab mal die ausgelesenen Header vom Loginvorgang angehängt(Username und PW hab ich unkenntlich gemacht)
Anhänge
Zuletzt bearbeitet: