- 浏览: 415128 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (114)
- C++ (1)
- JAVA (58)
- sql,oracle,mysql (7)
- struts (2)
- tomcat (6)
- JS CSS (6)
- 其他 (7)
- javascript (4)
- exception (1)
- error (1)
- hashmap (1)
- hashset (1)
- python (1)
- sql (2)
- oracle (4)
- mysql (2)
- weblogic (3)
- session (2)
- http-only-cookie (1)
- httponly (1)
- cookie (1)
- ide (0)
- intellij (1)
- eclipse (2)
- idea (1)
- connection (2)
- maven (4)
- m2eclipse (2)
- m2e (2)
- InetAddress (1)
- DNS (1)
- web (1)
- goals (1)
- copy-dependencies (1)
- unpack (1)
- hash (1)
- 分布式 (1)
- gc (4)
- volatile (1)
- rsa (1)
- 加密 (1)
- 签名 (1)
- socket (1)
- tcp (1)
最新评论
-
xuxiaoyinliu:
谢谢,不错哦
有关cookie的httponly属性相关 -
雁行:
svn根本就不需要这么罗嗦的实现。
版本比较,直接出增量文件, ...
ant+cvs实现增量部署 -
ludatong110:
这个东西在IE里面会很明显的,我就碰到过IE中因为这个HTML ...
有关jqGrid应用里的字体大小不能控制的问题 -
labchy:
非常感谢 解决了问题
有关jqGrid应用里的字体大小不能控制的问题 -
tengyue5i5j:
Crusader 写道竟然有这么多人投良好。。。
楼主的思路有 ...
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
服务端配置
cas是个好东西,很灵活很好用,但是配置起来很麻烦,网上资料比较零碎。不弄个三五天根本不知道其中的原理,终于在多天的奋斗中配置成功,现在将配置的一些过程记录下来供大家参考。
cas官方网站
下载最新的服务端 CAS Server 3.3.3 Final
解压后将modules下面的cas-server-webapp-3.3.3.war部署到web服务器,作为单点登录的服务器。
登录的服务器下面很多配置文件,通过配置可以做一些扩展。
修改点1:验证方式使用我们自己的用户表验证
cas和当前已有的系统做集成的入口
1.修改deployerConfigContext.xml文件
添加数据源配置
- <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>com.mysql.jdbc.Driver</value>
- </property>
- <property name="url">
- <value>jdbc:mysql://192.168.1.100/ires?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</value>
- </property>
- <property name="username">
- <value>ires</value>
- </property>
- <property name="password">
- <value>i709394</value>
- </property>
- </bean>
定义MD5的加密方式
- <bean id="passwordEncoder"
- class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
- <constructor-arg value="MD5"/>
- </bean>
配置authenticationManager下面的authenticationHandlers属性
- <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
- <property name="dataSource" ref="casDataSource" />
- <property name="sql" value="select community_password from community_user_info where lower(community_user_info.community_user) = lower(?)" />
- <property name="passwordEncoder" ref="passwordEncoder"/>
- </bean>
修改点2:获取用户信息保存,方便各个客户端可以统一得到用户信息
1.定义attributeRepository,通过jdbc查询用户的详细信息,可以把用户表或用户的所属组织机构或角色等查询出来。
- <bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
- <constructor-arg index="0" ref="casDataSource" />
- <constructor-arg index="1" >
- <list>
- <value>username</value>
- <value>username</value>
- </list>
- </constructor-arg>
- <constructor-arg index="2">
- <value>
- select * ,(SELECT orgn_organization.id from orgn_organization left join orgn_member on orgn_member.orgn_id = orgn_organization.id left join community_user_info on community_user_info.id = orgn_member.user_id where community_user_info.community_user = ?) as orgnId from community_user_info where community_user=?
- </value>
- </constructor-arg>
- <property name="columnsToAttributes">
- <map>
- <entry key="id" value="id" />
- <entry key="community_user" value="userName" />
- <entry key="orgnId" value="orgnId" />
- <entry key="is_admin" value="isAdmin" />
- </map>
- </property>
- </bean>
2.配置authenticationManager中credentialsToPrincipalResolvers属性
- <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver">
- <property name="attributeRepository" ref="attributeRepository" /> </bean>
注意:默认cas登录服务器没有把用户信息传到客户端中,所以要修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,增加
- <c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
- <cas:attributes>
- <c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">
- <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
- </c:forEach>
- </cas:attributes>
- </c:if>
修改点3:用数据库来保存登录的会话
这样服务器在重新启动的时候不会丢失会话。
1.修改ticketRegistry.xml文件
将默认的ticketRegistry改成
- <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JpaTicketRegistry">
- <constructor-arg index="0" ref="entityManagerFactory" />
- </bean>
- <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
- <property name="generateDdl" value="true"/>
- <property name="showSql" value="true" />
- </bean>
- </property>
- <property name="jpaProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- </props>
- </property>
- </bean>
- <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
- p:entityManagerFactory-ref="entityManagerFactory" />
- <tx:annotation-driven transaction-manager="transactionManager"/>
- <bean
- id="dataSource"
- class="org.apache.commons.dbcp.BasicDataSource"
- p:driverClassName="com.mysql.jdbc.Driver"
- p:url="jdbc:mysql://192.168.1.100:3306/cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
- p:password="709394"
- p:username="itravel" />
配置完之后还需要一些jar的支持,根据提示那些包缺少到网上找。
修改点4:配置remenber me的功能,可以让客户端永久保存session
1.修改deployerConfigContext.xml文件
authenticationManager增加authenticationMetaDataPopulators属性
- <property name="authenticationMetaDataPopulators">
- <list>
- <bean class="org.jasig.cas.authentication.principal.RememberMeAuthenticationMetaDataPopulator" />
- </list>
- </property>
2.修改cas-servlet.xml
修改authenticationViaFormAction配置变成
- <bean id="authenticationViaFormAction" class="org.jasig.cas.web.flow.AuthenticationViaFormAction"
- p:centralAuthenticationService-ref="centralAuthenticationService"
- p:formObjectClass="org.jasig.cas.authentication.principal.RememberMeUsernamePasswordCredentials"
- p:formObjectName="credentials"
- p:validator-ref="UsernamePasswordCredentialsValidator"
- p:warnCookieGenerator-ref="warnCookieGenerator" />
增加UsernamePasswordCredentialsValidator
- <bean id="UsernamePasswordCredentialsValidator" class="org.jasig.cas.validation.UsernamePasswordCredentialsValidator" />
修改ticketExpirationPolicies.xml,grantingTicketExpirationPolicy配置如下,注意时间要加大,不然session很容易过期,达不到remember me的效果。
- <bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.RememberMeDelegatingExpirationPolicy">
- <property name="sessionExpirationPolicy">
- <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
- <constructor-arg index="0" value="2592000000" />
- </bean>
- </property>
- <property name="rememberMeExpirationPolicy">
- <bean class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
- <constructor-arg index="0" value="2592000000" />
- </bean>
- </property>
- </bean>
登录页面要增加隐藏字段rememberMe,值是true,或用一个checkbox来勾选。
修改点5:取消https验证
在网络安全性较好,对系统安全没有那么高的情况下可以取消https验证,使系统更加容易部署。
1.修改ticketGrantingTicketCookieGenerator.xml
- <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
- p:cookieSecure="false"
- p:cookieMaxAge="-1"
- p:cookieName="CASTGC"
- p:cookiePath="/cas" />
p:cookieSecure改成false,客户端web.xml中单独服务器的链接改成http
使用https协议的配置
1.证书生成和导入
下面是一个生成证书和导入证书的bat脚本,如果web应用和单独登录服务器部署在同一台机可以一起执行
- @echo off
- if "%JAVA_HOME%" == "" goto error
- @echo on
- @echo off
- cls
- rem please set the env JAVA_HOME before run this bat file
- rem delete alia tomcat if it is existed
- keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
- keytool -delete -alias tomcatsso -storepass changeit
- REM (注释: 清除系统中可能存在的名字为tomcatsso 的同名证书)
- rem list all alias in the cacerts
- keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
- REM (注释: 列出系统证书仓库中存在证书名称列表)
- rem generator a key
- keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -storepass changeit
- REM (注释:指定使用RSA算法,生成别名为tomcatsso的证书,存贮口令为changeit,证书的DN为"cn=linly" ,这个DN必须同当前主机完整名称一致哦,切记!!!)
- rem export the key
- keytool -export -alias tomcatsso -file "%java_home%/jre/lib/security/tomcatsso.crt" -storepass changeit
- REM (注释: 从keystore中导出别名为tomcatsso的证书,生成文件tomcatsso.crt)
- rem import into trust cacerts
- keytool -import -alias tomcatsso -file "%java_home%/jre/lib/security/tomcatsso.crt" -keystore "%java_home%/jre/lib/security/cacerts" -storepass changeit
- REM (注释:将tomcatsso.crt导入jre的可信任证书仓库。注意,安装JDK是有两个jre目录,一个在jdk底下,一个是独立的jre,这里的目录必须同Tomcat使用的jre目录一致,否则后面Tomcat的HTTPS通讯就找不到证书了)
- rem list all alias in the cacerts
- keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
- pause
- :error
- echo 请先设置JAVA_HOME环境变量
- :end
3.将.keystore文件拷贝到tomcat的conf目录下面,注意.keystore会在证书生成的时候生成到系统的用户文件夹中,如windows会生产到C:\Documents and Settings\[yourusername]\下面
2.配置tomcat,把https协议的8443端口打开,指定证书的位置。
- <Connector port="8443" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" disableUploadTimeout="true"
- acceptCount="100" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="conf/.keystore" keystorePass="changeit" truststoreFile="C:\Program Files\Java\jdk1.5.0_07\jre\lib\security\cacerts"/>
客户端配置
cas官方网站上面的客户端下载地址比较隐秘,没有完全公开,具体地址为
http://www.ja-sig.org/downloads/cas-clients/
下载最新的cas-client-3.1.6-release.zip
1.解压后把modules下面的包放到我们的web应用中
2.配置web.xml,注意encodingFilter要提前配置,不然会出现数据插入数据库的时候有乱码。
serverName是我们web应用的地址和端口
- <context-param>
- <param-name>serverName</param-name>
- <param-value>192.168.1.145:81</param-value>
- </context-param>
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>
- org.springframework.web.filter.CharacterEncodingFilter
- </filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.htm</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.ftl</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.xhtml</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.html</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.shtml</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.vm</url-pattern>
- </filter-mapping>
- <filter>
- <filter-name>CAS Single Sign Out Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.session.SingleSignOutFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>CAS Single Sign Out Filter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>
- org.jasig.cas.client.session.SingleSignOutHttpSessionListener
- </listener-class>
- </listener>
- <filter>
- <filter-name>CAS Authentication Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.authentication.AuthenticationFilter
- </filter-class>
- <init-param>
- <param-name>casServerLoginUrl</param-name>
- <param-value>http://192.168.1.100/cas/login</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>CAS Validation Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
- </filter-class>
- <init-param>
- <param-name>casServerUrlPrefix</param-name>
- <param-value>http://192.168.1.100/cas</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.util.HttpServletRequestWrapperFilter
- </filter-class>
- </filter>
- <filter>
- <filter-name>CAS Assertion Thread Local Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.util.AssertionThreadLocalFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>CAS Authentication Filter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>CAS Validation Filter</filter-name>
- <url-pattern>/*</url-pattern>
-
</filter-mapping>
发表评论
-
【Java TCP/IP Soket】— 消息边界的问题解决
2015-08-11 09:47 1384转自:http://blog.csdn.net/ ... -
java中volatile解释
2015-05-28 16:28 695http://www.cnblogs.com/aigongs ... -
Java中的substring真的会引起内存泄露么?
2015-05-27 13:18 867转: http://droidyue.com/blog/ ... -
成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
2015-05-27 12:24 580转:http://www.importnew.com ... -
成为Java GC专家(3)—如何优化Java垃圾回收机制
2015-05-27 12:23 750转:http://www.importnew.com ... -
成为JavaGC专家(2)—如何监控Java垃圾回收机制
2015-05-27 12:20 602转:http://www.importnew.com ... -
成为JavaGC专家(1)—深入浅出Java垃圾回收机制
2015-05-27 12:16 482转:http://www.importnew.com ... -
《深入分析Java Web技术内幕》-样章示图总结
2013-01-17 11:46 1280试读完本书的样章章节后,感受颇深,其实单从样 ... -
eclipse中(装了插件m2eclipse后的)导入maven工程显示"感叹号"
2013-01-15 16:02 7336有时候导入一些开源工程(maven结构的),在 ... -
(转)分析模式 之 参与者(Party)
2012-10-22 16:39 898在我们分析模型的时 ... -
(转)java.sql.SQLException: (无法从套接字获取更多数据)数据大小超出此类型的最大值
2012-10-22 16:38 5464转至:http://linwei-211.i ... -
有关hashmap,hashset的相关总结
2011-09-16 17:32 3016这篇转自http://hi.baidu.com ... -
有关JAVA异常和错误(ERROR)的处理
2011-09-15 20:41 19114最近遇到有关ERROR的处理问题,下面这篇文章 转至: ... -
XFire 、Axis2、CXF、JWS、java6 区别 (转)
2011-06-13 22:50 1885XFire VS AxisXFire是与Axis2 并列的 ... -
转载[Connection reset,Connection reset by peer,Software caused connection abort :]
2011-06-08 13:16 9935Connection reset,Connection ... -
java实现一个栈,并提供取该栈中最大数的方法,复杂度O(1)
2011-06-07 15:18 2080记得是哪个面试题里的,这里只想到一个简单的方法,大家看看 ... -
Listener Servlet和filter的应用
2011-05-16 22:21 850下面这段话是小总结: Listener是Ser ... -
转载【有关JSP中的转发和重定向用法】
2011-05-15 19:05 1709转自: http://blog.csdn.net/cyhjr ... -
转载【Java对象的强、软、弱和虚引用】
2011-05-13 22:47 8491.Java对象的强、软、弱和虚引用 在JDK 1.2以 ... -
有关JNDI的理解
2011-04-14 11:22 916JAVA EE规范里的jndi是为了解决下面两个问题: ...
相关推荐
cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置 cas 配置
spring security 结合cas 单点登录系统 cas客户端的配置文件
02 H3C CAS-云容器引擎配置指导 03 H3C CAS 虚拟机快照配置指导 04 H3C CAS-虚拟机防病毒配置指导 05 H3C CAS SR-IOV配置指导 06 H3C CAS vGPU热迁移配置指导 07 H3C CAS 内存管理最佳实践 08 H3C CAS 磁盘...
Liferay5.2.3和CAS配置成SSO
CAS原理和配置过程.,轻轻松松搞定CAS配置。。。。。。。。
CAS学习笔记 --CAS的服务器配置和各种客户端的配置
解压缩,根据配置CAS.txt说明进行单点登录配置,实现单点登录
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
CAS配置全攻略 客户端、服务器端配置
cas 3.5配置指南
关于weblogic下配置部署cas证书,实现单点登录。客户端配置
主要讲述了CAS单点登录多数据及获取更多用户信息配置。
cas客户端登录配置详细文档,支持客户端自定义登录和服务端统一登录。
1. 配置SSL a) 生成证书 b) 将证书导出为证书文件 c) 将证书文件导入到java证书库cacerts中 d) 修改<TOMCAT_HOME>/conf下面得server.xml文件 2. 部署CAS服务器 3. 修改CAS登录的用户库 4. 测试是否配置成功 5. ...
此文档自己亲手从0开始一步一步配置的详尽过程,其中包括keytool创建 、ticket、tomcat配置cas、自定义登录页面,处理服务器返回的乱码,服务退出、cas服务器返回多数据等等文档 包括SSO原理图,以及认证流程图等
cas 配置client 1.0 &2.0 及proxy DEMO 说明 1 cas server 搭建 1.1 资源准备 cas server 下载 http://www.ja-sig.org/downloads/cas/cas-server-3.3.1-release.zip 1.2 解压后打开cas-server-3.3.1-release\cas-...
CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案
SSO\CAS 单点登录配置手册
CAS配置手册.docx,这是CAS单点登录的技术文档,希望可以帮助学习者
WebSphere服务器CAS配置文档