- 浏览: 357080 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
missfmaster:
这框架好特么底层。
Terracotta设计原理分析--(部分内容来自官方描述) -
小黄牛:
很好不错!分享一个在电商购物支付流程中,在各大参与者系统中可能 ...
分布式事务设计-两段式提交 -
zhglhy:
学习了,感谢分享
JAVA垃圾回收分析 -
talentluke:
如果在事务一中出现故障,数据库是可以回滚但消息队列不能回滚,队 ...
用消息队列和消息应用状态表来消除分布式事务(转载) -
langmanxingkong123:
谁说jedis不能存集合类的数据。乱说。。。
redis jredis jedis 使用
Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。
只需要在DAO的认证管理器中分别加入一下对应一下配置:
第一种:不使用任何加密方式的配置
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <!-- 明文加密,不使用任何加密算法, 在不指定该配置的情况下,Acegi默认采用的就是明文加密 -->
- <!--
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder">
- <property name="ignorePasswordCase" value="true"></property>
- </bean>
- </property>
- -->
- </bean>
第二种:MD5方式加密
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
- <!-- false 表示:生成32位的Hex版, 这也是encodeHashAsBase64的, Acegi 默认配置; true 表示:生成24位的Base64版 -->
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- </bean>
第三种:使用MD5加密,并添加全局加密盐
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- <!-- 对密码加密算法中使用特定的加密盐及种子 -->
- <property name="saltSource">
- <bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource">
- <property name="systemWideSalt" value="acegisalt" />
- </bean>
- </property>
- </bean>
第四种:使用MD5加密,并添加动态加密盐
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- <!-- 对密码加密算法中使用特定的加密盐及种子 -->
- <property name="saltSource">
- <!-- 通过动态的加密盐进行加密,该配置通过用户名提供加密盐, 通过UserDetails的getUsername()方式 -->
- <bean class="org.acegisecurity.providers.dao.salt.ReflectionSaltSource">
- <property name="userPropertyToUse" value="getUsername" />
- </bean>
- </property>
- </bean>
第五种:使用哈希算法加密,加密强度为256
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
- <constructor-arg value="256" />
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- </bean>
第六种:使用哈希算法加密,加密强度为SHA-256
- <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
- <property name="userDetailsService" ref="userDetailsService" />
- <property name="passwordEncoder">
- <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
- <constructor-arg value="SHA-256" />
- <property name="encodeHashAsBase64" value="false" />
- </bean>
- </property>
- </bean>
上述配置只是在Acegi通过表单提交的用户认证信息中的密码做各种加密操作。而我们存储用户密码的时候,可以通过一下程序完成用户密码操作:
- package com.brofe.acegi;
- import org.acegisecurity.providers.encoding.Md5PasswordEncoder;
- import org.acegisecurity.providers.encoding.ShaPasswordEncoder;
- public class TestPasswordEncoder {
- public static void main(String[] args) throws Exception {
- md5(); // 使用简单的MD5加密方式
- sha_256(); // 使用256的哈希算法(SHA)加密
- sha_SHA_256(); // 使用SHA-256的哈希算法(SHA)加密
- md5_SystemWideSaltSource(); // 使用MD5再加全局加密盐加密的方式加密
- }
- public static void md5() {
- Md5PasswordEncoder md5 = new Md5PasswordEncoder();
- // false 表示:生成32位的Hex版, 这也是encodeHashAsBase64的, Acegi 默认配置; true 表示:生成24位的Base64版
- md5.setEncodeHashAsBase64(false);
- String pwd = md5.encodePassword("123", null);
- System.out.println("MD5: " + pwd + " len=" + pwd.length());
- }
- public static void sha_256() {
- ShaPasswordEncoder sha = new ShaPasswordEncoder(256);
- sha.setEncodeHashAsBase64(false);
- String pwd = sha.encodePassword("123", null);
- System.out.println("哈希算法 256: " + pwd + " len=" + pwd.length());
- }
- public static void sha_SHA_256() {
- ShaPasswordEncoder sha = new ShaPasswordEncoder();
- sha.setEncodeHashAsBase64(false);
- String pwd = sha.encodePassword("123", null);
- System.out.println("哈希算法 SHA-256: " + pwd + " len=" + pwd.length());
- }
- public static void md5_SystemWideSaltSource () {
- Md5PasswordEncoder md5 = new Md5PasswordEncoder();
- md5.setEncodeHashAsBase64(false);
- // 使用动态加密盐的只需要在注册用户的时候将第二个参数换成用户名即可
- String pwd = md5.encodePassword("123", "acegisalt");
- System.out.println("MD5 SystemWideSaltSource: " + pwd + " len=" + pwd.length());
- }
- }
发表评论
-
王者荣耀是用什么语言开发的!
2020-10-29 19:24 11492017年什么最火? 不用问,肯定是人人都“ ... -
王者荣耀是用什么语言开发的!
2020-10-29 19:04 02017年什么最火? 不用问,肯定是人人都在撸的“王 ... -
用消息队列和消息应用状态表来消除分布式事务(转载)
2012-11-21 11:12 3296由于数据量的巨大,大 ... -
CA认证原理以及实现(下)
2012-09-10 20:38 16972在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。 ... -
CA认证原理以及实现(上)
2012-09-10 20:00 49308原理基础数字证书为发 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(下)
2012-06-28 21:58 1452云管理平台云是IT实现,是造出来的,不是买来的。我们可以买服务 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(上)
2012-06-28 21:08 1614云之所以热,是因为现在以及未来市场的业务推动力(回报率),现在 ... -
Terracotta Server[兵马俑]集群
2012-06-14 01:23 10744Terracotta的介绍以及原理在我之前的文章中已经做了相关 ... -
Local Cache + Server Cache
2012-05-27 00:01 785其实下面说的一些设计思路来源于一些开源的缓存软件,比如Ehca ... -
Web请求-异步模式
2012-05-26 22:45 268Comet技术已经不算是 ... -
分布式事务设计-三段式提交
2012-05-25 20:24 5487前面的文章提到的两段 ... -
分布式事务设计-两段式提交
2012-02-08 17:16 14120事务是一个很重要的概念,它必须满足ACID特性,在单机的数据库 ... -
架构设计要“注意点”
2011-09-08 14:24 370资源有限注意点:系统设计的时候总是估摸不到会有大数据量从远端传 ... -
替代分布式事务策略
2011-06-10 19:59 2216由于数据量的巨大,现 ... -
你符合成为一个架构设计师的特征吗?
2011-03-30 12:28 557其实想写这篇文章也是 ... -
缓存客户端集群
2011-03-18 17:12 1630Memcached Cache是集中式Cach ... -
Netlog中数据库演变过程
2011-03-18 15:45 476Netlog拥有4000万活跃用户,每个月有超过5000万的独 ... -
如何检测一台机器是否宕机?(转载)
2011-03-15 20:19 1735检测一台机器是否宕机 ... -
淘宝OceanBase设计(转载)
2011-03-14 16:26 1340OceanBase有什么特点 ... -
EhCache辅助spring Acegi
2010-09-14 16:36 2106因为在项目中想通过缓存来acegi的整合,因此选用了Ehcac ...
相关推荐
Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解Acegi学习笔记--Acegi详解
Acegi安全系统详解,介绍安全认证框架,用户认证,权限控制等
Acegi是Spring Framework 下最成熟的安全系统,它提供了强大灵活的企业级安全服务,如: 1 : 完善的认证和授权机制, 2 : Http资源访问控制, 3 : Method调用访问控制, 4 : Access Control List (ACL) 基于对象...
acegi,acegi,acegi
不错的ACEGI 教程
Acegi文档 spring acegi 详细文档
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。 安全涉及到两个不同的概念,认证和授权。前者是关于...
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。 安全涉及到两个不同的概念,认证和授权。前者是关于...
acegi 框架 介绍 spring 安全
Acegi能做什么 Acegi的体系结构 Acegi核心组件 典型的web认证过程 Acegi的登陆认证 Acegi对安全对象的访问控制 Filter 组件 Acegi的不足之处
acegi-security 1.0.2.jar
包含acegi-security-1.0.7.jar,acegi-security-1.0.7-sources.jar,acegi-security-cas-1.0.7.jar,acegi-security-cas-1.0.7-sources.jar,acegi-security-catalina-1.0.7.jar,acegi-security-catalina-1.0.7-...
讲述acegi的使用方法,和对acegi的一些基本类讲解。
acegi,spring的安全验证框架
关于Acegi的安全框架,里面有Acegi的实例,讲述得挺清楚的,
1、一个Acegi的例子,可以运行 2、一个很好的学Acegi的网址,0基础学习Acegi,强烈推荐 3、有什么问题可以发邮件heroshen@126.com讨论
Acegi使用.pdf
acegi的一个完整实例,其中包括匿名登录 session 数据库验证 加密 缓存 session有效时间 注销等acegi的实现的全部功能;还有总结的acegi的完整资料。
它使用了spring的方式提供了安全和认证安全服务,包括使用bean context,拦截器和面向接口的编程方式。因此,acegi安全系统能够轻松地适用于复杂的安全需求。 安全涉及到两个不同的概念,认证和授权。前者是关于...