最近在研究cas 并对其进行改版,终于有所成就,写出来与大家分享一下,不足之处希望指教,共同进步。
首先下载casserver和casclient
下载地址分别为:
服务器端下载: http://www.jasig.org/cas_server_3_4_11_release
客户端下载:http://www.jasig.org/jasig-cas-client-java-version-321-releas
部署方法:
将casserver解压后取其中的modules/cas-server-webapp-3.4.11.war.将其重命名为casserver.war,然后放到tomcat的webapps中。
并修改cas.property里的路径,替换/cas为/casserver
访问路径:http://localhost:8081/casserver到达登录
输入用户名abc,密码abc,即可登录成功。系统要求用户名=密码。
下面我们改版,让其支持数据库登录检测。
1.修改deployerConfigContext.xml文件,添加数据源配置
<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的加密方式
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="MD5"/>
</bean>
配置authenticationManager下面的authenticationHandlers属性
<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>
需要引入jar文件为:cas-server-support-jdbc-version.jar
修改点2:获取用户信息保存,方便各个客户端可以统一得到用户信息
1.定义attributeRepository,通过jdbc查询用户的详细信息,可以把用户表或用户的所属组织机构或角色等查询出来。
<constructor-arg index="0" ref="casDataSource" />
<constructor-arg index="1" value=" select * from USERS where USER_NAME = ? "/>
<property name="queryAttributeMapping">
<map>
<entry key="username" value="uid"/>
</map>
</property>
<property name="resultAttributeMapping">
<map>
<entry key="ID" value="id"/><!--要查询的附加属性,前者数据库属性,后者映射后的属性-->
<entry key="USER_NAME" value="userName"/>
<entry key="CHANNEL" value="chanel"/>
<entry key="STATUS" value="status"/>
</map>
</property>
</bean>
修改名称为serviceRegistryDao的bean,在list中选择针对自己选择的方式添加属性,我这里选择的是http://**类型,然后添加了需要额外查询的属性名
<property name="allowedAttributes">
<list>
<value>id</value>
<value>chanel</value>
<value>status</value>
</list>
</property>
总体如下。
<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"> <property name="registeredServices"> <list> <bean class="org.jasig.cas.services.RegisteredServiceImpl"> <property name="id" value="0" /> <property name="name" value="HTTP" /> <property name="description" value="Only Allows HTTP Urls" /> <property name="serviceId" value="http://**" /> <property name="evaluationOrder" value="10000001" /> <property name="allowedAttributes"> <list> <!--映射后的属性--> <value>id</value> <value>chanel</value> <value>status</value> </list> </property> </bean> <bean class="org.jasig.cas.services.RegisteredServiceImpl"> <property name="id" value="1" /> <property name="name" value="HTTPS" /> <property name="description" value="Only Allows HTTPS Urls" /> <property name="serviceId" value="https://**" /> <property name="evaluationOrder" value="10000002" /> </bean> <bean class="org.jasig.cas.services.RegisteredServiceImpl"> <property name="id" value="2" /> <property name="name" value="IMAPS" /> <property name="description" value="Only Allows HTTPS Urls" /> <property name="serviceId" value="imaps://**" /> <property name="evaluationOrder" value="10000003" /> </bean> <bean class="org.jasig.cas.services.RegisteredServiceImpl"> <property name="id" value="3" /> <property name="name" value="IMAP" /> <property name="description" value="Only Allows IMAP Urls" /> <property name="serviceId" value="imap://**" /> <property name="evaluationOrder" value="10000004" /> </bean> </list> </property> </bean>
SingleRowJdbcPersonAttributeDao.java 在下面下载。
配置authenticationManager中credentialsToPrincipalResolvers属性
<property name="attributeRepository" ref="attributeRepository" /> </bean>
注意:默认cas登录服务器没有把用户信息传到客户端中 ,所以要修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,增加
<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>
1.修改ticketGrantingTicketCookieGenerator.xml
XML/HTML代码
<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
相关推荐
CAS4.1.4是CAS的一个特定版本,该版本包含了服务端和客户端的实现,使得用户只需一次登录就可以访问多个相互信任的应用系统。 在CAS4.1.4中,服务端是核心组件,负责验证用户的凭证(如用户名和密码),并为客户端...
CAS(Central Authentication Service)是一种广泛使用的开放源码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在本文中,我们将探讨如何在普通方式和Spring Boot方式下配置和...
总结,这个压缩包提供的代码是实现CAS服务端和客户端的实例,适用于快速搭建SSO环境。其中,服务端处理用户身份验证,客户端则负责与服务端的交互和本地应用的安全控制。通过直接运行代码,开发者可以省去大量初始化...
内含本人实例精华,一个自做PPT,动画解析cas协议,四个客户端client程序实例,一个server端程序,N个文档以及所有xml文件。配套讲解博客地址: [置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+...
本实例旨在展示如何将Spring Security与CAS结合,实现一个高效的单点登录(Single Sign-On,SSO)解决方案。下面,我们将深入探讨这个集成过程。 首先,Spring Security是Spring框架的一部分,专门用于应用程序的...
综上所述,这个压缩包提供了一个完整的CAS单点登录实例,包括服务端和客户端的实现,可以帮助开发者理解并部署自己的CAS系统。通过深入研究和实践,你可以掌握如何利用CAS实现Web应用的安全、便捷的单点登录功能。
然后clean install tomcat7:run 就能跑起来,注意要修改node1和node2里的shiro.properties配置文件,要配置登录成功成功返回的路径 我的访问的分别是: 服务端: http://localhost:8050/cas-server 客户端:...
在这个压缩包中,包含了一个CAS服务端和客户端的代码实例,以及相关的配置文档,可以帮助开发者快速理解和实现CAS SSO功能。 服务端部分(cas-server-4.0.0-release.rar): CAS服务端是整个SSO的核心,它负责验证...
SSO允许用户通过一次登录验证就能访问多个应用系统,无需在每个系统之间单独进行身份验证,极大地提高了用户体验和安全性。本教程将深入探讨如何使用CAS实现服务端和客户端的集成。 1. CAS服务端搭建 - 安装环境:...
CAS4.1.4服务端和客户端实例,直接修改配置即可运行,详细参见博文:http://blog.csdn.net/chenhai201/article/details/50623395
在这个实例中,Yelu大学的CAS服务器负责验证用户的凭证,而各个应用系统作为CAS客户端,通过与服务器交互来验证用户的登录状态。 1. **CAS服务器的部署和配置** - CAS服务器通常作为独立的应用运行,可以使用...
在这个实例中,我们将深入探讨如何通过提供的源码来理解和设置一个CAS SSO测试环境。 首先,我们要了解的是`CAS服务端`。CAS服务器是整个SSO系统的核心,负责用户的认证和会话管理。在提供的压缩包中,"cas服务端的...
本文将详细解析“CAS单点登录实例详细步骤”这一主题,通过分析给定文件的标题、描述、标签以及部分内容,提炼出关于CAS SSO配置的关键知识点。 #### 二、CAS单点登录基础知识 CAS的核心功能在于提供一种安全的...
总结,通过学习和实践这个"利用CAS实现单点登录的完整实例",你将掌握如何使用Jasig CAS构建一个高效的单点登录系统,从而提升用户体验,简化身份验证管理,并加强系统的安全性。记得深入理解每个步骤,并根据实际...
2. **初始化客户端**:创建`CasClient`实例,配置CAS Server的URL和服务验证URL。 3. **服务票证验证**:当用户访问受保护的资源时,客户端会检查是否存在有效的服务票证(ST)。如果没有,它将重定向用户到CAS ...
Struts2和CAS单点登录(SSO)的集成是一个常见的Web应用安全实践,它允许用户在一个系统登录后,无须再次输入凭证就能访问其他相互信任的系统。在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与...
【压缩包子文件的文件名称列表】"my-cas-server"可能是一个包含博主定制的CAS服务器实例的文件夹,其中可能包括以下内容: 1. **源代码**:可能包含了对原版CAS的修改或扩展,比如自定义的认证模块、服务注册接口等...
本资源包含了一个完整的SSO服务端与客户端的源代码实例,旨在帮助开发者深入理解和实践SSO的实现。 SSO服务端通常负责身份验证,它存储用户的凭证信息,如用户名和密码,以及与这些凭证关联的角色和权限。在本实例...