Подключение сервера LDAP из JAVA-приложения

Я создаю приложение на основе GXT (J2EE). Теперь проблема состоит в том, что я должен подключить приложение к серверу LDAP. Можно ли сказать мне, как подключить сервер LDAP из нашего JAVA-приложения и какой Библиотекой или API я должен буду пользоваться для этого?

7
задан dhiraj 21 May 2010 в 10:10
поделиться

1 ответ

Чтобы подключиться к LDAP, ознакомьтесь со следующими пакетами / classes:

javax.naming.directory.*
javax.naming.ladp.*
com.sun.jndi.ldap.LdapCtxFactory
com.sun.jndi.ldap.ControlFactory

Пример кода:

//build a hashtable containing all the necessary configuration parameters
Hashtable<String, String> environment = new Hashtable<String, String>();

environment.put(LdapContext.CONTROL_FACTORIES, conf.getProperty("ldap.factories.control"));
environment.put(Context.INITIAL_CONTEXT_FACTORY, conf.getProperty("ldap.factories.initctx"));
environment.put(Context.PROVIDER_URL, conf.getProperty("ldap.host"));
environment.put(Context.SECURITY_AUTHENTICATION, "simple");
environment.put(Context.SECURITY_PRINCIPAL, conf.getProperty("ldap.user"));
environment.put(Context.SECURITY_CREDENTIALS, conf.getProperty("ldap.password"));
environment.put(Context.STATE_FACTORIES, "PersonStateFactory");
environment.put(Context.OBJECT_FACTORIES, "PersonObjectFactory");

// connect to LDAP
DirContext ctx = new InitialDirContext(environment);

// Specify the search filter
String FILTER = "(&(objectClass=Person) ((sAMAccountName=" + user.getUsername() + ")))";

// limit returned attributes to those we care about
String[] attrIDs = { "sn", "givenName" };

SearchControls ctls = new SearchControls();
ctls.setReturningAttributes(attrIDs);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);

// Search for objects using filter and controls
NamingEnumeration answer = ctx.search(searchBase, FILTER, ctls);

...

SearchResult sr = (SearchResult) answer.next();
Attributes attrs = sr.getAttributes();
surName = attrs.get("sn").toString();
givenName = attrs.get("givenName").toString();
...

В этом примере у меня есть объект конфигурации, который считывает эти значения из файла конфигурации.

Значения будут следующими:

# LDAP parameters
ldap.host = ldap://ldap.mydomain.com:389
ldap.factories.initctx = com.sun.jndi.ldap.LdapCtxFactory
ldap.factories.control = com.sun.jndi.ldap.ControlFactory
ldap.searchbase = dc=mydomain,dc=us
ldap.user = MYDOMAIN.COM\\ldap-user
ldap.userBase= MYDOMAIN.COM\\
ldap.password = ******
9
ответ дан 6 December 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: