package manex.econtact.model;
import javax.naming.directory.*;
import javax.naming.*;
import java.util.*;
import manex.econtact.model.CommonBean;
import
manex.econtact.admin.AllFieldBean;
import
manex.econtact.admin.AdminBean;
public class Ad {
String port =
"389";
String host = "172.26.64.52";
public Ad() {
}
public String
Validar(String user,String passwd)
{
String
userEcontact = "";
Hashtable
env = new Hashtable();
DirContext
ctx;
String
port = "389";
String
host = "172.26.64.52";
userEcontact = user;
user
= "BGGRUPO\\"+user;
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,
user);
env.put(Context.SECURITY_CREDENTIALS,
passwd);
env.put("java.naming.ldap.version",
"3");
env.put(Context.REFERRAL,
"follow");
String
url = new String("LDAP://"+host+":"+port);
//String
url = new String("LDAP://DC=bggrupo,DC=bank");
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,url);
System.err.println("Connecting
to " +url);
try
{
ctx
= new InitialDirContext(env);
//ctx.bind(user,
ctx, null);
System.err.println("Connected
to " +url);
ctx.close();
ValidarUser(userEcontact);
return
"1";
}
catch(Exception
e)
{
System.out.println("Username/Password
Incorrecto");
return
"0";
}
Con este código yo le paso un user y el
pass como parámetro y si se conecta no se va por el exeption y si no se conecta
( user o pass incorrecto, o cualquier otra cosa) me da una exeption y me
retorna 0
Espero que te sirva porque a mi me sirve
de 1000 maravillas
Atte
red
De:
SoloJava@... [mailto:SoloJava@...] En nombre de Miren Urkijo
Enviado el: Lunes, 10 de Abril de
2006 02:32 p.m.
Para: SoloJava@...
Asunto: [SoloJava]
Auntentificacion contra un active directory 2003 (contra ldap)
Hola estoy tratando de escribir un codigo para
auntentificar, usando java, usuarios contra un active directory de un windows
2003.
bien mediante el codigo de abajo lo que hago es conectarme
como administrados y hacer una busqueda a ver si hay un usuairo que sea como el
usuairo que le paso.
con esto lo que hago es ver si hay algun usuairo con un
nombre de window socmo le que le paso.
bien tambien tengo el password pero no se como ponerselo
para que tambien me lo compare y me haga la busqueda en base a usuario y
password.
No se ni donde se busca ni como se compararia.
Me podeis ayudar?
muchas gracias
//codigo:
String username="usuarioDemo";
Hashtable env = new Hashtable();
//String adminName = "Administrador";
String adminName = "Administrador";
String adminPassword = "<PASSWORD>";
String ldapURL = "ldap://1270.0.1:389";
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,adminName);
env.put(Context.SECURITY_CREDENTIALS,adminPassword);
env.put(Context.PROVIDER_URL,ldapURL);
try {
DirContext ctx = new InitialLdapContext(env,null);
SearchControls searchCtls = new SearchControls();
String returnedAtts[]={"sn","givenName","mail"};
searchCtls.setReturningAttributes(returnedAtts);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(&(objectClass=user)(SAMAccountName="+
username +"))";
String searchBase = "OU=Users,DC=corp,DC=com";
int totalResults = 0;
NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
..........
La cosa es como concateno aqui el password ya que me
imagino que en windows estará codificado y primero lo tendrá que codificar
para compararlo.
Me podeis ayudar?
muchas gracias