- 浏览: 510929 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
jxq0816:
请问博主task:executortask:scheduler ...
Spring任务调度器之Task的使用 -
eithree:
thanks you so much! This proble ...
解决ECShop transport.js与jQuery冲突 -
周聪龙:
按照你的配置,点击登录按钮没反应呀,所有的Ip都改为自己的了呀 ...
自定义客户端登录CAS服务器-iframe实现 -
周聪龙:
denglihong 写道shangliuyan 写道我点击提 ...
自定义客户端登录CAS服务器-iframe实现 -
nihaonihao1987:
...
Spring任务调度器之Task的使用
首先在你使用application server上激活SSL,让项目能使用HTTPS。
下面以我使用的tomcat为例(其实网上也很多了,再啰嗦一遍方法):
1、生成及导入证书。
生成keystore
keytool -genkey -alias projectName -keypass changeit -storepass changeit -keyalg RSA -validity 3600 -dname "CN=127.0.0.1, OU=HOME, O=HOME" -keystore my.keystore
导出证书
keytool -export -alias projectName -file foo.cer -keystore my.keystore
导入证书到cacerts(注意该cacerts确保是你application server所使用的JDK的)
keytool -import -alias projectName -keystore cacerts -file foo.cer -trustcacerts
2、配置tomcat的 server.xml文件。
大概找到下面注释的一行。
把这行下面注释的代码去掉,如下:
留意changeit字段,需要跟之前生成证书时输入的密码一致。
3、重启tomcat。
测试 https://localhost:8443 是否访问正常。
让项目同时使用http和https
完成以上操作后,项目已经可以使用SSL来访问了,但也众所周知SSL之所以安全性比较高因为使用安全通道加密的缘故。所以原来http的一个请求和响应在https里面都变成几个,资源消耗大很多。所以我们有时候仅仅是为了一些资源使用https足以,并不是全部。
如果你是使用Acegi(spring security)的话,集成将非常简单。
具体配置如下:
打开acegi的配置文件。
1、找到exceptionFilter一段,具体代码如下:
留意把forceHttps的值设置为true。
2、配置channelDecisionManager
添加如下代码:
3、配置ChannelProcessingFilter,让我们仅对需要的SSL的资源使用https。
(例子中为访问/admin/**资源的的时候必须使用https,若用http访问的时候也会直接转到https通道。其他资源可使用https也可以使用http。)
顾名思义:
REQUIRES_SECURE_CHANNEL 为使用https
REQUIRES_INSECURE_CHANNEL 为使用http
/** 注意请务必放在最后
另:请注意项目中的url地址,因为如果在https链接当中访问http资源的话,某些时候会出现问题,例如获取session和request之类的时候,实质上是从https进行了Redirect,而且还是那比较难查错。
使用acegi的话,应该配置过FilterSecurityInterceptor,相信格式也很熟悉了吧。
4、勿忘在FilterChainProxy添加新的filter
注意添加上channelProcessingFilter即可。
至此,已经可以享受Acegi在安全性上给我们带来的便利以及乐趣。
但实话说,有些情况下使用Acegi却带来很多的麻烦,或者是必须深入了解,不然扩展性和易用性还是有限。
下面以我使用的tomcat为例(其实网上也很多了,再啰嗦一遍方法):
1、生成及导入证书。
生成keystore
keytool -genkey -alias projectName -keypass changeit -storepass changeit -keyalg RSA -validity 3600 -dname "CN=127.0.0.1, OU=HOME, O=HOME" -keystore my.keystore
导出证书
keytool -export -alias projectName -file foo.cer -keystore my.keystore
导入证书到cacerts(注意该cacerts确保是你application server所使用的JDK的)
keytool -import -alias projectName -keystore cacerts -file foo.cer -trustcacerts
2、配置tomcat的 server.xml文件。
大概找到下面注释的一行。
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation -->
把这行下面注释的代码去掉,如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" enableLookups="false" disableUploadTimeout="true" keystorePass="changeit" maxThreads="150" scheme="https" secure="true" minSpareThreads="25" clientAuth="false" sslProtocol="TLS" />
留意changeit字段,需要跟之前生成证书时输入的密码一致。
3、重启tomcat。
测试 https://localhost:8443 是否访问正常。
让项目同时使用http和https
完成以上操作后,项目已经可以使用SSL来访问了,但也众所周知SSL之所以安全性比较高因为使用安全通道加密的缘故。所以原来http的一个请求和响应在https里面都变成几个,资源消耗大很多。所以我们有时候仅仅是为了一些资源使用https足以,并不是全部。
如果你是使用Acegi(spring security)的话,集成将非常简单。
具体配置如下:
打开acegi的配置文件。
1、找到exceptionFilter一段,具体代码如下:
<!-- 处理登录异常或权限异常的Filter --> <bean id="exceptionFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"> <!-- 出现AuthenticationException时的登录入口 --> <property name="authenticationEntryPoint"> <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <property name="loginFormUrl" value="${exceptionFilter.AuthException.loginFormUrl}" /> <!-- in order to enable the https --> <property name="forceHttps" value="true" /> </bean> </property> <!-- 出现AccessDeniedException时的Handler --> <property name="accessDeniedHandler"> <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl"> <!-- 指定错误页面 --> </bean> </property> </bean>
留意把forceHttps的值设置为true。
2、配置channelDecisionManager
添加如下代码:
<bean id="channelDecisionManager" class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl"> <property name="channelProcessors"> <list> <ref bean="secureChannelProcessor" /> <ref bean="insecureChannelProcessor" /> </list> </property> </bean> <bean id="secureChannelProcessor" class="org.acegisecurity.securechannel.SecureChannelProcessor" /> <bean id="insecureChannelProcessor" class="org.acegisecurity.securechannel.InsecureChannelProcessor" />
3、配置ChannelProcessingFilter,让我们仅对需要的SSL的资源使用https。
<bean id="channelProcessingFilter" class="org.acegisecurity.securechannel.ChannelProcessingFilter"> <property name="channelDecisionManager" ref="channelDecisionManager" /> <property name="filterInvocationDefinitionSource"> <value> PATTERN_TYPE_APACHE_ANT /admin/**=REQUIRES_SECURE_CHANNEL /**=REQUIRES_INSECURE_CHANNEL </value> </property> </bean>
(例子中为访问/admin/**资源的的时候必须使用https,若用http访问的时候也会直接转到https通道。其他资源可使用https也可以使用http。)
顾名思义:
REQUIRES_SECURE_CHANNEL 为使用https
REQUIRES_INSECURE_CHANNEL 为使用http
/** 注意请务必放在最后
另:请注意项目中的url地址,因为如果在https链接当中访问http资源的话,某些时候会出现问题,例如获取session和request之类的时候,实质上是从https进行了Redirect,而且还是那比较难查错。
使用acegi的话,应该配置过FilterSecurityInterceptor,相信格式也很熟悉了吧。
4、勿忘在FilterChainProxy添加新的filter
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /**=sessionIntegrationFilter,logoutFilter,authenticationFilter,rememberMeFilter,channelProcessingFilter,exceptionFilter,securityInterceptor </value> </property> </bean>
注意添加上channelProcessingFilter即可。
至此,已经可以享受Acegi在安全性上给我们带来的便利以及乐趣。
但实话说,有些情况下使用Acegi却带来很多的麻烦,或者是必须深入了解,不然扩展性和易用性还是有限。
发表评论
-
自定义struts2的url标签的生成
2012-05-08 17:36 2790本文是针对struts2的struts-tags中的s:url ... -
使用VisualVM监测Tomcat JVM情况的配置(Windows+Linux)
2012-04-17 10:02 4363一,Windows环境 1.若以服务的方式启 ... -
【转】Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat
2012-02-10 18:06 2109jstack -- 如果java程序崩溃生成core文件 ... -
DynaBean的体会
2011-12-29 22:16 0在开发中,为了减少一些不必要的VO和formBean(尽管在s ... -
自己的修改hibernate-tools的模板和修复Comment乱码问题
2011-11-02 11:38 8021关于自定义 之前一直用hibernate-tools来 ... -
SpringSecurity备忘配置
2011-11-01 11:37 12751.定义登录后的首页action.do,该action决定了用 ... -
【转】使用 Eclipse Memory Analyzer 检测内存泄漏问题
2011-09-28 11:39 1277本文是关于在开发Talend RCP 过程中碰到 ... -
编写使用SpringSecurity的JUnit测试提醒
2011-08-15 15:40 3422近日在使用SpringSecurity的项目中发现一个小问题, ... -
【转】sun.misc.BASE64Encoder找不到的解决方法
2011-08-09 11:21 3337sun.misc.BASE64Encoder/BASE64De ... -
【转】如何在win7系统上安装Jdk版本1.6
2011-07-27 17:10 1616鉴于有些朋友对JDK的安装不太熟悉,特意转载此教程。原地址如下 ... -
我的eclipse插件推荐
2011-07-03 19:56 114211. ER图工具 ERMaster - http: ... -
使用Jakarta Common Digester解析XML的简单例子
2011-04-19 13:36 2364Jakarta Commons Digester官方网址 ht ... -
精通Hibernate读书笔记
2010-01-31 00:58 1835生成Java类 使用hibernate tools( ... -
Struts2中的EL表达式兼容问题
2009-12-29 16:33 2282今天遇到一个郁闷的问题,页面某段文字显示的时候就显示一半,查看 ... -
获取上传文件的字符编码
2009-11-10 22:50 3500重点又回到了国人都很烦恼的字符编码问题,真羡慕老外们。不过作为 ... -
也谈Java汉字按照拼音排序
2009-04-10 00:11 5547最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的 ... -
使用JUnit在struts+spring+hibernate框架环境下进行单元测试
2009-04-01 00:25 6814过往使用的方式从最原始的IDE的DEBUG工具断点查错到目前还 ... -
使用clone解决hibernate+spring集成中的延迟加载问题及分析(no session
2009-03-30 23:59 2241首先说明一下,hibernate的延迟加载特性(lazy)。所 ... -
关于获取表单数据
2009-03-28 01:25 4168今天有个同事做二 ...
相关推荐
acegi安全策略与CAS整合的实现方案,以及文档描述
将acegi和cas的war包修改并整合测试,里面包含所需依赖包。经过分卷压缩一共3个文件.
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。 安全涉及到两个不同的概念,认证和授权。前者是关于...
spring acegi 使用工程demo
Acegi能做什么 Acegi的体系结构 Acegi核心组件 典型的web认证过程 Acegi的登陆认证 Acegi对安全对象的访问控制 Filter 组件 Acegi的不足之处
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。 安全涉及到两个不同的概念,认证和授权。前者是关于...
Acegi使用.pdf
acegi 框架 介绍 spring 安全
安全验证框架 acegi的示例j2ee安全 spring 安全
Acegi Security整合CAS实例
Acegi安全框架简介及实用扩展,spring acegi 权限管理
JAVA开发专家:敏捷Acegi、CAS:构建安全的Java系统 pdf
acegi,acegi,acegi
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。通过精心 配置Acegi安全系统能够轻松地适用于复杂的安全需求。它既能应用于WEB应用也能应用于非WEB应用。在 ...
将acegi和cas的war包修改并整合测试,里面包含所需依赖包。经过分卷压缩一共3个文件.
Acegi安全系统介绍 1 1.1 介绍 1 1.2 管理身份验证 3 1.3 控制访问 20 1.4 保护Web应用程序 24 1.5 保护方法调用 29 1.6 领域对象安全(Domain Object Security) 31
acegi 使用说明 acegi 使用说明 acegi 使用说明
它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。通过精心 配置Acegi安全系统能够轻松地适用于复杂的安全需求。它既能应用于WEB应用也能应用于非WEB应用。在 ...
敏捷Acegi、CAS++构建安全的Java系统pdf——part5