@Configuration
public class LdapConfig {
@Bean
public LdapConnectionConfig ldapConnectionConfig() {
LdapConnectionConfig connectionConfig = new LdapConnectionConfig();
connectionConfig.setLdapUrl("ldap://localhost:389");
connectionConfig.setBindDn("cn=admin,dc=example,dc=com");
connectionConfig.setPassword("admin");
return connectionConfig;
}
@Bean
public LdapOperations ldapOperations() {
return new LdapOperations(ldapConnectionConfig());
}
}
@LdapEntry(dn = "cn=users,dc=example,dc=com", objectClasses = {"inetOrgPerson"})
public class User {
@LdapAttribute(id = "cn")
private String cn;
@LdapAttribute(id = "sn")
private String sn;
@LdapAttribute(id = "userPassword")
private String password;
// Getters and setters
}
@Service
public class UserService {
private final LdapOperations ldapOperations;
@Autowired
public UserService(LdapOperations ldapOperations) {
this.ldapOperations = ldapOperations;
}
public void createUser(User user) {
ldapOperations.create(user);
}
public void updateUser(User user) {
ldapOperations.update(user);
}
public void deleteUser(User user) {
ldapOperations.delete(user);
}
public User getUser(String cn) {
return ldapOperations.retrieve(User.class, cn);
}
}