Spring Security实践(一):简介

Spring
Security是一个精锐的和惊人可定制的验证和授权框架。它是保障基于Spring的接纳的实际上的规范,为基于Java
EE的软件应用提供了一密密麻麻复杂的平安解决方案。

正如大家所领悟的,应用安全重点含有四个世界:认证和授权。这也是Spring
Security的第一的靶子领域。认证这样一种处理:为接入者建立一个灵光的凭证(凭据平常意味着一个用户、设备或者此外要在您的应用中实践操作的系统)授权重假如建立一种规则来决定是否一个凭证被允许在你的应用程序中履行某一个操作。这个概念都是通用的,在Spring
Security中并不曾什么不同。

Spring
Security辅助周边的印证模型,其中多数认证模型既能够被第三方提供,也得以是相关的正儿八经机构(如IETF)开发。此外,Spring
Security也提供自己的一对安全特点。特别地:Spring
Security如今支撑整合下面那几个讲明技术:

  • HTTP Basic认证头(一个依据IETF RFC的正统)
  • HTTP Digest认证头(一个依据IETF RFC的标准)
  • HTTP X.509客户端证书交流(一个基于IETF RFC的科班)
  • LDAP(一个特别通用的跨平台认证技术,尤其是在大型的应用场景中)
  • 据悉表格的表达(对应于单用户的需要)
  • OpenID认证
  • 基于预认证请求头的求证技术(比如Computer Associates Siteminder)
  • JA-SIG核心认证系统(流行的如CAS,一个风行的开源SSO系统)
  • 晶莹剔透的印证内容传输,为RMI和HTTPinvoker(一个Spring远端协议)服务
  • 自动的”remember-me“认证(可以制止在一个预先确定的时刻内再也证实)
  • 匿名认证(允许为每一个未曾表达的伸手自动分配一个新鲜的保山标识)
  • Run-as authentication(which is useful if one call should proceed
    with a different security identity)
  • Java认证和授权服务(JAAS)
  • JEE 容器认证(所以仍然可以接纳Container Managed
    Authentication,如若必要)
  • Kerberos
  • Java Open Source Single Sign On(JOSSO)
  • OpenNMS 网络管理平台
  • AppFuse
  • AndroMDA
  • Mule ESB
  • Direct WEB Request(DWR)
  • Grails
  • Tapestry
  • JTrac
  • Jasypt
  • Roller
  • Elastic Path
  • Atlassian Crowd
  • 你协调的印证连串

Spring
Security同样提供了一筐子的授权能力,重要集中在多个至关首要的兴趣领域:授权WEB请求、授权是否方法可以被实践、授权是否足以访问独立的域资源。为了便利通晓它们的不等,可以对照与基于Servlet的WEB路径匹配的安全,EJB
容器管理安全和文件系统安全。Spring
Security提供了对那些重大领域的有力支撑。

至于Spring Security更多更全的资料,请看那里:
http://docs.spring.io/spring-security/site/docs/4.0.1.RELEASE/reference/htmlsingle

是因为Spring
Security博大精深,需要了解驾驭的事物很多,那里只授予最常用的有的面貌的部署和利用做出表达。通过在实际的拔取场景中明白和上学Spring
Security框架的表明和授权机制。

环境简介

为了便利精通后续的证实,先对实验的WEB开发条件展开求证。

开发工具

Idea 14.0

项目条件

  • 前台:AngularJS
  • 后台:Java Spring
  • 工程项目:Maven
  • WEB页面管理:Bower+gulp
  • 前台根本调试工具:Chrome

布置文件

  • Pom.xml:Maven的配备文件,用来机关管理当前项目倚重的jar包
  • Spring-hibernate.xml:Hibernate数据库框架的布局文件
  • Spring-security.xml:Spring Security相关配置的配置文件

品种的文件目录如下:

通用配置

Java
Spring的布局和WEB应用的布置,这里不再详细表明,用项目中已部分即可。本节紧要表明针对Spring
Security的配备。

为了利用Spring Security框架,必须在pom.xml中添加上面的依赖:

 <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>4.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>4.0.1.RELEASE</version>
</dependency>

Maven会自动下载下边的多少个jar包。同时,为了在Java Spring中添加上Spring
Security的Filter,需要修改web.xml,添加如下内容:

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

上述内容会扭转一个名称为springSecurityFilterChain的Filter,并将该Filter添加到Spring
MVC的拍卖链上,所有符合条件的WEB请求到后台都会被Spring Security的Filter
Chain处理。

为了让 Spring-security.xml
生效,注意必须保证那么些xml文件被加载,在web.xml中,这样的配置是必须的:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:/spring-*.xml</param-value>
</context-param>
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

springSecurityFilterChain首要涵盖如下缺省的Filter:

相关文章