- 12 Views
- 0 Comments
General ECM Questions
Create/Delete user in LDAP
FunMaster
- Post By FunMaster
- 1 week ago
import javax.naming.NamingException;
import javax.naming.NameNotFoundException;
import javax.naming.directory.*;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import javax.naming.ldap.Control;
import java.util.Hashtable;
import java.util.ResourceBundle;
public class LdapUserOps {
private static LdapContext ldapCtx;
private static final ResourceBundle configBundle = ResourceBundle.getBundle("ldapconfig");
// Initializes and returns an LDAP context
public static LdapContext initializeConnection() throws Exception {
LdapContext context = null;
String adminUser = "cn=root,ou=users, o=sample,c=country";
String adminPass = "abcd@123";
try {
String serverIP = configBundle.getString("LDAP_IP");
String serverPort = configBundle.getString("LDAP_PORT");
String ldapURL = "ldap://" + serverIP + ":" + serverPort;
System.out.println("Connecting to LDAP at: " + ldapURL);
Hashtable<String, String> envSettings = new Hashtable<>();
envSettings.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
envSettings.put(Context.PROVIDER_URL, ldapURL);
envSettings.put(Context.SECURITY_AUTHENTICATION, "simple");
envSettings.put(Context.SECURITY_PRINCIPAL, adminUser);
envSettings.put(Context.SECURITY_CREDENTIALS, adminPass);
Control[] controls = { new PasswordPolicyControl(true) };
context = new InitialLdapContext(envSettings, controls);
} catch (Exception ex) {
ex.printStackTrace();
}
return context;
}
// Constructs DN string for a given user
private static String buildUserDN(String userId) {
return "cn=" + userId + ",ou=users, o=sample,c=country";
}
// Adds a new LDAP user entry
private static void registerLdapUser(String uid, String lastName, String jobTitle,
String email, String empId, String phone, String fullName, String pwd) {
try {
ldapCtx = initializeConnection();
Attributes attributes = new BasicAttributes();
Attribute objectClasses = new BasicAttribute("objectClass");
objectClasses.add("top");
objectClasses.add("person");
objectClasses.add("organizationalPerson");
objectClasses.add("inetOrgPerson");
attributes.put(objectClasses);
attributes.put(new BasicAttribute("cn", uid));
attributes.put(new BasicAttribute("sn", lastName));
attributes.put(new BasicAttribute("uid", uid));
attributes.put(new BasicAttribute("title", jobTitle));
attributes.put(new BasicAttribute("mail", email));
attributes.put(new BasicAttribute("mobile", phone));
attributes.put(new BasicAttribute("employeeNumber", empId));
attributes.put(new BasicAttribute("displayName", fullName));
attributes.put(new BasicAttribute("userPassword", pwd));
ldapCtx.createSubcontext(buildUserDN(uid), attributes);
System.out.println(pwd + " - has been set as the password for user: " + uid);
} catch (Exception err) {
System.err.println("Error while creating user: " + err.getMessage());
}
}
// Deletes an LDAP user entry
private static void removeLdapUser(String userId) throws NamingException {
try {
ldapCtx.destroySubcontext(buildUserDN(userId));
System.out.println("Successfully removed user: " + userId);
} catch (NameNotFoundException nf) {
System.err.println("User not found for deletion: " + nf.getMessage());
}
}
}
Login To Post Your Comment