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

先说一下Spring security 是基于spring的一个强大的安全验证模块,它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能。

LDAP是轻量目录访问协议,基于tcp/ip协议,一般为企业的基本信息的访问提供一个统一的访问方式,它存储的数据是以树形结构存储的,因此,访问速度超快,但是相对的存储速度很慢。当然,你肯定也不能使用sql语句了

首先说一下所需要的jar包,当然也有maven配置,网上应该有很多

spring-security-config

spring-security-core

spring-security-ldap

spring-security-taglibs

spring-security-web

好吧,开始要先配置spring-security,由于本身就是基于spring的,配置起来也很简单

首先在web,xml中配置一个security的filter:


   
        springSecurityFilterChain  
        org.springframework.web.filter.DelegatingFilterProxy  
   
 
  
     
        springSecurityFilterChain  
        /*  
   

然后在spring-mvc文件里配置一个bean























同时需要配置ldap数据源:








好的,然后还有一个spring-security.xml需要创建并配置:


xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 










authentication-failure-url="/login.jsp?login_error=1"
default-target-url="/home/index" always-use-default-target="true" />




       
           
       








一定要注意 xsi:schemaLocation的url地址的填写,否则各种错误。

其中,login.jsp是默认进入页面,home/index是默认页面的路径,

然后将在spring-mvc里配置的bean配置在authentication-manager里面,记得要写login.jsp,如:


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page import="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" %>
<%@ page import="org.springframework.security.core.AuthenticationException" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


 
   
   
   
   
   
   
   
   


    XXXXX


   
   


   
   


   
   
   


   
   
 


 
   
border-right:5px solid #F22715;background:#FFFFFF;margin-top:150px;color:#007788;opacity: 0.8;">
    
     


      全时运营中心





     


登录失败:<%= ((AuthenticationException) session.getAttribute(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY)).getMessage() %>




 

     

     

   
 
  
   
   
 




你可能感兴趣的:(java,javaweb)