Рубрики
Без рубрики

Введение в Spring Security LDAP

Простое и практическое руководство по использованию LDAP и LDIF с Spring Security.

Автор оригинала: Eugen Paraschiv.

1. Обзор

В этом кратком руководстве мы узнаем, как настроить LDAP Spring Security.

Прежде чем мы начнем, обратите внимание на то, что такое LDAP – это легкий протокол доступа к каталогам, и это открытый, нейтральный к поставщикам протокол для доступа к службам каталогов по сети.

Дальнейшее чтение:

Обзор весеннего LDAP

Руководство по Spring Data LDAP

Данные Spring с защитой Spring

2. Зависимость Maven

Во-первых, давайте взглянем на зависимости maven, которые нам нужны:


    org.springframework.security
    spring-security-ldap



    org.apache.directory.server
    apacheds-server-jndi
    1.5.5

Примечание: Мы использовали ApacheDS в качестве нашего LDAP-сервера, который является расширяемым и встраиваемым сервером каталогов.

3. Конфигурация Java

Далее давайте обсудим нашу конфигурацию 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=baeldung,dc=com")
            .ldif("classpath:users.ldif");
    }
}

Это, конечно, только соответствующая LDAP часть конфигурации – полную конфигурацию Java можно найти здесь .

4. Конфигурация XML

Теперь давайте рассмотрим соответствующую конфигурацию XML:


    
    

   

Опять же, это всего лишь часть конфигурации – та часть, которая имеет отношение к LDAP; полную конфигурацию XML можно найти здесь .

5. Формат обмена данными LDAP

Данные LDAP могут быть представлены с использованием формата обмена данными LDAP (LDIF) – вот пример наших пользовательских данных:

dn: ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

dn: uid=baeldung,ou=people,dc=baeldung,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jim Beam
sn: Beam
uid: baeldung
userPassword: password

dn: cn=admin,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupOfNames
cn: admin
member: uid=baeldung,ou=people,dc=baeldung,dc=com

dn: cn=user,ou=groups,dc=baeldung,dc=com
objectclass: top
objectclass: groupOfNames
cn: user
member: uid=baeldung,ou=people,dc=baeldung,dc=com

6. Приложение

Наконец, вот наше простое приложение:

@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. Заключение

В этом кратком руководстве по безопасности Spring с LDAP мы узнали, как обеспечить базовую систему LDIF и настроить безопасность этой системы.

полную реализацию этого учебника можно найти в проекте GitHub – это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.