To je sice pekne, ale ptal jsem se proto ze tu mam dva zdrojaky. Jeden
podobny jiz zaslanemu. Osobne ale ted pouzivam spring-ldap. Docela bych mu
to doporucoval. Sel by pouzit i bez springu. Mnohem mene se nadre pri
programovani filtru, strankovani, ...
Jeste je dobre si k spring-ldap pripsat knihovnu na parsovani promennych.
Takze mi pak vracel rovnou treba integer hodnotu, ... Posilal jsem na to
sveho casu patch ktery neprijali ze je pry zbytecny. Tak to mam jako
utilitu.
Je k tomu dobry tutorial.
Pet
On Wed, 21 Nov 2007 11:26:13 +0100, Pavel Zelenka <[EMAIL PROTECTED]>
wrote:
tento nazor zastavam taky.
Diky za zaslany priklad.
Adámek Lukáš <[EMAIL PROTECTED]>
Odeslal: [EMAIL PROTECTED]
21.11.2007 11:04
Odpovězte prosím uživateli
Java <konference@java.cz>
Komu
"Java" <konference@java.cz>
Kopie
Předmět
RE: Tomcat + LDAP
Ahoj
Zastavam nazor, ze priklad je za 1000 stran teorie:
DirContext dirContext = null;
DirContext dirContextUser = null;
NamingEnumeration results = null;
String userHierarchy = null;
try {
Hashtable<String, String> account = new Hashtable<String,
String>();
account.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
account.put("com.sun.jndi.ldap.connect.timeout", "5000");
account.put(Context.PROVIDER_URL, "ldap://" + server + portS);
account.put(Context.SECURITY_PRINCIPAL, login);
account.put(Context.SECURITY_CREDENTIALS, psswd);
account.put(Context.SECURITY_AUTHENTICATION,
securityAuthentication);
dirContextOKBase = new InitialDirContext(account);
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
results = dirContext.search(hierarchy,
"(&(objectClass=user)(samaccountname=" + loginUser + "))", controls);
while (results.hasMoreElements()) {
SearchResult sr = (SearchResult) results.next();
userHierarchy = sr.getName();
}
} catch (CommunicationException e) {
logger.error(e);
throw new
AutentizaceException(AutentizaceExceptionTyp.CHYBA_KOMUNIKACE_S_AD);
} catch (AuthenticationException e) {
logger.error(e);
throw new
AutentizaceException(AutentizaceExceptionTyp.VADNY_UCET_K_AD);
} catch (NamingException e) {
logger.error(e);
throw new
AutentizaceException(AutentizaceExceptionTyp.CHYBA_KOMUNIKACE_S_AD);
}
finally {
if (results != null) {
try {
results.close();
} catch (NamingException e) {
logger.error(e);
}
}
if (dirContextOKBase != null) {
try {
dirContextOKBase.close();
} catch (NamingException e) {
logger.error(e);
}
}
if (dirContextUser != null) {
try {
dirContextUser.close();
} catch (NamingException e) {
logger.error(e);
}
}
}
l.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Pavel Zelenka
Sent: Wednesday, November 21, 2007 10:54 AM
To: Java
Subject: Re: Tomcat + LDAP
Ne nepouzivam.
"Petr Burdik" <[EMAIL PROTECTED]>
Odeslal: [EMAIL PROTECTED]
21.11.2007 09:13
Odpovězte prosím uživateli
Java <konference@java.cz>
Komu
Java <konference@java.cz>
Kopie
Předmět
Re: Tomcat + LDAP
Jeste dotaz nez napisu cely prispevek. Pouzivate spring?
Pet
On Wed, 21 Nov 2007 08:56:26 +0100, Pavel Zelenka
<[EMAIL PROTECTED]>
wrote:
Dobrý den,
potřeboval bych poradit jak rozchodit LDAP autentifikaci.
V současnosti provádím autentifikaci uživatelů webové aplikace, která
běží
na Tomcatu 6.0.14 tak, že mám v SQL databázi tabulku uživatelů a
uživatelé
se hlásí prostřednictvím formuláře, kde následně servletem zkontroluji
jméno a heslo.
Chtěl bych však pro autentifikaci uživatelů použít LDAP server, který u
nás běží. Z dostupných informací, které jsem dopsud našel však nejsem
nijak moudrý. Nevíte jak na to?
Možná bych ještě upřesnil, že bych autentifikaci chtěl nadále dělat tak,
že uživatel zadá do formuláře jméno + heslo a následně servlet provede
autentifikaci oproti LDAP. Z různých zdrojů jsem nakonec vypotil
následujcí kód, ale nevím jestli je vhodný i pro webovou aplikaci a
hlavně, jestli je to správné řešení
public class Main {
public static void main(String[] args) {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,
"ldap://muj_server:389/o=Mediaservis");
// Authenticate as
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Pavel Zelenka,
o=Mediaservis");
env.put(Context.SECURITY_CREDENTIALS, "heslo");
try {
// Create initial context
DirContext ctx = new InitialDirContext(env);
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Díky
Pavel Zelenka
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/