Introdução ao Spring Security LDAP

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.

Read more

Guia do Spring Data LDAP

Aprenda a usar o Spring Data com LDAP.

Read more

Dados do Spring com Spring Security

Veja como integrar o Spring Data ao Spring Security.

Read more

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á.