在前面的示例中,使用的用户名和密码都是自己捏造出来的,而在实际的应用系统中,都需要从应用数据库中读取用户名和密码,下面就进行自定义CAS服务器的数据源的实验。
准备数据库
在mysql数据库test中新建表user
CREATE TABLE `user` ( `username` varchar(46) NOT NULL, `password` varchar(46) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
为该表增加两条数据(密码使用MD5加密):
insert into user(username,password) values('dylan',md5('dylan')); insert into user(username,password) values('admin',md5('admin'));
cas服务器配置
打开cas-server的WEB-INF/deployerConfigContext.xml文件,找到其中的authenticationManager的authenticationHandlers属性配置。默认的配置是这样的:
<list> <!-- ... --> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false" /> <!-- ... --> <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> </list>
可以看到这里配置了一个SimpleTestUsernamePasswordAuthenticationHandler,这个用户名密码的认证器在认证用户时,只要用户名和密码保持一致,就认为是有效的用户,这也是为什么在前面的测试中,只要输入的用户名和密码一致就能登录的原因。在实际的生产环境中,应该将该认证器取消掉。如换成如下的认证器:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> </property> <property name="sql" value="select password from user where username=? " /> <property name="passwordEncoder"> <bean class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg value="MD5" /> </bean> </property> </bean>
该认证器可以从数据表user中查询用户密码,并对密码进行MD5加密校验,这个认证器位于cas-server-support-jdbc包中,需要在项目中增加相应的jar包。如果使用的是maven配置,配置POM如下:
<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-jdbc</artifactId> <version>${project.version}</version> </dependency>
这里用到了mysql的JDBC驱动,需要将相应的jar包加入cas服务器的lib目录。
在配置文件中可以看到,这里的认证器配置的是一个list,默认情况下,只要有一个认证器通过认证,就认为是合法的用户,建议选择合适的认证器放在最前面。
测试
重新启动cas-server,进入登录页面,分别尝试使用四组用户进行测试:admin/admin,dylan/dylan,test/test,dylan/123456进行测试,结果前两组登录通过,后两组登录失败,验证成功。
参考资料:
http://wenku.baidu.com/view/f0b268d084254b35eefd34b8.html
http://www.blogjava.net/tufanshu/archive/2011/01/21/343290.html
http://www.kafeitu.me/sso/2010/11/05/sso-cas-full-course.html
http://zxs19861202.iteye.com/blog/855856
http://www.cnblogs.com/hellowood/archive/2010/08/05/1793364.html
相关推荐
总的来说,自定义CAS的加密和登录验证涉及了系统的安全性、可扩展性和灵活性。通过对加密算法的调整和自定义登录验证处理器的编写,我们可以更好地适应组织的特定安全策略和业务需求。为了实施这些改动,开发者需要...
标题中的“自定义客户端登录CAS服务器-iframe实现”是指在客户端应用中集成中央认证服务(Central Authentication Service,简称CAS)的登录功能,采用iframe技术来完成。CAS是一种开放源码的单点登录(Single Sign-...
这篇名为"CAS单点登录学习笔记五之CAS服务器数据源"的博客文章,很可能是作者对CAS服务器配置数据源部分的深入解析。数据源是应用程序连接和操作数据库的关键组件,对于CAS服务器来说,它用于存储和管理用户的认证...
数据源是存储和管理应用程序所需数据的连接池,这里是指用于存储CAS服务器元数据和认证信息的MySQL数据库。配置正确的数据源对于CAS的稳定运行至关重要。 要将MySQL设置为CAS Server的数据源,我们首先要确保已安装...
【标题】"Yale CAS服务器端深度定制"主要涉及到的是CAS(Central Authentication Service)系统,这是一个基于Java开发的开源身份验证框架,由耶鲁大学开发并广泛应用于各个机构的单点登录(Single Sign-On,SSO)...
[置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...
3. **配置灵活性**: 支持通过配置文件或编程方式设置CAS服务器URL、服务URL等参数。 4. **多语言支持**: 提供多种语言界面,便于国际化。 5. **错误处理**: 客户端可以捕获并处理与服务器交互过程中的各种异常,如...
首先,CAS客户端(cas-client)是CAS服务器与应用系统间交互的核心组件,负责处理认证请求、生成和验证服务票证(Service Ticket)。在标准的CAS客户端实现中,它通常会使用内存或数据库来存储和管理相关信息。然而...
2. **重定向到CAS服务器**:应用系统发现用户未通过身份验证,会将用户重定向到CAS服务器,并传递一个服务URL,表明用户试图访问的资源。 3. **CAS登录页面**:用户在CAS服务器上输入用户名和密码进行登录。 4. **...
在源码中,你需要查看是如何自定义Realm来与数据库或其他数据源交互,获取用户信息和角色权限的。 3. CAS+Shiro集成 将CAS的认证结果与Shiro的授权结合,通常在CAS验证成功后,会将用户的认证信息(如用户名、票证...
1. **配置Spring**:创建Spring配置文件(如`applicationContext.xml`),声明必要的bean,包括数据源、事务管理器、Spring MVC的相关配置等。 2. **配置Spring MVC**:创建Spring MVC配置文件(如`servlet-context...
"overlay"在这里指的是自定义CAS服务器的构建过程,允许开发者根据项目需求调整和覆盖默认配置。"cas-overlay-template-6.1"是这个覆盖模板,包含了启动和配置CAS服务器所需的基本结构和文件。 在部署CAS 6.1X ...
5. **部署CAS服务器**:将修改后的配置文件打包到CAS服务器应用中,并在Tomcat、Jetty或其他应用服务器上部署。确保服务器环境满足CAS的系统需求。 6. **客户端配置**:在每个需要实现单点登录的应用中,配置CAS...
在"cas-server-4.0.0.rar"这个压缩包中,包含了CAS服务器的源代码和一个预编译的.war文件,这使得用户可以直接将其部署到Tomcat应用服务器上,从而快速搭建一个SSO系统。 1. CAS服务器核心概念: - 单点登录:用户...
"cas-server-3.4.2.1-release" 是一个特定版本的 CAS(Central Authentication Service)服务器软件包。CAS 是一个开源的身份验证框架,主要用于实现单一登录(Single Sign-On, SSO)服务,广泛应用于教育、研究和...
5. **可扩展性**:CAS服务器支持自定义认证和授权策略,可以集成各种身份验证源,如LDAP、Active Directory、数据库等,满足不同环境的需求。 6. **安全性**:CAS设计时考虑了安全因素,如使用HTTPS进行通信,防止...
3. 用户在CAS服务器上输入凭证,如果验证成功,CAS服务器会生成一个服务票(Service Ticket)。 4. 用户携带这个服务票返回到原始应用。 5. 应用将服务票发送到CAS服务器进行验证。 6. 如果验证通过,应用允许用户...
- 数据源配置:定义数据源 bean,连接到数据库,可以使用`org.springframework.jdbc.datasource.DriverManagerDataSource`或JNDI数据源。 - SessionFactory配置:配置`LocalSessionFactoryBean`,指定Hibernate...
1. **服务请求**:当用户尝试访问受CAS保护的服务(如一个网站或应用程序)时,服务会重定向用户到CAS服务器进行身份验证。 2. **CAS登录页面**:用户被引导至CAS的登录页面,需要输入用户名和密码。如果这是用户的...
它内置了Tomcat服务器,并自动配置了许多常用组件,如数据源、缓存、安全等,极大地提高了开发效率。 CAS则是一种开放源码的单点登录(Single Sign-On, SSO)协议,它允许用户通过单一登录凭证访问多个应用,而无需...