Spring Security LDAP简介

1.概述

在本快速教程中,我们将学习如何设置Spring Security LDAP。

在我们开始之前,了解一下LDAP是什么? - 它代表轻量级目录访问协议。它是一种开放的,与供应商无关的协议,用于通过网络访问目录服务

2. Maven Dependency

首先,让我们看看我们需要的maven依赖项:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-ldap</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-server-jndi</artifactId>
    <version>1.5.5</version>
</dependency>

注意:我们使用ApacheDS作为LDAP服务器,它是一个可扩展和可嵌入的目录服务器。

3. Java Configuration

接下来,我们来讨论我们的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=baeldung,dc=com")
            .ldif("classpath:users.ldif");
    }
}

这当然只是配置的LDAP相关部分 - 可以在此处找到完整的Java配置

4. XML Configuration

现在,我们来看看相应的XML配置:

<authentication-manager>
    <ldap-authentication-provider
      user-search-base="ou=people"
      user-search-filter="(uid={0})"
      group-search-base="ou=groups"
      group-search-filter="(member={0})">
    </ldap-authentication-provider>
</authentication-manager>

<ldap-server root="dc=baeldung,dc=com" ldif="users.ldif"/>

同样,这只是配置的一部分 - 与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. The Application

最后,这是我们的简单应用:

@Controller
public class MyController {

    @RequestMapping("/secure")
    public String secure(Map<String, Object> model, Principal principal) {
        model.put("title", "SECURE AREA");
        model.put("message", "Only Authorized Users Can See This Page");
        return "home";
    }
}

7.总结

在这本使用LDAP的Spring Security快速指南中,我们学习了如何使用LDIF配置基本系统并在spring security配置LDAP。

可以在github项目中找到本教程的完整实现 - 这是一个基于Eclipse的项目,因此它应该很容易导入和运行。

原文地址:https://www.cnblogs.com/xjknight/p/10905208.html

时间: 2024-07-29 04:57:16

Spring Security LDAP简介的相关文章

Spring Security认证简介

认证简介 认证过程 用户使用用户名和密码进行登录. Spring Security 将获取到的用户名和密码封装成一个实现了 Authentication 接口的 UsernamePasswordAuthenticationToken. 将上述产生的 token 对象传递给 AuthenticationManager 进行登录认证. AuthenticationManager 认证成功后将会返回一个封装了用户权限等信息的 Authentication 对象. 通过调用 SecurityContex

springboot集成spring security实现restful风格的登录认证 附代码

一.文章简介 本文简要介绍了spring security的基本原理和实现,并基于springboot整合了spring security实现了基于数据库管理的用户的登录和登出,登录过程实现了验证码的校验功能. 完整代码地址:https://github.com/Dreamshf/spring-security.git 二.spring security框架简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.主要包括:用户认证

Spring Security探究之路之开始

前言 在Spring Security介绍中,我们分析到了根据请求获取匹配的SecurityFilterChain,这个类中包含了一组Filter 接下来我们从这些Filter开始探究之旅 Spring Security Filter简介 AuthenticationFilter中的attemptAuthentication方法调用AuthenticationManager(interface)的authenticate方法,AuthenticationManager的实际是现实ProvideM

Spring Security: Spring Security简介

Spring Security简介 安全领域的两大核心是:Authentication和Authorization . ·Authentication是身份认证,把控一个系统的入口. ·Authorization是授权,用于进行系统中功能的访问控制. Spring Security 为J2EE项目提供了一个综合的解决方案,支持Authentication和Authorization. Spring Security对于Authentication提供了很宽泛的支持.集成了多种认证技术: HTTP

基于Spring LDAP和Spring Security的用户认证和权限控制Web实现

利用LDAP服务,使用Spring LDAP,Spring Security实现Web项目用户认证和简单的权限控制.实现多系统账号统一. 1.基于EHR的LDAP用户信息 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP目录以树状的层次结构来存储数据.如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌LDAP目录树这个概念了.就象DNS的主机名那样,LDAP目录记录的标识名(Dis

Spring security 集成ldap服务,实现统一验证

<span style="font-size:18px;">先说一下Spring security 是基于spring的一个强大的安全验证模块,它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能.</span> LDAP是轻量目录访问协议,基

Spring Security简介

1. Spring Security 是什么? Spring Security是一个强大的和高度可定制的身份验证和访问控制框架,它的前身是 Acegi Security. Spring Security着重于为Java应用程序提供身份验证和授权.身份验证是为用户建立一个他所声明的主体的过程(主体一般式指用户,设备或可以在你系统中执行动作的其他系统).授权指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主体已经由身份验证过程建立了.这些概念是通用的,并不是Spring Sec

spring security(原名Acegi Security)的使用简介

官网:http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/ 定义:Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向

[转]Spring Security学习总结一

[总结-含源码]Spring Security学习总结一(补命名空间配置) Posted on 2008-08-20 10:25 tangtb 阅读(43111) 评论(27)  编辑  收藏 所属分类: Spring .Spring Security Spring Security学习总结一 在认识Spring Security之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项 操作的权限进行判断,来达到认证授权的目的.类似这样的权限验证逻辑代码被分散