Spring Security prend déjà en charge LDAP prêt à l'emploi. Il contient en fait un chapitre entier à ce sujet.
Pour utiliser et configurer LDAP, ajoutez le spring-security-ldap
dépendance et utilisez ensuite AuthenticationManagerBuilder.ldapAuthentication
pour le configurer. Le LdapAuthenticationProviderConfigurer
vous permet de configurer les éléments nécessaires.
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.contextSource()
.url(...)
.port(...)
.managerDn(...)
.managerPassword(...)
.and()
.passwordEncoder(passwordEncoder())
.userSearchBase(...)
.ldapAuthoritiesPopulator(new UserServiceLdapAuthoritiesPopulater(this.userService));
}
Quelque chose comme ça (cela devrait vous donner au moins une idée de quoi/comment configurer les choses), il y a plus d'options mais vérifiez les javadocs pour cela. Si vous ne pouvez pas utiliser le UserService
tel quel pour récupérer les rôles (car seuls les rôles sont dans la base de données) puis implémentez votre propre LdapAuthoritiesPopulator
pour ça.