最近一段时间研究的cas,不知道是什么原因,可能自己最近太浮躁了,没有沉下心来去研究,所以一直拖着,将近拖了一周半的时间,上周的周总结,确保一定要解决的问题,今天还是横下心来,处理完这个问题,我是一个对于技术痴迷的人,对于现在研究出来这个结果非常高兴,与大家分享一下:
注明:本文所讲的至少怎么配置,但是具体的原理和细节会在稍后的时间里更新给大家,如有不对的地方希望大家指出来,共同学习和探讨一下
配置步骤:
在网上搜索这个内容铺天盖地的都是,但是根据步骤来出现各种各样的问题,现在我把我实现方式与大家分享,废话又是一堆,我们进入正题:
1.下载路径:服务器端的文件任何版本都可以: http://downloads.jasig.org/cas/
客户端的文件任何版本都可以 : http://downloads.jasig.org/cas-clients/
我建议下载最高版本。
2. 我下载的cas-server-3.5.2-release.zip这个,然后解压,将解压后文件中modules下的war后缀的文件重命名为cas然后放到tomcat的webapp下,然后启动tomcat,会发现有webapp下多了一个文件夹cas然后我们进行配置cas下的deployerConfigContext.xml这个文件
3.配置deployerConfigContext.xml该文件
1>配置数据源
<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://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123</value> </property> </bean>
然后在你的数据库中新建一张表和下面的sql对应上就可以,然后进行验证。
2> 因为你新增用户或者修改用户密码时都会对密码进行加密(我没有测试,你们可以测试一下)
<bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" p:characterEncoding="UTF-8"> <constructor-arg index="0" value="MD5"/> </bean>
PasswordEncoder用来将用户登录时提供的密码进行编码,这样才能跟数据库中已经编码的用户密码进行比较. 下面是使用MD5加密用户密码为例
3>处理当你走单点登录时,进行用户校验
<property name="authenticationHandlers"> <list> <!--利用上面配置的dataSource与passwordEncoder来验证用户合法性--> <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property ref="casDataSource" name="dataSource"/> <property ref="passwordEncoder" name="passwordEncoder"/> <property name="sql"> <value>select password from user where name = ?</value> </property> </bean> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient"/> <!--这是一个简单的测试用的AuthenticationHandler, 当用户输入的用户名与密码相同时,则验证通过,实际使用中要注释掉--> <!--<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>--> </list> </property>
4.添加jar包到cas的WEB-INFO下的lib中:
驱动jar根据你链接的数据库相应的添加
- cas-server-support-jdbc-3.4.10.jar(在解压后的cas-server-release包的modules文件夹下)
- commons-collections.jar
- commons-dbcp.jar
- commons-pool.jar
到此位置cas算是配置完成,我们进行ssl的设置,我出问题就是在给地方卡壳了。
5.ssl证书的生成
在执行下面的命令时,首先要把你的dos路径指向安装jdk的bin目录:例如
首先进入cmd
然后再执行 cd C:\Program Files\Java\jdk1.6.0_43\bin(根据自己情况来)
1> 生成证书:keytool -genkey -alias smalllove -keyalg RSA -keystore D:/keys/smallkey
注意里面的姓氏是你的域名不是乱起的,如果没有包名自己新建一下
2>导入证书:keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey
3>把证书导入到客户端JDK中:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
注意该步骤可能存在的问题是如果你的jdk安装在program files中的话会没有办法导入因为中间有空格,报错,你可以将cacerts生成文件可以在任何目录生成,然后将生成的cacerts文件手动放到jdk指定的目录中
6.配置tomcat中conf文件下的server.xml
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/keys/smallkey" keystorePass="smalllove"/> <!--在2.1中设置的密码-->
7. 构建项目添加jar包
新建一个web项目,将其放到tomcat下,然后将cas-client文件夹中modules下cas-client-core-3.2.1.jar放到你新建的web项目的lib下
8.配置新建web项目的web.xml文件
<!-- ======================== 单点登录开始 ======================== -->
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
<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>
<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://www.travel.com:8443/cas/login</param-value>
<!--这里的server是服务端的IP -->
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://www.travel.com:8080</param-value </init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<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>https://www.travel.com:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://www.travel.com:8080</param-value> </init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>
org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->
<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 Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ======================== 单点登录结束 ======================== -->
上面的所有的东西配置完成你可以在浏览器中用“https://localhost:8443/project” , 进行访问就可以得到你想要的预期的结果。原理级:http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/参考偷个懒了。
我最近打算研究该项目的源代码,并对代码进行改造:由于苦于时间短少所以在后面的时间里,一定补上。
相关推荐
CAS多数据库配置单点登录 CAS(Central Authentication Service)是一种流行的单点登录解决方案,能够提供安全、可靠的身份验证服务。下面将详细介绍CAS多数据库配置单点登录的知识点。 一、环境说明 在配置CAS单...
**基于Cas的单点登录实现** 单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。它为用户提供了一种方便、高效的访问多系统的方式,同时减少...
2. **配置 CAS 客户端**:Mantis 需要集成 CAS 客户端库来实现单点登录。本文档采用的是 PHP 版本的 CAS 客户端。 ##### 第二步:Mantis 程序修改 1. **添加 CAS 客户端文件夹**: - 在 Mantis 根目录下新建一个...
在IT行业中,单点登录...总的来说,"集成cas实现单点登录认证.zip"提供的资源将指导你完成整个SSO集成过程,从安装CAS服务器到配置若依应用,再到解决可能遇到的问题,帮助你构建一个安全、便捷的单点登录环境。
配置CAS单点登录主要涉及以下几个步骤: 1. **安装CAS服务器**:首先,你需要下载并安装CAS服务器,通常选择最新稳定版本。这包括设置Java环境,获取CAS服务器的WAR文件,并将其部署到Servlet容器(如Tomcat)中。 ...
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
总之,Jeecg配置单点登录是一个涉及CAS服务器设置、客户端集成、登录验证等多个环节的过程。正确配置后,能够提升用户体验,同时也强化了系统的安全性。通过学习和实践,你可以掌握这一重要技能,为自己的Java应用...
通过以上详细步骤,你可以成功配置并实现基于CAS的SSO单点登录系统。在配置过程中,可能会遇到各种问题,如网络连接、证书验证、配置错误等,解决这些问题后,即可享受到SSO带来的便捷性。如果有任何疑问,可以查阅...
**CAS单点登录配置大全** CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源单点登录(Single Sign-On,SSO)协议。它允许用户通过一个统一的认证系统访问多个应用系统,而无需在每个系统...
CAS(Central Authentication Service)是 Yale 大学开源的一个基于 Java 的单点登录系统,它提供了一种安全、便捷的身份验证机制。本文档将深入探讨如何使用 CAS 实现 Java 应用中的单点登录功能。 一、CAS 概述 ...
CAS(Central Authentication Service)是基于Java开发的一种开源的单点登录(Single Sign-On,简称SSO)协议。在.NET环境中,我们可以通过实现CAS客户端来实现单点登录功能。本示例将详细介绍如何在.NET项目中集成...
### CAS单点登录服务器配置详解 #### 一、CAS单点登录概述 CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务框架,它为Web应用提供了一种简化了的身份验证流程。通过CAS,用户只需要在...
CAS 5.3 及 Windows AD 域实现单点登录免身份认证 CAS(Central Authentication Service)是一种流行的开源身份验证系统,旨在提供单点登录(SSO)解决方案。Windows AD(Active Directory)则是微软公司推出的目录...
单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次输入...通过理解和实践CAS Server的配置以及客户端的集成,开发者可以有效地在自己的应用环境中实现单点登录功能。
"itop接入CAS单点登录框架实现步骤" 本文将详细介绍开源ITSM工具iTop接入开源单点登录框架CAS的实现方法。该方法经过实践验证,已经在作者的单位中应用。 CAS框架简介 CAS(Central Authentication Service)是一...
在本“CAS单点登录demo”中,我们将深入探讨CAS的工作原理、配置步骤以及如何实现客户端与服务器端的交互。 1. CAS工作原理: CAS的核心思想是集中式的身份验证,用户只需在一个地方进行登录,之后访问其他已经...
这个项目可能包含配置文件、控制器代码、视图模板和其他相关资源,展示了如何在实际应用中实现CAS单点登录功能。 综上所述,.NET CAS单点登录涉及到了身份验证、票证机制、客户端和服务器之间的交互等多个核心概念...