Autenticação no windows

9 respostas
J

olá,
estou fazendo uma aplicação que tem se logar nas maquinas para acessar pastas para pegar arquivos como faço para autenticar? tenho q usar NTLM?
Grato.

9 Respostas

B

você pode tentar assim…

import java.util.Hashtable;

import javax.naming.AuthenticationException;

import javax.naming.Context;

import javax.naming.NamingException;

import javax.naming.directory.DirContext;

import javax.naming.directory.InitialDirContext;
public class Login {

public static void main(String[] args) {

Hashtable authEnv = new Hashtable(11);

authEnv.put(Context.INITIAL_CONTEXT_FACTORY,com.sun.jndi.ldap.LdapCtxFactory);

authEnv.put(Context.PROVIDER_URL, ldap://[dominio]:389”);

authEnv.put(Context.SECURITY_AUTHENTICATION, simple);

authEnv.put(Context.SECURITY_PRINCIPAL, [usuario]@[dominio].com.br);

authEnv.put(Context.SECURITY_CREDENTIALS, [senha]);

//----------------------------------------------------------------

try

{

DirContext authContext = new InitialDirContext(authEnv);

System.out.println(logado);

authContext.close();
}
    catch (AuthenticationException authEx)
    {
        System.out.println("Erro na autenticação! Tente novamente.");
        authEx.printStackTrace();
    }
    catch (NamingException namEx)
    {
        //out.println("Problemas na conexão! ");
        System.out.println("Problemas na conexão! Sua maquina pode estar fora da rede. Contate o Suporte Tecnico");
        namEx.getCause().printStackTrace();
    }
}

}

J

olá, essa solução é se eu estiver em um ambiente com dominio não é?, mas se eu estiver em um grupo de trabalho como faz?

obs ainda nao testei a soluçao tenho criar uma maquina virtual com dominio para testar.
grato.

J

testei o codigo funcionou de boa aparece logado mas nao me da as permissoes que eu preciso
como pegar o campartilhamento de segurança
wlw.

J

algume sabe pq o codigo acima autentica mas nao me das os privilegios do usuario que deveria me daré como se ele estivesse somente escevendo logado e nao me da os privilegios, fiz uma modificações para testar e descobri q nao esta autenticando.

import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

public class login
{
    public static void main(String[] args) throws IOException
    {
        Hashtable authEnv = new Hashtable(11);
        authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
        authEnv.put(Context.PROVIDER_URL, "ldap://172.16.0.1:389");
        authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
        authEnv.put(Context.SECURITY_PRINCIPAL, "[email removido]");
        authEnv.put(Context.SECURITY_CREDENTIALS, "xxxxxx")
//----------------------------------------------------------------
        try
        {
            DirContext authContext = new InitialDirContext(authEnv);
            System.out.println("logado");
            authContext.close();
        }
        catch (AuthenticationException authEx)
        {
            System.out.println("Erro na autenticação! Tente novamente.");
            authEx.printStackTrace();
        }
        catch (NamingException namEx) 
        {
        //out.println("Problemas na conexão! ");
            System.out.println("Problemas na conexão! Sua maquina pode estar fora da rede. Contate o Suporte Tecnico");
            namEx.getCause().printStackTrace();
        }
        File file = new File("\\\\172.16.0.200\\C$");
        String dir[] = file.list();
        
        for(int k=0; k<dir.length;k++)
        {
            System.out.println(dir[k]);

        }
        System.exit(0);
    }
}

sendo q a maquina q eu estou testando esta fora do dominio se eu rodar a aplicação ele aparece logado, mas nao recuepra lista de arquivos e pastas do C$ mas se antes de eu rodar a aplicação ja tiver acessado pela rede e digitado o usuario e senha ele funciona ou seja nao autenticou.

Grato.

B

Você tentou colocar o codigo dentro do try ?

J

testei o bloco de codigo dentro do try antes do authContext.close(); e depois tb e nao funcionou e como se ele nao tivesse autenticando.
grato.

J

algume sabe como posso resolver o problema acima?
so tem esse mode de autentincar em rede windows? uma outra duvida como eu sie se uma psta esta compartilhada ou nao com o java tem como?
Grato.

J

tem como autenticar de outro jeito?

J

ai nda estou com esse problema agluem sabe como resolver?

Criado 1 de junho de 2009
Ultima resposta 25 de nov. de 2009
Respostas 9
Participantes 2