[仿写]
http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip
http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip
1
deployerConfigContext.xml
<!-- JDBC 执行SQL 通过数据库数据验证 --> <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:jdbc:oracle:thin:@192.168.89.28:1521:orcl</value> </property> <property name="username"> <value>blog</value> </property> <property name="password"> <value>password</value> </property> </bean> <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName"> <constructor-arg value="MD5"/> </bean>
id="authenticationManager"
<property name="authenticationHandlers"> <list> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" /> <!-- xwl 默认验证方法 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> --> <!-- xwl Query Database Validation--> <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="casDataSource" /> <property name="sql" value="select u.pwd from users u where lower(u.login) = lower(?)" /> <property name="passwordEncoder" ref="passwordEncoder" /> </bean> <!-- xwl 添加新的 SSOAuthenticationHandler --> <bean class="com.sso.SSOAuthenticationHandler"> </bean> </list> </property>
2
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 ticketRegistry.xml
<!-- Ticket Registry save cache--> <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" /> <!-- XWL ticket JPA Save DB <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.OracleDialect</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"/> <!-- XWL ticket org.apache.commons.dbcp.BasicDataSource.class --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@192.168.29.28:1521:orcl" p:password="blog" p:username="password" />
4 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" />
<!-- XWL Adition UsernamePasswordCredentialsValidator --> <!-- org.jasig.cas.authentication.principal.RememberMeUsernamePasswordCredentials com.sso.SSOAuthCredentials--> <bean id="UsernamePasswordCredentialsValidator" class="org.jasig.cas.validation.UsernamePasswordCredentialsValidator" />
5
- <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>
6
在网络安全性较好,对系统安全没有那么高的情况下可以取消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
7
7
相关推荐
.net CAS SSO 登陆客户端程序,可以直接运行,直接将DoNetCasClient生成dll集成到你的项目即可。本人博客有教程。
SSO学习有CAS SSO配置.docSSO学习有CAS SSO配置.doc
Yale CAS SSO DotNet Client
Yale CAS SSO JAVA Client
cas sso单点登录服务端
SSO实例安装和配置指南PDF版 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。
单点登录之CAS SSO从入门到精通
单点登录 CAS SSO!看到很多要分的,然后花了点时间找了个最新的,分享给大家!
CAS SSO 原理 (转) SSO 是一个非常大的主题,我对这个主题有着深深的感受,自从广州 UserGroup 的论坛成立以来,无数网友都在尝试使用开源的 CAS , Kerberos 也提供另外一种方式的 SSO ,即基于 Windows 域的 SSO...
Yale cas 实现sso教程,包括了java实现和dotnet实现。http://214s.5d6d.com
CAS实现单点登录(SSO)经典完整教程,详细描述了单点登录的有关内容。PS:有些错误的地方。
CAS单点登录,定制CAS单点登录,此文档详细介绍了如何定制CAS,实现单点登录
文档里面介绍了cas单点登录的主要配置及多个用户信息的配置,在客户端怎么才能获取多样的用户信息。
单点登录: 仿CAS。实现了单点登录功能。访问 http://localhost:8090/ssoClient/index/index 或者 http://localhost:8090/ssoClient/login 进行登录 登录成功后会跳转到 ...
CAS学习笔记 --CAS的服务器配置和各种客户端的配置
CAS在Tomcat中实现单点登录项目,单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS...
在做SOA项目或者单点登录SSO的时候,用户目录往往都是通过LDAP来完成的,那么CAS与LDAP整合的问题是必须要做的,这里采用OpenLDAP和CAS来记录一下自己的配置过程
CAS_SSO 框架 官方PPT ....
CAS Server 4.0二次开发说明文档, SSO