- 浏览: 360152 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 12152017年什么最火? 不用问,肯定是人人都“ ... -
王者荣耀是用什么语言开发的!
2020-10-29 19:04 02017年什么最火? 不用问,肯定是人人都在撸的“王 ... -
用消息队列和消息应用状态表来消除分布式事务(转载)
2012-11-21 11:12 3340由于数据量的巨大,大 ... -
CA认证原理以及实现(下)
2012-09-10 20:38 17102在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。 ... -
CA认证原理以及实现(上)
2012-09-10 20:00 49489原理基础数字证书为发 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(下)
2012-06-28 21:58 1487云管理平台云是IT实现,是造出来的,不是买来的。我们可以买服务 ... -
企业追逐的--网络热点(云、海量数据、虚拟化)(上)
2012-06-28 21:08 1699云之所以热,是因为现在以及未来市场的业务推动力(回报率),现在 ... -
Terracotta Server[兵马俑]集群
2012-06-14 01:23 10825Terracotta的介绍以及原理在我之前的文章中已经做了相关 ... -
Local Cache + Server Cache
2012-05-27 00:01 785其实下面说的一些设计思路来源于一些开源的缓存软件,比如Ehca ... -
Web请求-异步模式
2012-05-26 22:45 268Comet技术已经不算是 ... -
分布式事务设计-三段式提交
2012-05-25 20:24 5551前面的文章提到的两段 ... -
分布式事务设计-两段式提交
2012-02-08 17:16 14238事务是一个很重要的概念,它必须满足ACID特性,在单机的数据库 ... -
架构设计要“注意点”
2011-09-08 14:24 370资源有限注意点:系统设计的时候总是估摸不到会有大数据量从远端传 ... -
替代分布式事务策略
2011-06-10 19:59 2255由于数据量的巨大,现 ... -
你符合成为一个架构设计师的特征吗?
2011-03-30 12:28 557其实想写这篇文章也是 ... -
缓存客户端集群
2011-03-18 17:12 1687Memcached Cache是集中式Cach ... -
Netlog中数据库演变过程
2011-03-18 15:45 476Netlog拥有4000万活跃用户,每个月有超过5000万的独 ... -
如何检测一台机器是否宕机?(转载)
2011-03-15 20:19 1769检测一台机器是否宕机 ... -
淘宝OceanBase设计(转载)
2011-03-14 16:26 1376OceanBase有什么特点 ... -
EhCache辅助spring Acegi
2010-09-14 16:36 2161因为在项目中想通过缓存来acegi的整合,因此选用了Ehcac ...
相关推荐
### Acegi开发指南知识点详解 #### 一、Acegi简介 **Acegi**是一个基于Spring框架的安全性解决方案,专门设计用于Web应用的安全控制。Acegi的主要优势在于它提供了一种声明式的安全控制方式,允许开发者通过配置而...
Acegi Security(现已被Spring Security替代)是Spring Framework的一个扩展,它提供了一个全面的安全管理框架,包括访问控制、会话管理、密码加密等功能。Acegi Security允许开发者通过XML配置或者编程方式定义安全...
《玩转Acegi:SpringSide项目中的安全配置详解》 Acegi Security是Spring社区早期的安全框架,它为Spring应用提供了全面的身份验证和授权服务。在本文中,我们将深入探讨SpringSide项目中`applicationContext-acegi...
### Acegi认证服务详解 #### 一、Acegi简介与背景 Acegi是Spring Security的前身,是一款基于Spring框架的安全管理工具,旨在为应用程序提供安全控制功能,包括身份验证(Authentication)和授权(Authorization)...
### Spring Security核心知识点详解 #### 一、Spring Security概述与整体架构 ##### 1.1 什么是Acegi Security? Acegi Security(后更名为Spring Security)是Spring框架中的一个子项目,专注于提供强大的安全性...
2. **核心组件详解**:详细介绍认证、授权、会话管理和加密服务的工作原理和配置方法。 3. **安全配置**:示例展示如何设置访问控制规则,包括URL过滤、方法级别的权限控制等。 4. **自定义扩展**:说明如何根据需求...
映射标记 Java的“静态库链接” 姚博文 集成ACEGI 进行权限控制 SWT可交互式Browser控件 JDK配置(注意) RIA简介(第一部分) 在 Eclipse 中嵌入 NASA World Wind Java SDK, 用3DES加密解密 ...
它不仅覆盖了用户认证,还包括了授权、访问控制、加密以及会话管理等多个方面。在本教程中,读者将了解到如何利用Spring Security来构建安全的Java Web应用。 1. **基础概念**:首先,教程会介绍Spring Security的...
《xfire与Spring Security整合实现WS-Security安全认证详解》 在现代企业级应用开发中,安全性是不可或缺的重要环节。Spring Security作为Java领域的安全框架,提供了全面的身份验证和授权服务。而Xfire(现已被...
- **Acegi**:DWR支持Acegi安全框架,提供了一套解决方案来处理安全认证和授权问题。 #### 四、DWR中的JavaScript应用 DWR的JavaScript部分介绍了如何在客户端使用DWR提供的API进行远程调用,包括: - **简单的回...
**基于SSH的在线Java程序设计学习平台:学生管理系统详解** SSH(Struts+Spring+Hibernate)是Java开发中常见的三大框架组合,它们分别负责表现层、业务层和持久层的管理,为构建复杂的Web应用程序提供了强大的支持...
### Spring安全核心知识点详解 #### 一、Spring Security概述与入门 ##### 1.1 什么是Spring Security? Spring Security是Spring框架的一个扩展模块,提供了一套全面的安全解决方案,旨在为基于Java的应用程序...