这几天的项目要用安全框架的验证,单点登陆所以又拿出来学习一下以备日后常用!!
通常来说牢记两个概念:
安全包括两个主要操作。
“认证”, 是为用户建立一个他所声明的主体。 主体一般式指用户, 设备或可以在你系 统中执行
动作的其他系统。
“授权”指的是一个用户能否在你的应用中执行某个操作, 在到达授权判断之前, 身份的主体已
经由 身份验证过程建立了。
基于 IEFT RFC 的标准 ) HTTP Digest authentication headers ( 一个基于 IEFT RFC 的标准 ) HTTP
X.509 client certificate exchange ( 一个基于 IEFT RFC 的标准 ) LDAP ( 一个非常常见的跨平台认证
需要做法, 特别是在大环境 ) Form-based authentication ( 提供简单用户接口的需求 ) OpenID
authentication Computer Associates Siteminder JA-SIG Central Authentication Service (CAS , 这
是一个流行的开源单点登录系统 ) Transparent authentication context propagation for Remote
Method Invocation and HttpInvoker ( 一个 Spring 远程调用协议 )
快速入门ssm+springSecurity
首先采用xml形式的配置
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>
这是一个过滤器链
Spring Security常用的一些 配置纯注解形式
1.创建过滤器
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
注解@EnableWebSecurity, 可以创建一个名为springSecurityFilterChain 的Filter
继承WebSecurityConfigurerAdapter 目的是重写方法实现自定义的配置
2. 注册过滤器
自定义类 extends AbstractSecurityWebApplicationInitializer
父类实现了WebApplicationInitializer 父类在框架启动时候会被加载 一定走 onStartup方法 orStrat方法内 注册过滤器执行链
结合项目中的实际使用
一、 完善登陆的配置
1. 登陆验证的密码使用加密的密文实现
在springSecurity的配置类中加入解密的encoder对象
在使用userDetailService时候引入对象
在service业务类查询用户对象密码 把{noop} 去掉
2. 登陆成功权限不足的拒绝页面
.and().exceptionHandling().accessDeniedPage("/accessDenied.jsp");
3. 退出成功的跳转页面
页面加入<a>标签请求地址为 /logout.do
二、 完善权限的认证
需求:所有用户成功登陆可以进入主页,根据不同用户,拥有的不同权限,做验证是否可以做对应的请求操作
开启注解@EnableGlobleMethodSecurity(参数prePostEnabled=true) 针对请求方法拦截
针对用户的权限验证 加在service的方法上@PreAuthorize("hasAuthority('权限名称')")