Introduction à Spring Security LDAP
1. Vue d'ensemble
Dans ce didacticiel rapide, nous allons apprendre à configurer Spring Security LDAP.
Avant de commencer, une note sur ce qu'est LDAP - il signifie Lightweight Directory Access Protocol et c'est un protocole ouvert et indépendant du fournisseur pour accéder aux services d'annuaire sur un réseau.
Lectures complémentaires:
Spring LDAP Présentation
Apprenez à utiliser les API Spring LDAP pour authentifier et rechercher des utilisateurs, ainsi que pour créer et modifier des utilisateurs sur le serveur d'annuaire.
Guide de printemps des données LDAP
Apprenez à utiliser les données de printemps avec LDAP.
Données Spring avec Spring Security
Découvrez comment intégrer Spring Data à Spring Security.
2. Dépendance Maven
Voyons d’abord les dépendances maven dont nous avons besoin:
org.springframework.security
spring-security-ldap
org.apache.directory.server
apacheds-server-jndi
1.5.5
Remarque: Nous avons utiliséApacheDS comme serveur LDAP qui est un serveur d'annuaire extensible et intégrable.
3. Configuration Java
Ensuite, parlons de notre configuration Java Spring Security:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase("ou=people")
.userSearchFilter("(uid={0})")
.groupSearchBase("ou=groups")
.groupSearchFilter("member={0}")
.contextSource()
.root("dc=example,dc=com")
.ldif("classpath:users.ldif");
}
}
Il ne s'agit bien sûr que de la partie LDAP pertinente de la configuration - la configuration Java complète peut être trouvéehere.
4. Configuration XML
Voyons maintenant la configuration XML correspondante:
Encore une fois, ce n'est qu'une partie de la configuration - la partie qui est pertinente pour LDAP; la configuration XML complète peut être trouvéehere.
5. Format d'échange de données LDAP
Les données LDAP peuvent être représentées à l'aide du LDAP Data Interchange Format (LDIF) - voici un exemple de nos données utilisateur:
dn: ou=groups,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=people,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
dn: uid=example,ou=people,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jim Beam
sn: Beam
uid: example
userPassword: password
dn: cn=admin,ou=groups,dc=example,dc=com
objectclass: top
objectclass: groupOfNames
cn: admin
member: uid=example,ou=people,dc=example,dc=com
dn: cn=user,ou=groups,dc=example,dc=com
objectclass: top
objectclass: groupOfNames
cn: user
member: uid=example,ou=people,dc=example,dc=com
6. L'application
Enfin, voici notre application simple:
@Controller
public class MyController {
@RequestMapping("/secure")
public String secure(Map model, Principal principal) {
model.put("title", "SECURE AREA");
model.put("message", "Only Authorized Users Can See This Page");
return "home";
}
}
7. Conclusion
Dans ce guide rapide sur Spring Security avec LDAP, nous avons appris à approvisionner un système de base avec LDIF et à configurer la sécurité de ce système.
Lesfull implementation de ce didacticiel se trouvent dansthe github project - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.