Introdução ao Spring Security LDAP
1. Visão geral
Neste tutorial rápido, aprenderemos como configurar o LDAP do Spring Security.
Antes de começarmos, uma observação sobre o que é LDAP - significa Lightweight Directory Access Protocol e é um protocolo aberto e independente de fornecedor para acessar serviços de diretório em uma rede.
Leitura adicional:
Visão geral do Spring LDAP
Aprenda a usar as APIs LDAP do Spring para autenticar e pesquisar usuários, além de criar e modificar usuários no servidor de diretório.
Dados do Spring com Spring Security
Veja como integrar o Spring Data ao Spring Security.
2. Dependência do Maven
Primeiro, vamos dar uma olhada nas dependências que precisamos:
org.springframework.security
spring-security-ldap
org.apache.directory.server
apacheds-server-jndi
1.5.5
Nota: UsamosApacheDS como nosso servidor LDAP, que é um servidor de diretório extensível e incorporável.
3. Configuração Java
A seguir, vamos discutir nossa configuração Spring Security Java:
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");
}
}
Obviamente, esta é apenas a parte relevante do LDAP da configuração - a configuração Java completa pode ser encontradahere.
4. Configuração XML
Agora, vamos dar uma olhada na configuração XML correspondente:
Novamente, isso é apenas parte da configuração - a parte que é relevante para o LDAP; a configuração XML completa pode ser encontradahere.
5. Formato de intercâmbio de dados LDAP
Os dados LDAP podem ser representados usando o formato de intercâmbio de dados LDAP (LDIF) - aqui está um exemplo de nossos dados de usuário:
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. A aplicação
Finalmente, aqui está a nossa aplicação simples:
@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. Conclusão
Neste guia rápido para Spring Security com LDAP, aprendemos como provisionar um sistema básico com LDIF e configurar a segurança desse sistema.
Ofull implementation deste tutorial pode ser encontrado emthe github project - este é um projeto baseado em Eclipse, portanto, deve ser fácil de importar e executar como está.