文档章节

spring-security配置及验证过程

519617
 519617
发布于 2017/06/22 17:21
字数 348
阅读 64
收藏 0

本文说明spring-security版本为4.2

以下代码为配置:

    <!-- 请求权限 --> 
    <http auto-config='true' use-expressions="true" >
        <!-- 不使用CSRF --> 
		<csrf disabled="true" /> 
		<intercept-url pattern="/admin.jsp" access="hasRole('ROLE_ADMIN')" />
		<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
		<!-- <form-login login-page="/login"    authentication-failure-url="/login?error=1" authentication-success-forward-url="/main" />  
        <logout invalidate-session="true" logout-url="/logout"  logout-success-url="/"  />  -->
	</http>
	 
	<authentication-manager >
		<authentication-provider ref="authenticationProvider" /> 
	</authentication-manager>
	
	 <!-- 自定义userDetailsService, 盐值加密 -->  
    <beans:bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">  
        <beans:property name="hideUserNotFoundExceptions" value="true" />  
        <beans:property name="userDetailsService" ref="userDetailsService" />  
        <beans:property name="passwordEncoder" ref="passwordEncoder" />  
        <beans:property name="saltSource" ref="saltSource" />  
    </beans:bean>  
    
    <beans:bean id="userDetailsService" class="com.youpackage.UserDetailsServiceImpl" />
  
    <!-- Md5加密 -->  
    <beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />  
  
  
    <!-- 盐值加密 salt对应数据库字段-->  
    <beans:bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource">  
        <beans:property name="userPropertyToUse" value="username"/>  
    </beans:bean>  

说明:

     这个配置的密码加密方法为MD5,类Md5PasswordEncoder继承了MessageDigestPasswordEncoder类,有isPasswordValid的方法,需要三个参数(encPass, rawPass, salt), 其中encPass为数据库保存密码,rawPass表单密码,salt为盐值,在这个方法中调用encodePassword(rawPass, salt)方法来获取加盐加密后的密码,encodePassword又调用 mergePasswordAndSalt(rawPass, salt, false)获得加盐加密密码,加盐密码的方式为:password + "{" + salt.toString() + "}", 其中加密的结果为小写的。

例:

     如果用户名为”username“,密码为”password“,密码盐值为”username“,密码加密方式为MD5,则,spring-security在验证时,得出,加盐的后的密码为”password{username}“,再MD5加密后为”ec7b8c3f180cc77ff2b8c4486545e766“,再与正确的密码比较来判定是否同过验证。

 

 

© 著作权归作者所有

519617
粉丝 2
博文 51
码字总数 33472
作品 0
东城
私信 提问
Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密...

小致Daddy
2018/08/03
19.3K
1
Spring Security的HTTP基本验证示例

[导读]当配置了http的基本验证时,浏览器访问时就会显示一个登陆框,本人就是展示怎么用Spring Security配置http的最基本的验证。<http> <intercept-url pattern="/welcome*" access="ROLE_......

爱吃猫的小萌鱼
2014/01/23
51
0
Spring Security Kerberos 1.0.0.RC2 发布

Spring Security Kerberos 1.0.0.RC2 发布,此版本主要改进如下: 增加支持 LdapContextSource 包的二次使用具有更好的管理属性 spring-security-kerberos-web 现在包含所有 Web 的相关属性(...

oschina
2015/04/03
695
1
spring security

Spring Security 为基于 J2EE 企业应用软件提供了全面安全服务。安全主要包括两个操作“认证”与“验证”(有时候也会叫做权限控制)。“认证”是为用户建立一个其声明的角色的过程,这个角色...

peiquan
2018/07/04
0
0
spring安全框架Security(二)

好,我们往下看,接着就是应用我们实际项目里的自定义用户权限了 Java代码 security:authentication-manager security:authentication-provider user-service-ref="customUserDetailsServic......

尚浩宇
2015/06/24
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

lopatkin俄大神Windows精简版系统 安装教程 简单版

1.制作U盘启动盘 或 安装pe到电脑 下载微pe工具箱.(为什么用这个呢,因为这个无毒,无广告,无后门.其它pe在安装完系统会安装一堆木马,垃圾软件,后门什么的) pe制作工具下载http://www.wepe.com...

xiaogg
28分钟前
4
0
【0917】Linux shell基础知识2

【0917】Linux shell基础知识2 8.7/8.8 shell变量 8.9 环境变量配置文件 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号 一、shell变量 1、使用...

飞翔的竹蜻蜓
30分钟前
3
0
管理角色认知-新晋管理常常犯的错

背景 管理是一门实践科学,从知道到做到,需要长时间的刻意练习,提前知道那些坑,可以提前规避。 坑1:被动执行 现象: 不主动找活干,等上级派活; 上级有了安排,指望上级替他决定实现方案...

春天spring
32分钟前
4
0
MongoDB4.0.2集群搭建

MongoDB4.0.2集群搭建 2019.02.01 01:02 619浏览 MongoDB4.0.2集群搭建 根据对象存储平台Django+MongoDB+Ceph的需求,现搭建部署一个十节点的MongoDB集群,主要以下关键点: 根据最新版本Mon...

linjin200
35分钟前
5
0
面试官问你B树和B+树,就把这篇文章丢给他

原文链接:面试官问你B树和B+树,就把这篇文章丢给他 1 B树 在介绍B+树之前, 先简单的介绍一下B树,这两种数据结构既有相似之处,也有他们的区别,最后,我们也会对比一下这两种数据结构的区...

欧阳思海
39分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部