# URLConnection via Proxy mit Authentification



## raptor (15. Apr 2008)

Hallo,

hab ein paar Zeilen Code geschrieben, die zu Hause funktionieren, in der Firma mit "einfachem" Proxy funktionieren, aber nicht in der Uni, wo wir uns noch am Proxy authentifizieren müssen. Jetzt habe ich im Internet schon gesucht und einige Hinweise gefunden (eigentlich nur 2) von denen aber keiner funktioniert.


```
//Variante 1
System.setProperty("http.proxyUser", "benutzer");
System.setProperty("http.proxyPassword","kennwort" );

//Variante 2
urlCon.addRequestProperty("Proxy-Authorization", "Basic " +
		new BASE64Encoder().encode("benutzer:kennwort".getBytes()));
```

keines von beiden funktioniert!

Hat jemand von euch einen Tipp / Ahnung?


----------



## tuxedo (16. Apr 2008)

Also bei mir hat bisher immer folgendes funktioniert: 


```
// Connection via proxy is possible ...
		System.setProperty("http.proxySet", 		"true"); 
		System.setProperty("proxyHost", 			"myProxy.com"); 
		System.setProperty("proxyPort", 			"80"); 
		System.setProperty("http.proxyUser", 		"myProxyUser"); 
		System.setProperty("http.proxyPassword", 	"myProxyPass");
```


----------



## raptor (16. Apr 2008)

Ja, ich habe es heute mal auf einer lokalen Ubuntu Installation getestet. Habe squid installiert und eine einfache Authentifikation eingestellt. Da funzt es. Nur in der Uni nicht. Ich werde dort mal nachfragen, was die für Einstellungen haben. Irgendwie müssen die da was ganz wildes haben. Das funktioniert dort auch irgendwie über Domains...

Ich werde berichten.


----------



## tuxedo (21. Apr 2008)

Und? Hast du schon was in Erfahrung bringen können?

- Alex


----------



## raptor (21. Apr 2008)

Ich habe die Veranstaltung nur am Dienstag und nur alle paar Tage Uni. Also werde ich Morgen noch mal gucken.
Ich gehe allerdings davon aus, dass die dort NTLM Authorization verwenden. Da gibt es dann wohl noch eine System Property die man seit Java 1.4.2 zusätzlich setzen kann (siehe hier), aber dort steht auch, dass das nur auf Windows Plattformen so funktioniert. Ich entwickle auf Mac OS X. Wobei ich allerdings auch so im Browser durch den Proxy komme. 
Ich werde mich hier melden, wenn ich was funktionierendes habe...

edit: Der HttpClient von Jakarta soll ja NTLM unterstützen, aber irgendwie hatte das neulich nicht funktioniert als ich mal "meine" URLConnection durch HttpClient erstetzt hatte. Vielleicht ist das der einfachere Lösungweg.

edit2: Folgenden Absatz habe ich auf http://oaklandsoftware.com/papers/ntlm.html gefunden 





> Sun JRE 6 or 5 (only 1.5_08 or higher) (free) - Full support of NTLM protocol (LM/NTLM/NTLM V2) on all platforms. Supports all NTLM configuration levels (I would imagine, I have not tried). However, on a Windows machine, it assumes you wish to authenticate using the currently logged on user. You can work around this only after the authentication fails.


Also müsste ich das ja schon irgendwie hin bekommen. Meine verwendete Java Version müsste 1.5_14 sein.

edit3 [23.04.2008]: Die Veranstaltung gestern ist ausgefallen. Daher kann ich noch nichts neues berichten.


----------



## raptor (29. Apr 2008)

So, nun habe ich es geschafft. Und zwar mit jCIFS. 

Ein kleiner Auszug wie es dann funktioniert:



```
jcifs.Config.registerSmbURLHandler();
jcifs.Config.setProperty("http.auth.ntlm.domain", "xxxxx");
jcifs.Config.setProperty("cifs.smb.client.domain", "xxxxx");
jcifs.Config.setProperty("jcifs.smb.client.username", "xxxxx");
jcifs.Config.setProperty("jcifs.smb.client.password", "xxxxx");
//jcifs.Config.setProperty("jcifs.netbios.hostname", "");
			
			
URL url = new URL("http", "www.sv-froemern.de", "/Zweite.75.0.html");
URLConnection con = url.openConnection();
```


----------

