PDA

View Full Version : [Java - autenticazione]


^TiGeRShArK^
16-03-2005, 16:05
Devo leggere dei file XML su un server sharepoint mediante un programmino scritto in Java.
Ho provato con diversi file XML su internet e tutto va a buon fine, ma il problema è ke quando mi collego al server SharePoint è necessario autenticarsi.....
come faccio ad inviare username e password dal programma in Java premesso ke la sintassi http://username:password@www.sito.com è stata deprecata e non funziona più????

kingv
16-03-2005, 16:43
non conosco sharepoint, usa la basic authentication?
in questo caso puoi farlo da java, se vuoi ti posto il codice.

^TiGeRShArK^
16-03-2005, 17:13
il problema è ke non ho idea ke autenticazione usi.....
Senza autenticazione mi dava un eccezione nella creazione dell'input stream....
poi ho provato con la classe authenticator scrivendo questo codice:


import java.net.*;
import java.io.*;

public class ProvaAccesso {
public ProvaAccesso() {
Authenticator.setDefault(new MyAuthenticator());

try {
// Create a URL for the desired page
URL url = new URL("http://ww3.gruppoblue.it/default.aspx");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.
openStream()));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);

}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
}

public static void main(String[] args) {
ProvaAccesso provaaccesso = new ProvaAccesso();
}
}


class MyAuthenticator extends Authenticator {
// This method is called when a password-protected URL is accessed
protected PasswordAuthentication getPasswordAuthentication() {
String password = "*********";
return new PasswordAuthentication("xxxxxxxxxxxx", password.toCharArray());
}
}


e non mi da errore, ma non mi visualizza niente....
mentre provando con www.google.it mi visualizzava senza problemi il codice html di index.html.......
Se hai qualke idea fammi sapere.....

Grazie x l'interessamento cmq ;)

^TiGeRShArK^
16-03-2005, 17:22
come RequestingScheme mi restituisce

ntlm

ha qualke significato??? :confused:

[EDIT]
Ho trovato queste informazioni su ntlm:
http://www.innovation.ch/java/ntlm.html

non mi dire ke mi devo implementare tutto a mano:cry::cry::cry::muro:

kingv
16-03-2005, 17:56
Il tuo codice sembra corretto, e Authenticator supporta NTLM.

chiama un printStackTrace() dentro i due catch, ho idea che passi di lì ;)

^TiGeRShArK^
16-03-2005, 18:04
DOH!
non c'avevo fatto caso dato ke il codice l'avevo copiato paro paro da un sito internet......
di solito qdo li scrivo io i try catch lo metto in automatico il printstacktrace e non ho notato ke lì non c'era....
cmq oramai provo domani mattina ke x stasera sono KO.....

tnx x l'aiuto ;)

^TiGeRShArK^
17-03-2005, 10:02
Ho provato a mettere il printstacktrace.... ecco il dump:

java.io.IOException: Error writing to server
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:293)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:625)
at java.net.URL.openStream(URL.java:913)
at ProvaAccesso.<init>(ProvaAccesso.java:30)
at ProvaAccesso.main(ProvaAccesso.java:46)

l'errore viene generato dalla linea di codice

BufferedReader in = new BufferedReader(new InputStreamReader(url.
openStream()));


ho provato pure a settare l'username nel formato dominio\\user ma mi da sempre lo stesso problema.....

Sai per caso come fare a settare la proprietà http.auth.ntlm.domain????

non ho idea cos'altro posso fare..... :boh:

kingv
17-03-2005, 10:15
Authenticator supporta NTLM dalla versione 1.4.2 del jdk.
hai una versione abbastanza recente?

kingv
17-03-2005, 10:16
il client da cui sviluppi è windows o altro?
per motivi di licenza il supporto per NTLM esiste solo per il jdk su windows :muro: .

^TiGeRShArK^
17-03-2005, 10:16
java version 1.4.2_04-b05

cmq ora x sicurezza provo a configurare la 1.5 e vedo ke succede.....

^TiGeRShArK^
17-03-2005, 10:20
niente.....
stesso problema.... :boh:

si il computer è con windows xp.......non ho + idea di cosa fare....

kingv
17-03-2005, 10:20
Originariamente inviato da ^TiGeRShArK^

Sai per caso come fare a settare la proprietà http.auth.ntlm.domain????



da codice con System.setProperty("http.auth.ntlm.domain", valore)

kingv
17-03-2005, 10:23
ma sei sicuro di poter raggiungere quel sito a livello di rete? non e' che hai un proxy di mezzo per accedere a internet? se usi lo stesso codice (senza autenticazione) per scaricare una pagina di un altro sito funziona?

^TiGeRShArK^
17-03-2005, 10:23
ho provato anke settando questa proprietà...... :muro: sempre il solito prob.....

^TiGeRShArK^
17-03-2005, 10:25
ho provato a scaricare la pagina di google e funzionava....
ho anche provato a costrire un documento xml da un file su internet e non dava problemi.....
e inoltre quella pagina da internet explorer me la apre senza problemi....
ma ad esempio già con firefox crea un pò di casini....
a 'sto punto credo sia proprio sharepoint ke utilizza qualke sistema di autenticazione bastardo.......

^TiGeRShArK^
17-03-2005, 10:27
eventualmente sai se è possibile utilizzare le librerie .net framework tramite java in qualke modo? (ke ne so con native o con qualke altra cosa....)

kingv
17-03-2005, 10:43
Originariamente inviato da ^TiGeRShArK^
a 'sto punto credo sia proprio sharepoint ke utilizza qualke sistema di autenticazione bastardo.......



non so più che pensare :boh:

in teoria dovresti riuscire ad autenticarti, tra l'altro quell'eccezione non mi sembra dovuta a un accesso negato, va in crisi quando manda la richiesta, non quando la riceve

^TiGeRShArK^
17-03-2005, 11:18
grazie cmq....
ora provo ad installare visual studio .net e vedo se risolvo in qualke modo (sperando di non dover riscrivere tutto il programma da zero :muro: )

^TiGeRShArK^
17-03-2005, 22:10
sai x caso se J# può usare le stesse classi del java o se devo riscrivere tutto da zero??? :cry:

kingv
17-03-2005, 23:04
Originariamente inviato da ^TiGeRShArK^
sai x caso se J# può usare le stesse classi del java o se devo riscrivere tutto da zero??? :cry:


che diavolo è J#? :p

occhio che usare tool M$ con java non è mai stato una grande idea, ancora dai tempi remoti di J++ ;)

^TiGeRShArK^
18-03-2005, 13:27
finalmente ho trovato la soluzione ....
e senza usare visual studio! :p
praticamente SharePoint memorizza tutti i documenti all'interno di una tabella di un database Sql Server, qdi mi è bastato collegarmi al database e scaricarmi il binary content del file :D

se mi veniva prima mi risparmiavo una giornata di mal di testa! :muro:

grazie x l'aiuto e x il sostegno morale! ;)

pipozzolo
18-03-2005, 16:22
Originariamente inviato da ^TiGeRShArK^
sai x caso se J# può usare le stesse classi del java o se devo riscrivere tutto da zero??? :cry:

Se fai un copia incolla del codice funziona...
però occhio che eventuali librerie aggiuntive devono essere ricompilate... cioè class e jar non sono utilizzabili direttamente (es driver jdbc etc etc).

J# secondo me è solo un'esca per attrarre programmatori Java verso .NET... lascia perdere.
L'unico linguaggio decente se vuoi sviluppare in .NET a mio parere è il C#

^TiGeRShArK^
18-03-2005, 16:26
Infatti ho già risolto tutto con Java senza usare .NET ;)