上一篇文章讲了用系统默认的simple验证方式,即用户名=密码来进行CAS的验证。
本文我们尝试用mysql来进行验证
1,下载cas-server-3.4.2-release.zip及mysql-connector-java-5.1.7-CodePub.zip,cas-client-2.0.11.zip三个文件
可能有些您已经下载了,本文中最重要的是mysql-connector-java-5.1.7-CodePub.zip这个文件,它是jdbc连接mysql
的驱动包;
2,copy :
cas-server-3.4.2-release.zip -> modules/cas-server-support-jdbc-3.4.2.jar
mysql-connector-java-5.1.7-CodePub.zip -> mysql-connector-java-5.1.7-bin.jar
cas-client-2.0.11.zip -> java/lib/casclient.jar
三个文件到tomcat_path/webapps/cas/WEB-INF/lib中即可;
3,修改配置文件 tomcat_path/webapps/cas/WEB-INF中deployerConfigContext.xml文件
首先注释以下语句:
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
更改为:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from auth_user where username=?" />
<property name="dataSource" ref="dataSource" />
</bean>
再在外围加上:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost/zhidao"></property>
<property name="username" value="root"></property>
<property name="password" value="******"></property>
</bean>
我的示例:
<property name="authenticationHandlers">
<list>
<!--
| This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
| a server side SSL certificate.
+-->
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" />
<!--
| This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS
| into production. The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
| where the username equals the password. You will need to replace this with an AuthenticationHandler that implements your
| local authentication strategy. You might accomplish this by coding a new such handler and declaring
| edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
+-->
<!-- <bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"
/> +-->
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from auth_user where username=?" />
<property name="dataSource" ref="dataSource" />
</bean>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost/zhidao"></property>
<property name="username" value="root"></property>
<property name="password" value="******"></property>
</bean>
最后重启tomcat服务器,这时候验证就去你指定的mysql数据库了.
-------------------------------------------------------------------------------------------------------------------------
以上做验证的时候密码必须在数据库中是原文存储的才可以正常,所以您的密码是以某种加密方式存储的还需要要加入规则
以下实现了md5加密;
1,加入password规则
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select password from auth_user where username = ?" />
<property name="passwordEncoder" ref="myPasswordEncoder" />
</bean>
上面这段,sql定义了一个查询语句,用来判断用户名,密码是否存
在,myPasswordEncoder是我自定义的一个密码的加密类,实现了passwordEncoder接口及其 encode() 方法。
2,配置PasswordEncoder;
<bean id="myPasswordEncoder" class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/>
3,MyPasswordEncoder
给出源
码,大家自己编译成class吧,然后把MyPasswordEncoder.class放到
Tomcat_path\webapps\cas\WEB-INF\lib\cas-server-core-3.4.2.jar中相应的包下,jar包用winrar打
开后,直接把class拖到相应目录下即可
package org.jasig.cas.authentication.handler;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.util.StringUtils;
// Referenced classes of package org.jasig.cas.authentication.handler:
// PasswordEncoder
public final class MyPasswordEncoder
implements PasswordEncoder
{
public MyPasswordEncoder(){};
public String encode(String password)
{
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
try {
byte[] strTemp = password.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
public final static String MD5(String s) {
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
public static Date getDateByString(String dateString) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.parse(dateString);
} catch (Exception e) {
return null;
}
}
public static String getDateString(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(date);
}
}
分享到:
相关推荐
1. **CAS服务器安装**:下载CAS服务器的源码或预编译的二进制包,根据系统环境进行相应的配置。确保JDK已安装且版本兼容。 2. **CAS服务器配置**:修改`cas.properties`配置文件,设置数据库连接、服务器端口、认证...
【标题】"Yale CAS服务器端深度定制"主要涉及到的是CAS(Central Authentication Service)系统,这是一个基于Java开发的开源身份验证框架,由耶鲁大学开发并广泛应用于各个机构的单点登录(Single Sign-On,SSO)...
这个文件可能包括了CAS服务器的配置文件、客户端应用的源码、测试数据等,方便读者按照教程进行实践操作。 总之,这个主题涉及到了Web应用安全、身份验证、单点登录协议和前端开发技术,对于理解CAS工作原理和实现...
新华三CAS服务器虚拟化方案介绍 本文档介绍了新华三CAS服务器虚拟化方案的详细信息,该方案旨在提供一站式的虚拟化解决方案,满足客户对高可靠性、安全性和灵活性的需求。 CAS产品发展历程 新华三CAS产品经过了...
3. 服务验证:当用户尝试访问一个受CAS保护的应用时,应用会将用户携带的TGT发送到CAS服务器进行验证,如果验证成功,CAS服务器会返回一个Service Ticket,允许用户访问该应用。 4. Service Ticket:这是CAS服务器...
在这个场景下,"实现其他系统和CAS互相认证互信"意味着配置CAS服务器以接受并验证来自外部系统的凭证,同时允许CAS的认证结果被外部系统信任。 首先,理解CAS的工作原理至关重要。当用户尝试访问受CAS保护的应用时...
在本“cas单点登录测试配置”项目中,我们将探讨如何在Tomcat服务器上设置CAS服务器和客户端。Tomcat是一个流行的开源Java Servlet容器,常用于部署Web应用程序。 1. **CAS服务器配置**: - 首先,你需要下载并...
3. **测试CAS服务器配置** - 使用不同类型的客户端(如Outlook、移动设备等)进行连接测试,确保配置正确无误。 通过上述步骤,不仅能够成功安装Exchange Server 2010,还能对其CAS服务器进行有效的配置,确保...
#### 二、CAS服务器安装与配置 ##### 2.1 安装CAS服务端 1. **下载CAS服务端**:首先从官方网址http://www.cas.org/下载最新的CAS服务端压缩包。 2. **部署WAR包**:将下载的WAR包复制到Tomcat的webapps目录下,并...
#### 修改CAS服务器端登录认证方式为数据库认证 1. **添加JDBC依赖**:为了使CAS Server支持数据库认证,首先需要添加相应的JDBC驱动依赖到POM文件中。例如: ```xml <groupId>mysql <artifactId>mysql-...
**CAS服务器部署** CAS(Central Authentication Service)是Java开发的一款开源单点登录(Single Sign-On,简称SSO)系统,广泛应用于多应用系统的统一身份验证。CAS服务器的部署是实现跨域、跨平台的身份验证服务...
以下是详细的CAS服务器端搭建步骤: 1. **获取CAS服务器软件** 访问CAS的官方网站(https://apereo.github.io)或GitHub仓库(https://github.com/apereo/cas/releases),下载最新稳定版,如5.1.x系列。 2. **...
在本项目中,我们关注的是CAS服务端的文件下载部分,这意味着我们将探讨如何设置和配置CAS服务器,以便用户可以通过它安全地下载文件。 首先,CAS服务端的构建使用了Maven,这是一个广泛使用的Java项目管理和集成...
4. CAS服务器验证凭证,如果验证成功,将生成一个服务票据(Service Ticket)并返回给用户。 5. 用户将服务票据发送回最初请求的应用服务器。 6. 应用服务器向CAS服务器验证服务票据,如果验证通过,用户被允许访问...
1. **安装和配置CAS服务器**:首先,下载并安装Apache Tomcat,这是一个流行的Java应用服务器,通常用于部署CAS服务器。然后,将CAS的war文件(如cas-server-webapp-x.x.x.war)放入Tomcat的webapps目录下,启动...
二、配置CAS服务器 在CAS服务器的配置文件(如`cas.properties`或`application.yml`,取决于你的CAS版本)中,找到`cas.server.loginUrl`或`server.servlet.context-path/login`配置项,将其修改为你自定义登录页面...
6. **用户访问应用系统B:** 当用户尝试访问第二个应用系统B时,同样会被重定向到CAS服务器,因为Ticket还在有效期内,用户无需再次登录。 **实现步骤:** 1. **配置CAS服务器:** 安装并配置CAS服务器,如压缩包中...
在压缩包中的`cas_3.5.2`文件可能包含了CAS服务器的源码或者特定版本的CAS服务器软件。这个版本的CAS可能已经包含了基本的配置文件,如`cas.properties`,用于设置服务器的行为和属性,以及可能的定制化服务。 为了...
- TGT:用户首次登录时,CAS服务器生成的会话票据,存储在用户的浏览器中,用于后续的单点登出(Single Sign-Out, SSO)和二次认证。 2. CAS工作原理: - 用户尝试访问受保护的服务。 - 服务将用户重定向到CAS...