问题描述
我正在构建一个基于 GXT (J2EE) 的应用程序.现在的问题是我必须将应用程序连接到 LDAP 服务器.你能告诉我如何从我们的 java 应用程序连接 LDAP 服务器,以及我必须使用什么库或 API 吗?
I am building an application based on GXT (J2EE). Now the problem is that I have to connect the application to a LDAP server. Can you tell me how to connect a LDAP server from our java application and what Library or API I will have to use for that?
推荐答案
要连接到 LDAP,请查看以下包/类:
To connect to LDAP, check out the following packages/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(); ...
在这个例子中,我有一个配置对象,它从配置文件中读取这些值.
In this example I have a Configuration object that reads these values from a config file.
值是:
# 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 = ******