文档介绍:Spring Secutity
佟刚
simpleit@
IT资讯交流网.
简介
Spring Security 是 Spring Framework 的一个子项目. 之前也叫做 Acegi Secruty.
Spring Security 能用于保护各种 Java 应用程序(权限管理框架). 但在基于 Web 的应用程序中使用得最为广泛.
Spring Security 能以声明的方式来保护 Web 应用程序的 URL 访问. 只需简单的配置即可实现.
Spring Security 通过一系列 Servlet 过滤器为 Web 应用程序提供了多种安全服务.
Spring Security 显著简化了配置, 使用基于 XML Schema 和基于注解的配置.
IT资讯交流网.
HelloWorld ---- 需求
Spring-security 应用的根目录下有两个 Jsp 页面: 和 . admin 用户有权限访问这两个页面, 而 user 用户只能访问
提供”登出”功能
admin(密码也为 admin) 用户
user(密码也为 user) 用户
IT资讯交流网.
HelloWorld ---- 搭建环境
在 Spring 的 Web 应用中添加 spring-security-\dist\spring-security-core-
IT资讯交流网.
HelloWorld ---- 配置 文件
在 文件里配置 DelegatingFilterProxy:
将 HTTP 请求委托给 Spring 应用程序上下文中的一个 Bean . 被委托的 Bean 实现了 接口, 但它需要受 Spring IOC 容器管理, 而不是直接在 中配置*.
默认情况下, DelegatingFilterProxy 会把 HTTP 请求委托给和它的<filter-name> 属性相同的 Bean 上(也可以在 targetBeanName 初始参数中覆盖该 Bean 的名字).
SpringSecurity 在 web 服务器加载当前 web 应用时配置一个名称为 springSecurityFilterChain 的过滤器链(SpringSecurity 即通过该过滤器链为 web 应用提供安全服务), 所以<filter-name> 应该使用这个名字.
IT资讯交流网.
HelloWorld ---- 配置 applicationContext- 文件
虽然可以在 web 层和服务层的配置文件中配置 Spring Security, 但还是最好将安全配置单独放到一个文件中去.
需要将文件的位置加到 contextConfigLocation 参数中, 以便 ContextLoaderListener 可以在启动时加载它*.
可以把 security 定义为默认的命名空间, 这样可以省略 security 前缀.
IT资讯交流网.
HelloWorld ---- 配置 applicationContext- 文件
IT资讯交流网.
HelloWorld ---- 配置 applicationContext- 文件详解(1)
<http auto-config=“true”> 元素自动配置好了典型 web 应用程序所需的基本安全服务:
基于表单的登录服务: 为用户提供了用于登入应用程序, 包含登录表单的页面.
登出服务: 提供了让用户能够登出应用程序的处理程序, 这个程序被映射为响应的 URL
匿名登录: 为匿名用户分配一个安全主题并授权, 这样可以像普通用户一样来处理匿名用户.
“记住我”支持: 能在多个浏览器会话中记住用户的身份, 通常是在用户的浏览器中保存 Cookie.
Servlet API 集成: 可以通过类似 () 和 () 这样的标准 API 在 web 应用程序中访问安全信息.
IT资讯交流网.
HelloWorld ---- 配置 applicationContext- 文件详解(2)
<http> 配置元素中, 可以通过一个或多个<intercept-url> 元素来限制对特定 URL 的访问.
每个<intercept-url> 元素指定