- 浏览: 9819 次
最新评论
使用ACEGI搭建权限系统:第三部分
三使用CAS实现单点登录
1.CAS SEVER3环境搭建
拷贝cas服务器到tomcat的部署目录下,可直接使用。
CAS默认的认证规则是用户名=密码即可登录,使用dbms认证需加入cas-server-support-jdbc.jar,ojdbc14
同时修改deployerConfigContext.xml中的authenticationHandlers配置:
修改登录页面:
修改cas\WEB-INF\view\casLoginView.jsp页面,修改为我们想要的登录页面
2.配置证书,实现ssl登录环境
web服务器需要实现SSL,资源请求通过web server上的cas client使用proxyValidate和cas之间完成认证,这些都是需要配置x.509证书
//创建根证书,并采用自签名签署它
//创建私钥
openssl genrsa -out d:/apps/root/root-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/root/root-req.csr -key d:/apps/root/root-key.pem
//自签署根证书
openssl x509 -req -in d:/apps/root/root-req.csr -out d:/apps/root/root-cert.pem -signkey d:/apps/root/root-key.pem -days 3650
//将根证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/root/root-cert.pem -inkey d:/apps/root/root-key.pem -out d:/apps/root/root.p12
//打印证书
keytool -printcert -file d:/apps/root/root-cert.pem
//创建服务器证书,并采用根证书签署它
//创建私钥
openssl genrsa -out d:/apps/server/server-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/server/server-req.csr -key d:/apps/server/server-key.pem
//签署服务器证书
openssl x509 -req -in d:/apps/server/server-req.csr -out d:/apps/server/server-cert.pem -signkey d:/apps/server/server-key.pem -CA d:/apps/root/root-cert.pem -CAkey d:/apps/root/root-key.pem -CAcreateserial -days 3650
//将客户证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/server/server-cert.pem -inkey d:/apps/server/server-key.pem -out d:/apps/server/server.p12
//打印证书
keytool -printcert -file d:/apps/server/server-cert.pem
//创建客户证书,并采用根证书签署它
//创建私钥
openssl genrsa -out d:/apps/client/client-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/client/client-req.csr -key d:/apps/client/client-key.pem
//签署客户证书
openssl x509 -req -in d:/apps/client/client-req.csr -out d:/apps/client/client-cert.pem -signkey d:/apps/client/client-key.pem -CA d:/apps/root/root-cert.pem -CAkey d:/apps/root/root-key.pem -CAcreateserial -days 3650
//将客户证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/client/client-cert.pem -inkey d:/apps/client/client-key.pem -out d:/apps/client/client.p12
//打印证书
keytool -printcert -file d:/apps/client/client-cert.pem
....................................
//根据根证书生成相应的jks文件
keytool -import -v -trustcacerts -storepass password -alias root -file d:/apps/root/root-cert.pem -keystore d:/apps/root/root.jks
把root.jks,root.p12,server.p12导入到tomcat的conf目录中
配置tomcat ssl,修改conf/server.xml,tomcat6中多了SSLEnabled="true"
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxHttpHeaderSize="8192" scheme="https" secure="true"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" sslProtocol="TLS" clientAuth="false"
keystoreFile="D:/apache-tomcat-6.0.29/conf/server.p12"
keystoreType="PKCS12" keystorePass="password"
truststoreFile="D:/apache-tomcat-6.0.29/conf/root.jks"
truststoreType="JKS" truststorePass="password" />
IE中导入root.p12和client.p12,root.p12导入到受信任的根证书颁发机构
修改JDK,使JDK可以找到证书
设置tomcat启动参数
-Djavax.net.ssl.trustStore=D:/apache-tomcat-6.0.29/conf/root.jks -Djavax.net.ssl.trustStorePassword=password
方法2:
keytool -import -v -trustcacerts -storepass changeit -alias root -file d:/apps/root/root-cert.pem -keystore cacerts
keytool -v -list -alias root -keystore cacerts
方法3:
<property name="ticketValidator">
<bean
class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
<!-- 导入认证证书,也可使用jdk工具导入 -->
<property name="trustStore" value="C:/Tomcat 5.5/conf/root.jks" />
</property>
3.使用acegi集成CAS
这个看上面的xml就可以了。里面有解释
casAuthenticationProvider
CasProxyTicketValidator,casValidatecasValidate,trustStore,serviceProperties,proxyCallbackUrl(代理时用)和表单认证有不同
注意
serviceProperties中service属性(CAS server登陆完毕后由CAS server重定向回来的页面),多系统的环境要写好回调地址
4.单点退出的处理
配置logoutFilter,退出后调用https://localhost:8443/cas/logout接口,注销服务器端ST
<!-- 注销的url -->
<property name="filterProcessesUrl" value="/j_logout.do" />
</bean>
界面中紧接刷新就可以讲浏览器中PT也清除了
function logout(){
parent.window.location.reload(true);
}
三使用CAS实现单点登录
1.CAS SEVER3环境搭建
拷贝cas服务器到tomcat的部署目录下,可直接使用。
CAS默认的认证规则是用户名=密码即可登录,使用dbms认证需加入cas-server-support-jdbc.jar,ojdbc14
同时修改deployerConfigContext.xml中的authenticationHandlers配置:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" /> <property name="sql" value="select password from t_admin_user where login_name=?" /> <property name="passwordEncoder" ref="MD5PasswordEncoder"/> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql:///wsriademo</value></property> <property name="username"><value>root</value></property> <property name="password"><value>root</value></property> </bean> <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg index="0"> <value>MD5</value> </constructor-arg> </bean>
修改登录页面:
修改cas\WEB-INF\view\casLoginView.jsp页面,修改为我们想要的登录页面
2.配置证书,实现ssl登录环境
web服务器需要实现SSL,资源请求通过web server上的cas client使用proxyValidate和cas之间完成认证,这些都是需要配置x.509证书
//创建根证书,并采用自签名签署它
//创建私钥
openssl genrsa -out d:/apps/root/root-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/root/root-req.csr -key d:/apps/root/root-key.pem
//自签署根证书
openssl x509 -req -in d:/apps/root/root-req.csr -out d:/apps/root/root-cert.pem -signkey d:/apps/root/root-key.pem -days 3650
//将根证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/root/root-cert.pem -inkey d:/apps/root/root-key.pem -out d:/apps/root/root.p12
//打印证书
keytool -printcert -file d:/apps/root/root-cert.pem
//创建服务器证书,并采用根证书签署它
//创建私钥
openssl genrsa -out d:/apps/server/server-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/server/server-req.csr -key d:/apps/server/server-key.pem
//签署服务器证书
openssl x509 -req -in d:/apps/server/server-req.csr -out d:/apps/server/server-cert.pem -signkey d:/apps/server/server-key.pem -CA d:/apps/root/root-cert.pem -CAkey d:/apps/root/root-key.pem -CAcreateserial -days 3650
//将客户证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/server/server-cert.pem -inkey d:/apps/server/server-key.pem -out d:/apps/server/server.p12
//打印证书
keytool -printcert -file d:/apps/server/server-cert.pem
//创建客户证书,并采用根证书签署它
//创建私钥
openssl genrsa -out d:/apps/client/client-key.pem 1024
//创建证书请求
openssl req -new -out d:/apps/client/client-req.csr -key d:/apps/client/client-key.pem
//签署客户证书
openssl x509 -req -in d:/apps/client/client-req.csr -out d:/apps/client/client-cert.pem -signkey d:/apps/client/client-key.pem -CA d:/apps/root/root-cert.pem -CAkey d:/apps/root/root-key.pem -CAcreateserial -days 3650
//将客户证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in d:/apps/client/client-cert.pem -inkey d:/apps/client/client-key.pem -out d:/apps/client/client.p12
//打印证书
keytool -printcert -file d:/apps/client/client-cert.pem
....................................
//根据根证书生成相应的jks文件
keytool -import -v -trustcacerts -storepass password -alias root -file d:/apps/root/root-cert.pem -keystore d:/apps/root/root.jks
把root.jks,root.p12,server.p12导入到tomcat的conf目录中
配置tomcat ssl,修改conf/server.xml,tomcat6中多了SSLEnabled="true"
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxHttpHeaderSize="8192" scheme="https" secure="true"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" sslProtocol="TLS" clientAuth="false"
keystoreFile="D:/apache-tomcat-6.0.29/conf/server.p12"
keystoreType="PKCS12" keystorePass="password"
truststoreFile="D:/apache-tomcat-6.0.29/conf/root.jks"
truststoreType="JKS" truststorePass="password" />
IE中导入root.p12和client.p12,root.p12导入到受信任的根证书颁发机构
修改JDK,使JDK可以找到证书
设置tomcat启动参数
-Djavax.net.ssl.trustStore=D:/apache-tomcat-6.0.29/conf/root.jks -Djavax.net.ssl.trustStorePassword=password
方法2:
keytool -import -v -trustcacerts -storepass changeit -alias root -file d:/apps/root/root-cert.pem -keystore cacerts
keytool -v -list -alias root -keystore cacerts
方法3:
<property name="ticketValidator">
<bean
class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
<!-- 导入认证证书,也可使用jdk工具导入 -->
<property name="trustStore" value="C:/Tomcat 5.5/conf/root.jks" />
</property>
3.使用acegi集成CAS
这个看上面的xml就可以了。里面有解释
casAuthenticationProvider
CasProxyTicketValidator,casValidatecasValidate,trustStore,serviceProperties,proxyCallbackUrl(代理时用)和表单认证有不同
注意
serviceProperties中service属性(CAS server登陆完毕后由CAS server重定向回来的页面),多系统的环境要写好回调地址
4.单点退出的处理
配置logoutFilter,退出后调用https://localhost:8443/cas/logout接口,注销服务器端ST
<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"> <!-- 注销后导向的页面 --> <constructor-arg value="https://localhost:8443/cas/logout" /> <constructor-arg> <list> <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" /> </list> </constructor-arg>
<!-- 注销的url -->
<property name="filterProcessesUrl" value="/j_logout.do" />
</bean>
界面中紧接刷新就可以讲浏览器中PT也清除了
function logout(){
parent.window.location.reload(true);
}
发表评论
-
SpringSecurity 配置(登陆验证,session失效等等)
2015-09-28 15:44 2744SpringSecurity安全配置—SSH整合 项目中使用 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
2015-09-23 18:04 454首先讲讲EhCache。在默认情况下,即在用户未提供自身配置文 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(6)
2015-09-22 16:19 401在企业应用中,用户的用户名、密码和角色等信息一般存放在RDBM ... -
菜鸟-手把手教你把Acegi应用到实际项目中(5)
2015-09-22 16:18 441在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(4)
2015-09-22 09:45 484今天就讲个ConcurrentSessionFilter。 在 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(3)
2015-09-22 09:43 458这一节我们将要了解的是AnonymousProcessi ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.2)
2015-09-22 09:29 482菜鸟-手把手教你把Acegi应用到实际项目中(1.2) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.1)
2015-09-21 16:37 440菜鸟-手把手教你把Acegi应用到实际项目中(1.1) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(2)
2015-09-21 16:28 503菜鸟-手把手教你把Acegi应用到实际项目中(2) 博客分类 ... -
acegi安全框架使用
2015-09-21 16:20 441acegi安全框架使用:第二部分 二、dbms实现鉴权 1. ... -
使用ACEGI实现权限控制
2015-09-21 16:10 521使用ACEGI实现权限控制,第一部分 环境: struts ...
相关推荐
这篇文档将探讨如何使用Acegi,以及SSH(Struts 2、Spring、Hibernate)栈搭建一个安全的RBAC系统。 首先,我们需要下载相关的软件和库,如Java 5、Tomcat 5.5.26、Struts 2.0.11、Spring 2.5.1、Hibernate 3.2以及...
<br>acegi初级使用者的良好桥梁,让你从零基础学会对acegi的相关配置及简单使用(需要对SSH的搭建有所了解); <br>真正高效的acegi权限配置,有效为你节省大量时间,因为你不需要再花费大量时间耗费在网络上查找...
通过Appfuse,我们可以快速搭建起一个包含用户管理、角色管理和权限分配功能的系统框架。 Spring作为控制反转(IoC)和面向切面编程(AOP)的代表,是Java企业级应用的核心组件。在本项目中,Spring不仅负责管理...
本篇文章将探讨如何使用Acegi、Spring、Hibernate和Struts2这四大组件共同构建一个基于角色的权限控制系统(Role-Based Access Control, RBAC),以确保系统的安全性。 首先,我们需要理解认证和授权这两个基本的...
它不仅演示了Acegi Security的功能,还提供了一个基础模板,可以帮助快速搭建具有安全功能的应用程序。 "contactsforchapter12"可能是这个例子中的一个具体应用,可能是一个章节或部分,展示如何使用Acegi Security...
开发者通常会使用这样的数据导入到数据库中,以快速搭建和测试权限管理系统的运行环境。 总结来说,Java SSH框架权限管理系统是一个集成了Struts、Spring和Hibernate的后端解决方案,用于构建安全、高效的企业级...
为了搭建Acegi认证服务,需要将以下依赖的jar文件添加到项目的`WEB-INF/lib`目录下: - `acegi-security-1.0.3.jar` - `spring2.0.jar` - `commons-codec-1.3.jar` 此外,还需要对项目的`web.xml`文件进行配置,以...
将Acegi Security与Jetty结合使用,开发者可以在Jetty服务器上创建安全的Web应用,实现用户身份验证和权限控制。 "acegi-security-jetty-0.7.1.jar"是这个压缩包的主要文件,它是Acegi Security与Jetty集成的实现库...
Acegi_Spring_Hibernate_Struts2搭建基于角色的权限控制系统.doc
通过使用拦截器(Interceptor),Struts2能够实现事务管理、权限验证等功能,这在权限管理系统中至关重要。 **Spring4** 是一个全面的企业级应用开发框架,它提供依赖注入(DI)和面向切面编程(AOP)等核心功能。...
总结起来,这个项目利用SSH框架搭建了一个包含用户权限管理的系统,通过JavaScript库MzTreeView实现了可视化、交互式的树形结构,方便管理用户和角色的权限关系。数据库脚本和相关文档确保了系统的数据结构和功能的...
Spring Security通过定义UserDetailsService接口处理用户认证,使用AccessDecisionManager进行访问决策,定义RoleHierarchy来处理角色的层级关系,使用Acegi表达式语言控制URL权限。同时,我们还可以利用Spring Boot...
通过对这些代码的分析和学习,开发者可以深入理解如何在实际项目中运用SSH框架和Spring Security来搭建权限管理系统。 总的来说,这个项目为Java开发者提供了一个实践SSH框架和Spring Security权限管理的实例,对于...
【标题】"Maven搭建的简单项目"涉及的是使用Maven构建Java应用程序的过程。Maven是一个项目管理和综合工具,它简化了构建、依赖管理和文档生成的任务。通过定义一个项目对象模型(POM),Maven能够自动下载所需库,...
**权限管理**:在SSH框架中,通常会利用Spring Security(原Acegi)或者Apache Shiro来实现权限控制。这些安全框架提供了角色、权限的概念,可以对用户的访问权限进行精细化控制,确保系统安全。 **文件上传下载**...
4. **与其他框架的良好集成**:Spring Security 与 Spring MVC、Spring Boot 等其他 Spring 生态系统中的组件有良好的兼容性,使得开发过程中更容易实现安全相关的功能。 #### 二、内容结构组织 本手册将按以下五...
它不仅实现了基本的CRUD(创建、读取、更新、删除)操作,还加入了权限管理功能,通过使用ACEGI(Aspect-based Code Enforcing Global Interceptors)框架实现了较为完善的权限控制机制。 #### 二、关键技术点分析 ...
在某些情况下,可能希望使用自定义的表结构来存储用户和权限信息。例如,可能需要添加额外的字段来支持更多的业务需求。 **3.2 初始化数据** 同样,需要确保这些自定义表中有足够的数据以支持认证和授权过程。 **...
- **环境准备**:由于Spring Security的依赖较多,为了简化项目的搭建过程,推荐使用Maven作为构建工具。这样可以通过Maven自动下载所需的依赖库,避免手动管理所带来的麻烦。同时,如果读者还没有安装Maven,可以...
总的来说,SSH整合提供了全面的企业级应用开发框架,通过Spring、Struts2和Hibernate的协同工作,可以高效地搭建复杂且稳定的系统。对于"权限管理"这一特定需求,SSH整合提供了成熟的安全框架,确保系统的安全性与...