基于CAS 单点登录服务端的搭建

一、cas服务端的搭建

 
1、工具包下载
cas服务端:cas-server-3.3.3-release.zip 下载地址: http://downloads.jasig.org/cas/cas-server-3.3.3-release.zip
cas客户端:cas-client-3.1.8-release.zip 下载地址: http://downloads.jasig.org/cas-clients/cas-client-3.1.8-release.zip
cas java客户端:cas-client-2.0.11.zip 下载地址: http://downloads.jasig.org/cas-clients/cas-client-2.0.11.zip
2.、基本搭建。
将cas服务端zip压缩包解压,在 modules文件夹下找到 cas-server-webapp-3.3.3.war 放到一个tomcat下,启动tomcat,将自动解压缩war包,将项目文件夹名改为cas。
去掉https验证(先暂时去掉)
打开 cas/WEB-INF/deployerConfigContext.xml,
找到<bean class="org.jasig.cas.authentication.handler.support.
HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />,
将其更改为: <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient"p:requireSecure="false" />
 
打开cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml,将p:cookieSecure="true"改为p:cookieSecure="false"。
打开cas/WEB-INF/spring-configuration/warnCookieGenerator.xml,将p:cookieSecure="true"改为p:cookieSecure="false"。
 
访问该项目可以看到如下内容。 
 

 

使用admin和admin登录即可。登录后可以看到如下界面。

 

 

通过上述操作服务端搭建完了。但是我们在真正的项目中肯定是要登录到数据库中去验证用户名和密码的。

 

4、使用数据库来验证用户登录

下面就介绍下如何使cas查询数据库中的用户名和密码。(PS:这里有个限定,那就是需要所有的web应用都使用同一个库和密码加密方式。 例如MD5。当然,在项目中也理所应当这么做。)

 

首先需要导入一些jar包。

导入相关jar包。截图如下:

 

打开cas服务端:cas/WEB-INF/ deployerConfigContext.xml,大约100多行找到如下代码:

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

注释掉这行代码,添加如下代码

<bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler" abstract="false" lazy-init="default" autowire="default" dependency-check="default">

<property name="dataSource" ref="casDataSource" /> <!--数据源-->

<property name="tableUsers" value="TB_USER" /> <!--表-->

<property name="fieldUser" value="UserName"/> <!--用户名-->

<property name="fieldPassword" value="Password"/> <!--密码-->

<property name="passwordEncoder" ref="passwordEncoder"/><!--加密方式-->

</bean>

这里我使用的是让cas指定需要验证的表和字段,另外指定了加密方式,可以看到我们还需要两个bean属性,数据源和加密方式。

在外层加入bean:

<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>

<property name="url" value="jdbc:sqlserver://192.168.1.14:1433;DatabaseName=NFS_IOT_DESKTOP"></property>

<property name="username" value="sa" />

<property name="password" value="123" />

</bean>

<!--加密方式,也可以指定自己的加密类-->

<bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">

<constructor-arg value="MD5"/><!--使用MD5加密-->

</bean>

之后重启tomcat,可以验证自己是否成功。

这样cas服务端的数据层就完全配置完毕了。当然我们还需要自定义验证登录的界面,这里就说下如何指定前台登录的jsp就可以了。

在服务端的classes文件夹下,有很多配置文件,其中 default_views.properties就是指定页面用的。可以根据其中的注释指定自己的jsp页面。

猜你喜欢

转载自tzz6.iteye.com/blog/2242648