HTTP JSESSIONID in Http(s)URLConnection loswerden!

B

Benutzer 08/15

Gast
Hallo,

wir setzen bei uns neuerdings i-net Clear Reports als Reportgenerator ein. Der Client kommuniziert per HTTP mit dem Reportserver (steht bei uns im Intranet).
Scheinbar wird dort irgendwie eine Session erzeugt.
Das Problem ist, wenn wir nun danach selber eine Http(s)URLConnection zu einem Server im Internet aufbauen wird die erzeugte SessionID (JSESSIONID) als Cookie mit übertragen.

Es liegt definitiv an dem vorherigen Verbinden mit dem Reportserver.

Leider stört die JSESSIONID vollends die Kommunikation mit dem externen Server, da der jede Anfrage mit falsch abtut.

Nun die Frage: Wie verhindern wir, das dieses blöde Cookie mit an den externen Server gesendet wird?

DANKE!
 
N

nillehammer

Gast
Scheinbar kopierst Du die Header der http-Connection zu Eurem ReportingServer in die https-Connection zum Internetserver. Poste bitte den Code, damit man schauen kann, wo.
 
B

Benutzer 08/15

Gast
Soll ich das wirklich machen?!
Java:
URL url = new URL("https://domain.tld");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
	System.out.println("!" + line + "\n");
}
con.disconnect();

Glaub mir einfach: Wir kopieren nichts! Irgendwie setzen die von i-net Defaultwerte, aber wir wissen nicht, wie man diese wieder rausbekommt!
 
N

nillehammer

Gast
Nu mal nicht so schnippisch. Es ist ja wohl nicht zuviel verlangt, Source Code zu sehen, um eventuelle Fehler in meiner Umgebung nachvollziehen zu können.

Ich habe jetzt verschiedene Varianten ausprobiert. Erst eine http-Url aufrufen, wo ich weiß, dass im Response ein JSESSIONID-Cookie gesetzt wird. Danach eine https-Url, bei der kein Cookie verwendet wird. Das hat funktioniert. Weil ich bei der https-Connection nicht in den Datenstrom reingucken kann, hab ich danach nochmal eine normale http-Connection ausprobiert und mit Wireshark in die Pakete angeschaut. Das Cookie aus der ersten Connection wird beim Request der zweiten nicht mitgesendet.

Weiterhin viel Erfolg bei der Fehlersuche wünscht,
nillehammer
 
B

Benutzer 08/15

Gast
Sorry erstmal,

ist nichts gegen dich persönlich, aber es ist nunmal so, das unsereins erstmal ausgiebig selber recherchiert und untersucht, bevor er eine Frage in einem Forum stellt. Und falls es dann zu einer Beantwortung dieser kommen kommen sollte, werden meistens irgendwelche Trivialitäten abgeprüft oder vorgeschlagen.

Wie schon geschrieben, das Problem ist, das der Cookie irgendwie permanen für alle Http(s)URLConnection gespeichert ist und ich ihn nicht wieder losbekomme.
Also ist die Frage, weiß einer, wo das "Mistding" noch hängen kann, oder nicht?

Danke!
 

areafo

Mitglied
Cookie. was für eine Art? Https Streams während der Laufzeit zu beeinflussen naja Secure by Design ^^

Stichworte bei Wikipedia wären:
http cookie
Cross-Site-Cooking
Logdateianalyse
DOM Storage
Flash-Cookie

Warum es an allen nachfolgenden Stream dran hängt wäre zu klären. Sowas ist nicht "normal" und muss ein gewolltes und wahrscheinlich nicht abänderbares Design Problem des Reportgenerator sein. Wenn die mit Sessions arbeiten, dann ist das so designed.

Ürsprüngliche Spezifikation von Netscape sah vor

You can manipulate cookies:

Explicitly, with a CGI program.

Programmatically, with client-side JavaScript using the cookie property of the document object.

Transparently, with the server-side JavaScript using the client object, when using client-cookie maintenance.
 
Zuletzt bearbeitet:
B

Benutzer 08/15

Gast
Warum es an allen nachfolgenden Stream dran hängt wäre zu klären. Sowas ist nicht "normal" und muss ein gewolltes und wahrscheinlich nicht abänderbares Design Problem des Reportgenerator sein. Wenn die mit Sessions arbeiten, dann ist das so designed.

Treffer, genau das ist ja die Kernaussage. Wobei bei dem "nicht abänderbaren Designproblem" würde ich nicht zustimmen. Ich habe mal jetzt dem Support bei denen geschrieben. Mal schauen, was ich da abklären kann.

Aber wie schon geschrieben, das Problem ist, dass jede Http(s)URLConnection (Clientseitig) egal wohin, diesen blöden Cookie mitsendet!
 

areafo

Mitglied
Was ich nicht verstehe. Wird die Connection nach der Report Session immer weiterverwendet? Laufen normale Verbindungen somit auch über den Reportserver weil er gleichzeitig eine Art Proxy ist, anders könnte ein Coookie nicht in eine https Session "eindringen".
 
B

Benutzer 08/15

Gast
Nein, sie wird nicht weiterverwendet.

Wir wissen nicht genau, wie die Kommunikation mit dem Reportserver abläuft. Ist ja properitär. Die Vermutung liegt nahe, dass da auch eine HttpURLConnection verwendet wird, da wir eine URL an die clientseitige Komponente übergeben müssen.
Und danach rufen wir den Code von oben auf. Und ab dann wird immer ein Cookie mitgeschickt!
Es ist fast so, als würde die Clientkomponente von i-Net setDefaultRequestProperty ("Cookie", "JSESSIONID=abcde123;") aufrufen. Laut API ist das natürlich nicht möglich!
Man kann es Programmtechnisch auch nirgendwo abfragen, aber es wird definitiv mitgeschickt!
 

areafo

Mitglied
Das lässt nur einen Schluss zu (was sehr unsauber ist).Der Reportserver scheint mit seinen clientseitigen Komponenten einfach (weil bequemer) eben diese JVM weiten Defaultwerte zu setzen. Da wollte eben jemand Programmzeilen sparen ^^

Genau der selbe Schluss wie bereits in dem Post über mir vom Ersteller

Also vor neuer Verbindung erst Global reset default ^^

Abfragen über getDefaultRequestProperty vor neuer Con ^^
 
Zuletzt bearbeitet:
B

Benutzer 08/15

Gast
Das lässt nur einen Schluss zu (was sehr unsauber ist).Der Reportserver scheint mit seinen clientseitigen Komponenten einfach (weil bequemer) eben diese JVM weiten Defaultwerte zu setzen. Da wollte eben jemand Programmzeilen sparen ^^

Ja, ist bekannt! Unbekannt ist, wie haben Sie die Programmzeilen gespart?! Also wie bringt man diese Defaultwerte überhaupt rein ins System?!

Also vor neuer Verbindung erst Global reset default ^^
Genau das ist meine Frage! Wie macht man diesen "Global reset default"?! (Ohne die JVM neu zu starten!)
 

areafo

Mitglied
Wie die Zeilen gespart haben ^^. Ganz klar so:

Vor jeder Verbindung müsste man die passenden Werte setzen, wenn das immer die selben sind setzt man Sie global (für die gesamt JVM-Session). Will man diese bereinigen startet man die JVM neu oder setzt die Werte auf Nothing und bereinigt diese auf Standard.
 
Zuletzt bearbeitet:
B

Benutzer 08/15

Gast
Wie die Zeilen gespart haben ^^. Ganz klar so:

Vor jeder Verbindung müsste man die passenden Werte setzen, wenn das immer die selben sind setzt man Sie global (für die gesamt JVM-Session). Will man diese bereinigen startet man die JVM neu oder setzt die Werte auf Nothing und bereinigt diese auf Standard.

Entschuldige, aber du weißt schon, dass die Antworten irgendwie null (neuen) Informationsgehalt haben, oder?! ;)

Aber egal, wir haben gerade einen Fix für das Problem von i-net bekommen. Und es funktioniert.
Weiterhin hat mein Kollege noch etwas recherchiert und hat auch die Antwort auf unsere ursprüngliche Frage gefunden! Sie heißt:
Java:
CookieManager.setDefault(null);
(siehe API)
So einfach, wenn man es denn weiß! ;)

Ich habe an den i-net Support nochmal die Rückfrage gestellt, ob es denn daran gelegen haben könnte! Wobei wir zu 99% sicher sind das ja!

Also für mich/uns ist die Frage damit beantwortet: Bei Cookieproblemen die neuen Cookie-Klassen ab Version 1.6 beachten!

DANKE nochmal.
 

areafo

Mitglied
Die API hab ich mir nie angeschaut ^^. Es war ja klar das die Clientseitigen Reportserver Komponenten schuld haben. Das die API da sogar eine Manager Klasse bereitstellt wunderbar, ansonsten hätte man das wie gesagt selbst implementiert, so dass die JVM Einstellungen wieder "genullt" werden.

Danke auch das du die Lösung gepostet hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
H Datei mit Anhang via http "hochladen" Netzwerkprogrammierung 16
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
G localhost im Backend https vs. http Netzwerkprogrammierung 9
J Simple HTTP Framework (basierend auf expressjs) Netzwerkprogrammierung 1
M HTTP Http requests aufzeichnen Netzwerkprogrammierung 2
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
F HTTP HTTP Rest Client mit TLS1.2 und selbst signiertem Zertifikat Netzwerkprogrammierung 2
M http request and response Netzwerkprogrammierung 0
M Verbindungszeit berechnen (TCP, HTTP/1.0, HTTP/1.1) Netzwerkprogrammierung 2
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
P HTTP Server / Client Netzwerkprogrammierung 1
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
E HTTP java.lang.IllegalArgumentException: protocol = http host = null Netzwerkprogrammierung 1
M Server mit HTTP Netzwerkprogrammierung 9
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D HTTP Bräuchte hilfe mit Http Requests Netzwerkprogrammierung 6
K HTTP Eigener Http Response für Datei-Download Netzwerkprogrammierung 4
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
F HTTP HTTP-Download: Dateien in einem Verzeichnis ermitteln Netzwerkprogrammierung 8
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
E Socket HTTP-Server Netzwerkprogrammierung 6
C HTTP POST Connect Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
I HTTP Datei Uploaden mit http und Sprache anpassen Netzwerkprogrammierung 7
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N Http Client Netzwerkprogrammierung 3
W Asynchroner HTTP Client / non-blocking I/O Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
L Body eines http Request auslesen Netzwerkprogrammierung 2
T HTTP Encoding von Http-Streams Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
J org.apache.http.auth.NTCredentials Netzwerkprogrammierung 2
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
G Http Client mit Redirect Enabled Netzwerkprogrammierung 2
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
R HTTP Server Memory Leak? Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
K optimale HTTP Downloads Netzwerkprogrammierung 15
G auf http-request antworten. Netzwerkprogrammierung 3
I http sniffer gesucht Netzwerkprogrammierung 10
G Socket + HTTP Header Netzwerkprogrammierung 2
R HTTP ServerThread Netzwerkprogrammierung 4
J HTTP GET? Netzwerkprogrammierung 6
C FTP vs HTTP Netzwerkprogrammierung 10
M HTTP-Response extrem fragmentiert Netzwerkprogrammierung 4
W HTTP-Upload Netzwerkprogrammierung 2
M HTTP response code: 401 ; ?aber im browser ist es abrufbar? Netzwerkprogrammierung 5
L Java HTTP Request Netzwerkprogrammierung 3
O Axis2 erstellt HTTP/1.1 anstatt HTTP/1.0 Netzwerkprogrammierung 3
B Fehler 401 bei http GET Netzwerkprogrammierung 2
S HTTP Request erstellen Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
B lange Strings in http-Request? Netzwerkprogrammierung 3
K http-download Netzwerkprogrammierung 12
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
M RMI over HTTP Netzwerkprogrammierung 5
M HTTP Requests verarbeiten und Response senden mit Java Netzwerkprogrammierung 14
G HTTP Response mit Transfer-Encoding:chunked einlesen Netzwerkprogrammierung 4
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
J Java Programm für Upload von Dateien per HTTP Netzwerkprogrammierung 7
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
L file upload / download über http Netzwerkprogrammierung 5
G HTTP Client :: Komme nicht über den Proxy Netzwerkprogrammierung 7
P Easy Http Request Netzwerkprogrammierung 9
B non US-ASCII Dateinamen über HTTP? Netzwerkprogrammierung 2
N Dateigröße einer Datei auf einem HTTP-/Web-Server. Netzwerkprogrammierung 9
P File von http-Server kopieren Netzwerkprogrammierung 5
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
G http 1.1 socket? Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
S http Server selber schreiben Netzwerkprogrammierung 5
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3
N Download HTTP .php-Seite mit Anmeldung Netzwerkprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben