`

基于CAS搭建JavaEE单点登录框架(服务端)(取消https证书验证)

    博客分类:
  • cas
 
阅读更多
 
准备工作,需要用到一些工具.
 
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
 
一、cas服务端的搭建

1. 基本搭建。
将下载的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登录即可,cas默认验证方式为用户名和密码相同即可。登录后可以看到如下界面。

 

 

额。。服务端其实现在已经搭建完了。但是我们在真正的项目中肯定是要登录到数据库中去验证用户名和密码的。下面就介绍下如何使cas查询数据库中的用户名和密码。(PS:这里有个限定,那就是需要所有的web应用都使用同一个库和密码加密方式。 例如MD5。当然,在项目中也理所应当这么做。)

 

2.使用数据库来验证用户登录。

首先需要导入一些jar包。

导入spring链接数据库的必须jar包,这里可以根据自己的需要引入相应的版本。截图如下:

 

 

其中,有几个jar包不是spring的但必须导入,

Cas-server-support-jdbc-3.3.3.jar

Cas-server-support-ldap-3.3.3.jar

Commons-dbcp.jar

Commons-pool.jar

Sqljdbc.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,可以验证自己是否成功,一般这里报错主要是jar的错,jar少引了或者冲突,其他的基本不会报错。

 

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

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

 

好吧,cas服务端基本配置完毕了,如有问题可以回复提问。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics