@Configuration
public class LdapConfiguration {
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.port}")
private int ldapPort;
@Value("${ldap.admin.username}")
private String adminUsername;
@Value("${ldap.admin.password}")
private String adminPassword;
}
@LdapEntry(baseDn = "ou=users,dc=example,dc=com")
public class User {
@LdapAttribute(name = "uid")
private String username;
@LdapAttribute(name = "cn")
private String fullName;
}
@LdapEntry(baseDn = "ou=users,dc=example,dc=com")
public interface UserRepository extends LdapRepository<User> {
User findByUsername(String username);
}
@Service
public class UserService {
private final LdapTemplate ldapTemplate;
public UserService(LdapTemplate ldapTemplate) {
this.ldapTemplate = ldapTemplate;
}
public void createUser(User user) {
ldapTemplate.create(user);
}
}
<dependency>
<groupId>com.github.agrison</groupId>
<artifactId>oxldap</artifactId>
<version>1.0.0</version>
</dependency>
ldap.url=ldap://example.com
ldap.port=389
ldap.admin.username=admin
ldap.admin.password=secret
@Configuration
public class AppConfig {
@Autowired
private LdapConfiguration ldapConfiguration;
@Bean
public LdapTemplate ldapTemplate() {
return new LdapTemplate(ldapConfiguration);
}
}