Login usando usuario e senha do windows - exemplo JCIFS

Olá pessoal,

Estou tentando usar o JCIFS (http://jcifs.samba.org) para fazer login de usuário e senha na minha aplicação Java usando os mesmos dados de login no Windows da rede.

Baixei o pacote do JCIFS, e testei a classe Logon.java que fica na pasta “examples”:

[code]import jcifs.;
import jcifs.smb.
;

public class Logon {

/* java Logon 192.168.1.15 "dom;user:pass"
 */

public static void main( String argv[] ) throws Exception {
	String userdir=System.getProperty("user.dir");
	System.out.println("user.dir="+userdir);
	String userhome=System.getProperty("user.home");
	System.out.println("user.home="+userhome);
	System.out.println("argv[0]="+argv[0]);


	System.out.println("argv[1]="+argv[1]);
    UniAddress dc = UniAddress.getByName( argv[0] );
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( argv[1] );
    SmbSession.logon( dc, auth );
}

}[/code]

Compilou beleza, mas está aparecendo a seguinte exceção ao rodar:

Exception in thread "main" jcifs.smb.SmbAuthException: Logon failure: user not a llowed to log on to this computer. at jcifs.smb.SmbTransport.send(SmbTransport.java:689) at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:271) at jcifs.smb.SmbSession.send(SmbSession.java:228) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:134) at jcifs.smb.SmbSession.logon(SmbSession.java:159) at jcifs.smb.SmbSession.logon(SmbSession.java:152) at Logon.main(Logon.java:19)

Onde está o erro? Ao executar a classe uso o comando do DOS:

java Logon meu_ip "meu_dominio;usuario:senha"

No meu_ip tentei usar o ip da minha máquina e também o endereço de Servidor Wins Primário mas deu a mesma exceção. O domínio, usuário e senha acredito estarem corretos, pois usei o seguinte código para verificar o domínio:

[code]import com.sun.security.auth.module.NTSystem;

public class VerificaDominio{
public static void main(String args[]){
NTSystem system = new NTSystem();
String domain = system.getDomain();
System.out.println(“Dominio=”+domain);
}

}[/code]
e utilizei na linha de comando.

Estou usando Windows 2000 Professional.

Valeu

faz tempo que eu não uso o cifs…
mais se eu não me engano seria : ao no lugar do ; que vc esta usando no nome do dominio.

dominio:usuario:senha e não dominio;usuario:senha

se a sua aplicação for web usar o filtro seria bem mais interessante.

Tentei usar “:” ao invés de “;” mas deu exceção:

jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password. at jcifs.smb.SmbTransport.send(SmbTransport.java:689) at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:271) at jcifs.smb.SmbSession.send(SmbSession.java:228) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:134) at jcifs.smb.SmbSession.logon(SmbSession.java:159) at jcifs.smb.SmbSession.logon(SmbSession.java:152) at Logon.main(Logon.java:21)

Outra idéia?

Desculpem a “ingnorância”, mas com esse pacote eu consigo realizar autenticação no Active directory do Windows 2003?

Por que nem todo mundo usa Active Directory muito menos o Windows 2003.