Введение в Spring Security LDAP
1. обзор
В этом кратком руководстве мы узнаем, как настроить Spring Security LDAP.
Прежде чем мы начнем, заметка о том, что такое LDAP - это означает облегченный протокол доступа к каталогам, и это открытый, независимый от поставщика протокол для доступа к службам каталогов по сети.
Дальнейшее чтение:
Spring LDAP Обзор
Узнайте, как использовать API-интерфейсы Spring LDAP для аутентификации и поиска пользователей, а также для создания и изменения пользователей на сервере каталогов.
Spring Data с помощью Spring Security
Узнайте, как интегрировать Spring Data с Spring Security.
2. Maven Dependency
Во-первых, давайте взглянем на необходимые нам 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=example,dc=com")
.ldif("classpath:users.ldif");
}
}
Это, конечно, только относящаяся к LDAP часть конфигурации - полную конфигурацию Java можно найтиhere.
4. Конфигурация XML
Теперь давайте посмотрим на соответствующую конфигурацию XML:
Опять же, это всего лишь часть конфигурации - часть, относящаяся к LDAP; полную конфигурацию XML можно найти вhere.
5. Формат обмена данными LDAP
Данные LDAP могут быть представлены с использованием формата обмена данными LDAP (LDIF) - вот пример наших пользовательских данных:
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. Приложение
Наконец, вот наше простое приложение:
@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 Security с LDAP мы узнали, как обеспечить базовую систему LDIF и настроить безопасность этой системы.
full implementation этого руководства можно найти вthe github project - это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.