Login usando usuario e senha do windows - exemplo JCIFS

4 respostas
R

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":

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 );
    }
}
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:

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);
	}

}
e utilizei na linha de comando.

Estou usando Windows 2000 Professional.

Valeu

4 Respostas

E

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.

R

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?

J

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

J

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

Criado 19 de junho de 2006
Ultima resposta 5 de ago. de 2006
Respostas 4
Participantes 4