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/

Odpovedet emailem