- 浏览: 9124 次
最新评论
使用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 2653SpringSecurity安全配置—SSH整合 项目中使用 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
2015-09-23 18:04 412首先讲讲EhCache。在默认情况下,即在用户未提供自身配置文 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(6)
2015-09-22 16:19 356在企业应用中,用户的用户名、密码和角色等信息一般存放在RDBM ... -
菜鸟-手把手教你把Acegi应用到实际项目中(5)
2015-09-22 16:18 408在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(4)
2015-09-22 09:45 443今天就讲个ConcurrentSessionFilter。 在 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(3)
2015-09-22 09:43 412这一节我们将要了解的是AnonymousProcessi ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.2)
2015-09-22 09:29 428菜鸟-手把手教你把Acegi应用到实际项目中(1.2) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(1.1)
2015-09-21 16:37 397菜鸟-手把手教你把Acegi应用到实际项目中(1.1) 博客 ... -
菜鸟-手把手教你把Acegi应用到实际项目中(2)
2015-09-21 16:28 464菜鸟-手把手教你把Acegi应用到实际项目中(2) 博客分类 ... -
acegi安全框架使用
2015-09-21 16:20 399acegi安全框架使用:第二部分 二、dbms实现鉴权 1. ... -
使用ACEGI实现权限控制
2015-09-21 16:10 486使用ACEGI实现权限控制,第一部分 环境: struts ...
相关推荐
Acegi是大明鼎鼎都开源权限控制框架,权限Acegi的使用文档,帮助你在应用系统中配置权限.
Acegi安全权限管理手册 详细描述acegi安全管理
Spring Acegi权限控制,安全系统就只包括两个问题: 认证和授权.
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
Acegi + Spring + Hibernate + Struts 2搭建基于角色的权限控制系统.doc
NULL 博文链接:https://zw7534313.iteye.com/blog/2224254
Acegi解决权限问题,内含全部代码,包括文档及配置文件的说明,可以运行起来。
基于rbac模式的acegi权限管理,搭建在spring基础上的权限管理. 注:浏览软件名称CAJViewer 7.0 太大了 上传不上来 自行下载
包括:acegi-security-1.0.6.zip acegi-test.zip和集成ACEGI 进行权限控制详细介绍
<br>acegi初级使用者的良好桥梁,让你从零基础学会对acegi的相关配置及简单使用(需要对SSH的搭建有所了解); <br>真正高效的acegi权限配置,有效为你节省大量时间,因为你不需要再花费大量时间耗费在网络上查找...
实战Acegi:使用Acegi作为基于Spring框架的WEB应
acegi java权限验证框架ppt讲座和代码,不仅可以对目录进行权限认证还可以对方法进行验证
acegi+ssh动态实现基于角色的权限管理.
spring acegi 使用工程demo
acegi,acegi,acegi
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使用.pdf
最近因为公司的需要,用acegi进行权限控制,简单总结了一下,和大家分享
Acegi安全系统介绍